use std::sync::Arc;
use tauri::AppHandle;
use zerolaunch_plugin_api::platform::PlatformServices;
use crate::app_enumerator::WindowsAppEnumerator;
use crate::app_launcher::WindowsAppLauncher;
use crate::autostart::WindowsAutoStartManager;
use crate::capabilities::windows_capabilities;
use crate::clipboard::WindowsClipboardManager;
use crate::focus_monitor::WindowsFocusMonitor;
use crate::hotkey::WindowsHotkeyManager;
use crate::icon::WindowsIconExtractor;
use crate::installation_monitor::WindowsInstallationMonitor;
use crate::lnk_resolver::WindowsLnkResolver;
use crate::parameter_providers::{
WindowsClipboardProvider, WindowsSelectionProvider, WindowsWindowHandleProvider,
};
use crate::path_resolver::WindowsPathResolver;
use crate::resource_loader::WindowsResourceLoader;
use crate::shell::WindowsShellExecutor;
use crate::theme::WindowsThemeProvider;
use crate::window::WindowsWindowManager;
use crate::window_positioner::WindowsWindowPositioner;
pub fn windows_platform_services(
app_handle: Arc<AppHandle>,
path_resolver: Arc<WindowsPathResolver>,
default_app_icon_path: String,
default_web_icon_path: String,
) -> PlatformServices {
PlatformServices {
capabilities: windows_capabilities(),
icon_extractor: Arc::new(WindowsIconExtractor::new(
default_app_icon_path,
default_web_icon_path,
)),
shell_executor: Arc::new(WindowsShellExecutor::new()),
window_manager: Arc::new(WindowsWindowManager::new()),
window_positioner: Arc::new(WindowsWindowPositioner::new()),
path_resolver,
app_enumerator: Arc::new(WindowsAppEnumerator::new()),
app_launcher: Arc::new(WindowsAppLauncher::new()),
lnk_resolver: Arc::new(WindowsLnkResolver::new()),
resource_loader: Arc::new(WindowsResourceLoader::new()),
clipboard_provider: Arc::new(WindowsClipboardProvider),
window_handle_provider: Arc::new(WindowsWindowHandleProvider),
selection_provider: Arc::new(WindowsSelectionProvider),
autostart_manager: Arc::new(WindowsAutoStartManager::new()),
hotkey_manager: Arc::new(WindowsHotkeyManager::new(app_handle.clone())),
installation_monitor: Arc::new(WindowsInstallationMonitor::new()),
focus_monitor: Arc::new(WindowsFocusMonitor::new(app_handle)),
clipboard_manager: Arc::new(WindowsClipboardManager::new()),
theme_provider: Arc::new(WindowsThemeProvider),
}
}