public ConfigurationApplicator( IConfigurationProvider configurationProvider, IApplicationPathsProvider pathsProvider, INotifyIconManager notifyIconManager, ISyncthingManager syncthingManager, IAutostartProvider autostartProvider, IWatchedFolderMonitor watchedFolderMonitor, IUpdateManager updateManager, IConflictFileWatcher conflictFileWatcher, IAlertsManager alertsManager, IMeteredNetworkManager meteredNetworkManager, IPathTransformer pathTransformer) { this.configurationProvider = configurationProvider; this.configurationProvider.ConfigurationChanged += this.ConfigurationChanged; this.pathsProvider = pathsProvider; this.notifyIconManager = notifyIconManager; this.syncthingManager = syncthingManager; this.autostartProvider = autostartProvider; this.watchedFolderMonitor = watchedFolderMonitor; this.updateManager = updateManager; this.conflictFileWatcher = conflictFileWatcher; this.alertsManager = alertsManager; this.meteredNetworkManager = meteredNetworkManager; this.pathTransformer = pathTransformer; this.syncthingManager.Folders.FoldersChanged += this.FoldersChanged; this.updateManager.VersionIgnored += this.VersionIgnored; }
public ConfigurationApplicator( IConfigurationProvider configurationProvider, IApplicationPathsProvider pathsProvider, INotifyIconManager notifyIconManager, ISyncthingManager syncthingManager, IAutostartProvider autostartProvider, IWatchedFolderMonitor watchedFolderMonitor, IUpdateManager updateManager, IConflictFileWatcher conflictFileWatcher, IAlertsManager alertsManager, IMeteredNetworkManager meteredNetworkManager) { this.configurationProvider = configurationProvider; this.configurationProvider.ConfigurationChanged += this.ConfigurationChanged; this.pathsProvider = pathsProvider; this.notifyIconManager = notifyIconManager; this.syncthingManager = syncthingManager; this.autostartProvider = autostartProvider; this.watchedFolderMonitor = watchedFolderMonitor; this.updateManager = updateManager; this.conflictFileWatcher = conflictFileWatcher; this.alertsManager = alertsManager; this.meteredNetworkManager = meteredNetworkManager; this.syncthingManager.DataLoaded += this.OnDataLoaded; this.updateManager.VersionIgnored += this.VersionIgnored; }
public SettingsViewModel( IConfigurationProvider configurationProvider, IAutostartProvider autostartProvider, IModelValidator <SettingsViewModel> validator) : base(validator) { this.configurationProvider = configurationProvider; this.autostartProvider = autostartProvider; var configuration = this.configurationProvider.Load(); this.MinimizeToTray = configuration.MinimizeToTray; this.CloseToTray = configuration.CloseToTray; this.NotifyOfNewVersions = configuration.NotifyOfNewVersions; this.ObfuscateDeviceIDs = configuration.ObfuscateDeviceIDs; this.UseComputerCulture = configuration.UseComputerCulture; this.ShowTrayIconOnlyOnClose = configuration.ShowTrayIconOnlyOnClose; this.ShowSynchronizedBalloon = configuration.ShowSynchronizedBalloon; this.ShowDeviceConnectivityBalloons = configuration.ShowDeviceConnectivityBalloons; this.StartSyncThingAutomatically = configuration.StartSyncthingAutomatically; this.SyncthingRunLowPriority = configuration.SyncthingRunLowPriority; this.SyncThingAddress = configuration.SyncthingAddress; this.SyncThingApiKey = configuration.SyncthingApiKey; this.CanReadAutostart = this.autostartProvider.CanRead; this.CanWriteAutostart = this.autostartProvider.CanWrite; if (this.autostartProvider.CanRead) { var currentSetup = this.autostartProvider.GetCurrentSetup(); this.StartOnLogon = currentSetup.AutoStart; this.StartMinimized = currentSetup.StartMinimized; } this.WatchedFolders = new BindableCollection <WatchedFolder>(configuration.Folders.Select(x => new WatchedFolder() { Folder = x.ID, IsSelected = x.IsWatched })); this.SyncthingUseCustomHome = configuration.SyncthingUseCustomHome; this.SyncThingEnvironmentalVariables = EnvironmentalVariablesParser.Format(configuration.SyncthingEnvironmentalVariables); this.SyncthingDenyUpgrade = configuration.SyncthingDenyUpgrade; }
public ConfigurationApplicator( IConfigurationProvider configurationProvider, IApplicationPathsProvider pathsProvider, INotifyIconManager notifyIconManager, ISyncThingManager syncThingManager, IAutostartProvider autostartProvider, IWatchedFolderMonitor watchedFolderMonitor, IUpdateManager updateManager) { this.configurationProvider = configurationProvider; this.configurationProvider.ConfigurationChanged += (o, e) => this.ApplyNewConfiguration(e.NewConfiguration); this.pathsProvider = pathsProvider; this.notifyIconManager = notifyIconManager; this.syncThingManager = syncThingManager; this.autostartProvider = autostartProvider; this.watchedFolderMonitor = watchedFolderMonitor; this.updateManager = updateManager; this.syncThingManager.DataLoaded += (o, e) => this.LoadFolders(); this.updateManager.VersionIgnored += (o, e) => this.configurationProvider.AtomicLoadAndSave(config => config.LatestNotifiedVersion = e.IgnoredVersion); }
public SettingsViewModel( IConfigurationProvider configurationProvider, IAutostartProvider autostartProvider, IWindowManager windowManager, IProcessStartProvider processStartProvider, IAssemblyProvider assemblyProvider, IApplicationState applicationState, ISyncThingManager syncThingManager) { this.configurationProvider = configurationProvider; this.autostartProvider = autostartProvider; this.windowManager = windowManager; this.processStartProvider = processStartProvider; this.assemblyProvider = assemblyProvider; this.applicationState = applicationState; this.syncThingManager = syncThingManager; this.MinimizeToTray = this.CreateBasicSettingItem(x => x.MinimizeToTray); this.NotifyOfNewVersions = this.CreateBasicSettingItem(x => x.NotifyOfNewVersions); this.CloseToTray = this.CreateBasicSettingItem(x => x.CloseToTray); this.ObfuscateDeviceIDs = this.CreateBasicSettingItem(x => x.ObfuscateDeviceIDs); this.UseComputerCulture = this.CreateBasicSettingItem(x => x.UseComputerCulture); this.UseComputerCulture.RequiresSyncTrayzorRestart = true; this.DisableHardwareRendering = this.CreateBasicSettingItem(x => x.DisableHardwareRendering); this.DisableHardwareRendering.RequiresSyncTrayzorRestart = true; this.ShowTrayIconOnlyOnClose = this.CreateBasicSettingItem(x => x.ShowTrayIconOnlyOnClose); this.ShowSynchronizedBalloonEvenIfNothingDownloaded = this.CreateBasicSettingItem(x => x.ShowSynchronizedBalloonEvenIfNothingDownloaded); this.ShowDeviceConnectivityBalloons = this.CreateBasicSettingItem(x => x.ShowDeviceConnectivityBalloons); this.StartSyncThingAutomatically = this.CreateBasicSettingItem(x => x.StartSyncthingAutomatically); this.SyncthingPriorityLevel = this.CreateBasicSettingItem(x => x.SyncthingPriorityLevel); this.SyncthingPriorityLevel.RequiresSyncthingRestart = true; this.SyncthingUseDefaultHome = this.CreateBasicSettingItem(x => !x.SyncthingUseCustomHome, (x, v) => x.SyncthingUseCustomHome = !v); this.SyncthingUseDefaultHome.RequiresSyncthingRestart = true; this.SyncThingAddress = this.CreateBasicSettingItem(x => x.SyncthingAddress, new SyncThingAddressValidator()); this.SyncThingAddress.RequiresSyncthingRestart = true; this.SyncThingApiKey = this.CreateBasicSettingItem(x => x.SyncthingApiKey, new SyncThingApiKeyValidator()); this.SyncThingApiKey.RequiresSyncthingRestart = true; this.CanReadAutostart = this.autostartProvider.CanRead; this.CanWriteAutostart = this.autostartProvider.CanWrite; if (this.autostartProvider.CanRead) { var currentSetup = this.autostartProvider.GetCurrentSetup(); this.StartOnLogon = currentSetup.AutoStart; this.StartMinimized = currentSetup.StartMinimized; } this.SyncThingCommandLineFlags = this.CreateBasicSettingItem( x => String.Join(" ", x.SyncthingCommandLineFlags), (x, v) => { IEnumerable <KeyValuePair <string, string> > envVars; KeyValueStringParser.TryParse(v, out envVars, mustHaveValue: false); x.SyncthingCommandLineFlags = envVars.Select(item => KeyValueStringParser.FormatItem(item.Key, item.Value)).ToList(); }, new SyncThingCommandLineFlagsValidator()); this.SyncThingCommandLineFlags.RequiresSyncthingRestart = true; this.SyncThingEnvironmentalVariables = this.CreateBasicSettingItem( x => KeyValueStringParser.Format(x.SyncthingEnvironmentalVariables), (x, v) => { IEnumerable <KeyValuePair <string, string> > envVars; KeyValueStringParser.TryParse(v, out envVars); x.SyncthingEnvironmentalVariables = new EnvironmentalVariableCollection(envVars); }, new SyncThingEnvironmentalVariablesValidator()); this.SyncThingEnvironmentalVariables.RequiresSyncthingRestart = true; this.SyncthingDenyUpgrade = this.CreateBasicSettingItem(x => x.SyncthingDenyUpgrade); this.SyncthingDenyUpgrade.RequiresSyncthingRestart = true; var configuration = this.configurationProvider.Load(); foreach (var settingItem in this.settings) { settingItem.LoadValue(configuration); } this.FolderSettings = new BindableCollection <FolderSettings>(); if (syncThingManager.State == SyncThingState.Running) { this.FolderSettings.AddRange(configuration.Folders.OrderByDescending(x => x.ID).Select(x => new FolderSettings() { FolderName = x.ID, IsWatched = x.IsWatched, IsNotified = x.NotificationsEnabled, })); } foreach (var folderSetting in this.FolderSettings) { folderSetting.Bind(s => s.IsWatched, (o, e) => this.UpdateAreAllFoldersWatched()); folderSetting.Bind(s => s.IsNotified, (o, e) => this.UpdateAreAllFoldersNotified()); } this.PriorityLevels = new BindableCollection <LabelledValue <SyncThingPriorityLevel> >() { LabelledValue.Create(Resources.SettingsView_Syncthing_ProcessPriority_AboveNormal, SyncThingPriorityLevel.AboveNormal), LabelledValue.Create(Resources.SettingsView_Syncthing_ProcessPriority_Normal, SyncThingPriorityLevel.Normal), LabelledValue.Create(Resources.SettingsView_Syncthing_ProcessPriority_BelowNormal, SyncThingPriorityLevel.BelowNormal), LabelledValue.Create(Resources.SettingsView_Syncthing_ProcessPriority_Idle, SyncThingPriorityLevel.Idle), }; this.Bind(s => s.AreAllFoldersNotified, (o, e) => { if (this.updatingFolderSettings) { return; } this.updatingFolderSettings = true; foreach (var folderSetting in this.FolderSettings) { folderSetting.IsNotified = e.NewValue.GetValueOrDefault(false); } this.updatingFolderSettings = false; }); this.Bind(s => s.AreAllFoldersWatched, (o, e) => { if (this.updatingFolderSettings) { return; } this.updatingFolderSettings = true; foreach (var folderSetting in this.FolderSettings) { folderSetting.IsWatched = e.NewValue.GetValueOrDefault(false); } this.updatingFolderSettings = false; }); this.UpdateAreAllFoldersWatched(); this.UpdateAreAllFoldersNotified(); }
public SettingsViewModel( IConfigurationProvider configurationProvider, IAutostartProvider autostartProvider, IWindowManager windowManager, IProcessStartProvider processStartProvider, IAssemblyProvider assemblyProvider, IApplicationState applicationState, IApplicationPathsProvider applicationPathsProvider, ISyncthingManager syncthingManager, IMeteredNetworkManager meteredNetworkManager) { this.configurationProvider = configurationProvider; this.autostartProvider = autostartProvider; this.windowManager = windowManager; this.processStartProvider = processStartProvider; this.assemblyProvider = assemblyProvider; this.applicationState = applicationState; this.applicationPathsProvider = applicationPathsProvider; this.syncthingManager = syncthingManager; this.MinimizeToTray = this.CreateBasicSettingItem(x => x.MinimizeToTray); this.NotifyOfNewVersions = this.CreateBasicSettingItem(x => x.NotifyOfNewVersions); this.CloseToTray = this.CreateBasicSettingItem(x => x.CloseToTray); this.ObfuscateDeviceIDs = this.CreateBasicSettingItem(x => x.ObfuscateDeviceIDs); this.UseComputerCulture = this.CreateBasicSettingItem(x => x.UseComputerCulture); this.UseComputerCulture.RequiresSyncTrayzorRestart = true; this.DisableHardwareRendering = this.CreateBasicSettingItem(x => x.DisableHardwareRendering); this.DisableHardwareRendering.RequiresSyncTrayzorRestart = true; this.EnableConflictFileMonitoring = this.CreateBasicSettingItem(x => x.EnableConflictFileMonitoring); this.EnableFailedTransferAlerts = this.CreateBasicSettingItem(x => x.EnableFailedTransferAlerts); this.PauseDevicesOnMeteredNetworks = this.CreateBasicSettingItem(x => x.PauseDevicesOnMeteredNetworks); this.PauseDevicesOnMeteredNetworksSupported = meteredNetworkManager.IsSupportedByWindows; this.ShowTrayIconOnlyOnClose = this.CreateBasicSettingItem(x => x.ShowTrayIconOnlyOnClose); this.ShowSynchronizedBalloonEvenIfNothingDownloaded = this.CreateBasicSettingItem(x => x.ShowSynchronizedBalloonEvenIfNothingDownloaded); this.ShowDeviceConnectivityBalloons = this.CreateBasicSettingItem(x => x.ShowDeviceConnectivityBalloons); this.ShowDeviceOrFolderRejectedBalloons = this.CreateBasicSettingItem(x => x.ShowDeviceOrFolderRejectedBalloons); this.IconAnimationModes = new BindableCollection <LabelledValue <IconAnimationMode> >() { LabelledValue.Create(Resources.SettingsView_TrayIconAnimation_DataTransferring, Services.Config.IconAnimationMode.DataTransferring), LabelledValue.Create(Resources.SettingsView_TrayIconAnimation_Syncing, Services.Config.IconAnimationMode.Syncing), LabelledValue.Create(Resources.SettingsView_TrayIconAnimation_Disabled, Services.Config.IconAnimationMode.Disabled), }; this.IconAnimationMode = this.CreateBasicSettingItem(x => x.IconAnimationMode); this.StartSyncthingAutomatically = this.CreateBasicSettingItem(x => x.StartSyncthingAutomatically); this.SyncthingPriorityLevel = this.CreateBasicSettingItem(x => x.SyncthingPriorityLevel); this.SyncthingPriorityLevel.RequiresSyncthingRestart = true; this.SyncthingAddress = this.CreateBasicSettingItem(x => x.SyncthingAddress, new SyncthingAddressValidator()); this.SyncthingAddress.RequiresSyncthingRestart = true; this.CanReadAutostart = this.autostartProvider.CanRead; this.CanWriteAutostart = this.autostartProvider.CanWrite; if (this.autostartProvider.CanRead) { var currentSetup = this.autostartProvider.GetCurrentSetup(); this.StartOnLogon = currentSetup.AutoStart; this.StartMinimized = currentSetup.StartMinimized; } this.SyncthingCommandLineFlags = this.CreateBasicSettingItem( x => String.Join(" ", x.SyncthingCommandLineFlags), (x, v) => { KeyValueStringParser.TryParse(v, out var envVars, mustHaveValue: false); x.SyncthingCommandLineFlags = envVars.Select(item => KeyValueStringParser.FormatItem(item.Key, item.Value)).ToList(); }, new SyncthingCommandLineFlagsValidator());