public NotifyIconManager( IViewManager viewManager, NotifyIconViewModel viewModel, IApplicationState application, IApplicationWindowState applicationWindowState, ISyncThingManager syncThingManager) { this.viewManager = viewManager; this.viewModel = viewModel; this.application = application; this.applicationWindowState = applicationWindowState; this.syncThingManager = syncThingManager; this.taskbarIcon = (TaskbarIcon)this.application.FindResource("TaskbarIcon"); // Need to hold off until after the application is started, otherwise the ViewManager won't be set this.application.Startup += (o, e) => this.viewManager.BindViewToModel(this.taskbarIcon, this.viewModel); this.applicationWindowState.RootWindowActivated += this.RootViewModelActivated; this.applicationWindowState.RootWindowDeactivated += this.RootViewModelDeactivated; this.applicationWindowState.RootWindowClosed += this.RootViewModelClosed; this.viewModel.WindowOpenRequested += (o, e) => { this.applicationWindowState.EnsureInForeground(); }; this.viewModel.WindowCloseRequested += (o, e) => { // Always minimize, regardless of settings this.application.ShutdownMode = ShutdownMode.OnExplicitShutdown; this.applicationWindowState.CloseToTray(); }; this.viewModel.ExitRequested += (o, e) => this.application.Shutdown(); this.syncThingManager.TransferHistory.FolderSynchronizationFinished += this.FolderSynchronizationFinished; this.syncThingManager.DeviceConnected += (o, e) => { if (this.ShowDeviceConnectivityBalloons && DateTime.UtcNow - this.syncThingManager.StartedTime > syncedDeadTime) { this.taskbarIcon.HideBalloonTip(); this.taskbarIcon.ShowBalloonTip(Resources.TrayIcon_Balloon_DeviceConnected_Title, String.Format(Resources.TrayIcon_Balloon_DeviceConnected_Message, e.Device.Name), BalloonIcon.Info); } }; this.syncThingManager.DeviceDisconnected += (o, e) => { if (this.ShowDeviceConnectivityBalloons && DateTime.UtcNow - this.syncThingManager.StartedTime > syncedDeadTime) { this.taskbarIcon.HideBalloonTip(); this.taskbarIcon.ShowBalloonTip(Resources.TrayIcon_Balloon_DeviceDisconnected_Title, String.Format(Resources.TrayIcon_Balloon_DeviceDisconnected_Message, e.Device.Name), BalloonIcon.Info); } }; }
public NotifyIconManager( IViewManager viewManager, NotifyIconViewModel viewModel, IApplicationState application, IApplicationWindowState applicationWindowState, ISyncthingManager syncthingManager, IConnectedEventDebouncer connectedEventDebouncer) { this.viewManager = viewManager; this.viewModel = viewModel; this.application = application; this.applicationWindowState = applicationWindowState; this.syncthingManager = syncthingManager; this.connectedEventDebouncer = connectedEventDebouncer; this.taskbarIcon = (TaskbarIcon)this.application.FindResource("TaskbarIcon"); this.taskbarIcon.TrayBalloonTipClicked += (o, e) => { this.applicationWindowState.EnsureInForeground(); }; // Need to hold off until after the application is started, otherwise the ViewManager won't be set this.application.Startup += this.ApplicationStartup; this.applicationWindowState.RootWindowActivated += this.RootViewModelActivated; this.applicationWindowState.RootWindowDeactivated += this.RootViewModelDeactivated; this.applicationWindowState.RootWindowClosed += this.RootViewModelClosed; this.viewModel.WindowOpenRequested += (o, e) => { this.applicationWindowState.EnsureInForeground(); }; this.viewModel.WindowCloseRequested += (o, e) => { // Always minimize, regardless of settings this.application.ShutdownMode = ShutdownMode.OnExplicitShutdown; this.applicationWindowState.CloseToTray(); }; this.viewModel.ExitRequested += (o, e) => this.application.Shutdown(); this.syncthingManager.TransferHistory.FolderSynchronizationFinished += this.FolderSynchronizationFinished; this.syncthingManager.Devices.DeviceConnected += this.DeviceConnected; this.syncthingManager.Devices.DeviceDisconnected += this.DeviceDisconnected; this.syncthingManager.DeviceRejected += this.DeviceRejected; this.syncthingManager.FolderRejected += this.FolderRejected; this.connectedEventDebouncer.DeviceConnected += this.DebouncedDeviceConnected; }
public NotifyIconManager( IViewManager viewManager, NotifyIconViewModel viewModel, IApplicationState application, IApplicationWindowState applicationWindowState, ISyncthingManager syncthingManager) { this.viewManager = viewManager; this.viewModel = viewModel; this.application = application; this.applicationWindowState = applicationWindowState; this.syncthingManager = syncthingManager; this.taskbarIcon = (TaskbarIcon)this.application.FindResource("TaskbarIcon"); // Need to hold off until after the application is started, otherwise the ViewManager won't be set this.application.Startup += this.ApplicationStartup; this.applicationWindowState.RootWindowActivated += this.RootViewModelActivated; this.applicationWindowState.RootWindowDeactivated += this.RootViewModelDeactivated; this.applicationWindowState.RootWindowClosed += this.RootViewModelClosed; this.viewModel.WindowOpenRequested += (o, e) => { this.applicationWindowState.EnsureInForeground(); }; this.viewModel.WindowCloseRequested += (o, e) => { // Always minimize, regardless of settings this.application.ShutdownMode = ShutdownMode.OnExplicitShutdown; this.applicationWindowState.CloseToTray(); }; this.viewModel.ExitRequested += (o, e) => this.application.Shutdown(); this.syncthingManager.TransferHistory.FolderSynchronizationFinished += this.FolderSynchronizationFinished; this.syncthingManager.Devices.DeviceConnected += this.DeviceConnected; this.syncthingManager.Devices.DeviceDisconnected += this.DeviceDisconnected; }
public NotifyIconManager( IViewManager viewManager, NotifyIconViewModel viewModel, IApplicationState application, IApplicationWindowState applicationWindowState, ISyncThingManager syncThingManager) { this.viewManager = viewManager; this.viewModel = viewModel; this.application = application; this.applicationWindowState = applicationWindowState; this.syncThingManager = syncThingManager; this.taskbarIcon = (TaskbarIcon)this.application.FindResource("TaskbarIcon"); this.viewManager.BindViewToModel(this.taskbarIcon, this.viewModel); this.applicationWindowState.RootWindowActivated += this.RootViewModelActivated; this.applicationWindowState.RootWindowDeactivated += this.RootViewModelDeactivated; this.applicationWindowState.RootWindowClosed += this.RootViewModelClosed; this.viewModel.WindowOpenRequested += (o, e) => { this.applicationWindowState.EnsureInForeground(); }; this.viewModel.WindowCloseRequested += (o, e) => { // Always minimize, regardless of settings this.application.ShutdownMode = ShutdownMode.OnExplicitShutdown; this.applicationWindowState.CloseToTray(); }; this.viewModel.ExitRequested += (o, e) => this.application.Shutdown(); this.syncThingManager.FolderSyncStateChanged += (o, e) => { if (this.ShowSynchronizedBalloon && DateTime.UtcNow - this.syncThingManager.LastConnectivityEventTime > syncedDeadTime && DateTime.UtcNow - this.syncThingManager.StartedTime > syncedDeadTime && e.SyncState == FolderSyncState.Idle && e.PrevSyncState == FolderSyncState.Syncing) { Application.Current.Dispatcher.CheckAccess(); // Double-check this.taskbarIcon.ShowBalloonTip(Localizer.Translate("TrayIcon_Balloon_FinishedSyncing_Title"), Localizer.Translate("TrayIcon_Balloon_FinishedSyncing_Message", e.Folder.FolderId), BalloonIcon.Info); } }; this.syncThingManager.DeviceConnected += (o, e) => { if (this.ShowDeviceConnectivityBalloons && DateTime.UtcNow - this.syncThingManager.StartedTime > syncedDeadTime) { this.taskbarIcon.ShowBalloonTip(Localizer.Translate("TrayIcon_Balloon_DeviceConnected_Title"), Localizer.Translate("TrayIcon_Balloon_DeviceConnected_Message", e.Device.Name), BalloonIcon.Info); } }; this.syncThingManager.DeviceDisconnected += (o, e) => { if (this.ShowDeviceConnectivityBalloons && DateTime.UtcNow - this.syncThingManager.StartedTime > syncedDeadTime) { this.taskbarIcon.ShowBalloonTip(Localizer.Translate("TrayIcon_Balloon_DeviceDisconnected_Title"), Localizer.Translate("TrayIcon_Balloon_DeviceDisconnected_Message", e.Device.Name), BalloonIcon.Info); } }; }