public static AsyncObservableCollection <Process> UpdateProcesses( ProxifierSettings guiModelData, ProxifierSettings settings) { var systemProcessList = System.Diagnostics.Process.GetProcesses().OrderBy(x => x.ProcessName).ToList(); var systemProcessIds = systemProcessList.Select(p => p.Id).ToList(); var finishedProcesses = guiModelData.ProcessesList .Where(process => !systemProcessIds.Contains(process.Pid)) .ToList(); if (finishedProcesses.Any()) { SettingsManager.SaveSettings(guiModelData, settings); } foreach (var process in finishedProcesses) { guiModelData.ProcessesList.Remove(process); } var guiProcessIds = guiModelData.ProcessesList.Select(process => process.Pid).ToList(); var newSystemProcesses = systemProcessList.Where(process => !guiProcessIds.Contains(process.Id)).ToList(); foreach (var systemProcess in newSystemProcesses) { var path = systemProcess.GetPath(); if (string.IsNullOrWhiteSpace(path)) // TODO: improve { continue; } var newProcess = new Process { Name = systemProcess.ProcessName, Pid = systemProcess.Id, Path = path }; var settingsProcess = settings.ActiveProcessesList .FirstOrDefault(x => x.Path.Equals(path, StringComparison.InvariantCultureIgnoreCase)); if (settingsProcess != null) { newProcess.IsEnabled = settingsProcess.IsEnabled; newProcess.ServerInfo = new ServerInfo { ServerIP = settingsProcess.ServerInfo.ServerIP, ServerPort = settingsProcess.ServerInfo.ServerPort, ServerType = settingsProcess.ServerInfo.ServerType }; } guiModelData.ProcessesList.Add(newProcess); } return(guiModelData.ProcessesList); }
private void setupData() { GuiModelData = new ProxifierSettings { RoutedConnectionsList = new AsyncObservableCollection <RoutedConnection>(), ProcessesList = new AsyncObservableCollection <Process>() }; GuiModelData.PropertyChanged += guiModelDataPropertyChanged; GuiModelData.ProcessesListDataView = CollectionViewSource.GetDefaultView(GuiModelData.ProcessesList); }
public static ProxifierSettings LoadSettings(ProxifierSettings guiModelData) { var settings = SettingsSerializer.LoadSettings(SettingsPath); guiModelData.ProxifierPort = settings.ProxifierPort; guiModelData.DefaultServerInfo.ServerIP = settings.DefaultServerInfo.ServerIP; guiModelData.DefaultServerInfo.ServerPort = settings.DefaultServerInfo.ServerPort; guiModelData.DefaultServerInfo.ServerType = settings.DefaultServerInfo.ServerType; guiModelData.RunOnStartup = settings.RunOnStartup; guiModelData.AreAllChecked = settings.AreAllChecked; return(settings); }
public static void SaveSettings(ProxifierSettings guiModelData, ProxifierSettings settings) { if (guiModelData.RunOnStartup) { RunOnWindowsStartup.Do(); } else { RunOnWindowsStartup.Undo(); } addNewActiveItems(guiModelData, settings); SettingsSerializer.SaveSettings(guiModelData, SettingsPath); }
private static void addNewActiveItems(ProxifierSettings guiModelData, ProxifierSettings settings) { foreach (var process in guiModelData.ProcessesList) { if (!process.IsEnabled && string.IsNullOrWhiteSpace(process.ServerInfo.ServerIP) && process.ServerInfo.ServerPort == 0) { continue; } if (!settings.ActiveProcessesList.Contains(process)) { settings.ActiveProcessesList.Add(process); } if (!guiModelData.ActiveProcessesList.Contains(process)) { guiModelData.ActiveProcessesList.Add(process); } } }
public static void SaveSettings(ProxifierSettings data, string configFilePath) { File.WriteAllText(configFilePath, JsonConvert.SerializeObject(data, new JsonSerializerSettings { Formatting = Formatting.Indented })); }
private void loadSettings() { _settings = SettingsManager.LoadSettings(GuiModelData); }