private void UpdateApplicationStatus() { IList <Application> runningApplications = new List <Application>(); IList <Application> stoppedApplications = new List <Application>(); foreach (ListViewItem item in listViewApplications.Items) { int imageIndex; Application application = (Application)item.Tag; if (application.IsRunning) { runningApplications.Add(application); imageIndex = 0; } else { stoppedApplications.Add(application); imageIndex = 1; } if (item.ImageIndex != imageIndex) { item.ImageIndex = imageIndex; } } UpdateSystemTrayContextMenuSingles(runningApplications, stoppedApplications); UpdateSystemTrayContextMenuRecents(); }
public static Configuration LoadConfiguration() { Configuration config = new Configuration(); RegistryKey key = Registry.CurrentUser.OpenSubKey(APPLICATION_REGISTRY_KEY, false); if (key != null) { config.WindowVisible = bool.Parse((string)key.GetValue("Window Visible", "True")); config.StartWithWindows = bool.Parse((string)key.GetValue("Start With Windows", "True")); config.RecentUsages.Clear(); RegistryKey recentKey = key.OpenSubKey("Recent", false); if (recentKey != null) { RegistryKey recentUsageKey = recentKey.OpenSubKey("Recent 00", false); while (recentUsageKey != null) { string id = (string)recentUsageKey.GetValue("ID", null); int count = (int)recentUsageKey.GetValue("Count", 0); if (id != null) { config.AddRecentUsage(id, count); } recentUsageKey.Close(); recentUsageKey = recentKey.OpenSubKey("Recent " + config.RecentUsages.Count.ToString("00"), false); } recentKey.Close(); } config.Applications.Clear(); RegistryKey applicationsKey = key.OpenSubKey("Applications", false); if (applicationsKey != null) { RegistryKey applicationKey = applicationsKey.OpenSubKey("Application 00", false); while (applicationKey != null) { Guid id = new Guid((string)applicationKey.GetValue("ID", Guid.NewGuid().ToString())); string name = (string)applicationKey.GetValue("Name", "UNKNOWN"); string path = (string)applicationKey.GetValue("Path", string.Empty); string arguments = (string)applicationKey.GetValue("Arguments", string.Empty); string group = (string)applicationKey.GetValue("Group", string.Empty); Application application = new Application(id, name, path, arguments, (string.IsNullOrEmpty(group) ? null : group)); application.Sets.Clear(); string set = (string)applicationKey.GetValue("Set 00", string.Empty); while (!string.IsNullOrEmpty(set)) { application.Sets.Add(set); set = (string)applicationKey.GetValue("Set " + application.Sets.Count.ToString("00"), string.Empty); } config.Applications.Add(application); applicationKey.Close(); applicationKey = applicationsKey.OpenSubKey("Application " + config.Applications.Count.ToString("00"), false); } applicationsKey.Close(); } key.Close(); } return(config); }
private void EditApplication() { if (listViewApplications.SelectedItems.Count == 1) { Application application = (Application)listViewApplications.SelectedItems[0].Tag; AddApplicationForm addApplicationForm = new AddApplicationForm(_config.Groups, _config.Sets, application); if (addApplicationForm.ShowDialog(this) == DialogResult.OK && addApplicationForm.Application != null) { RegistryHandler.SaveConfiguration(_config); AddApplicationToList(addApplicationForm.Application); UpdateSelectedApplicationInfo(); } } }
private void SelectApplicationsBySet() { _selectingApplicationBySet = true; string selectedSet = (string)comboBoxSets.SelectedItem; foreach (ListViewItem item in listViewApplications.Items) { Application application = (Application)item.Tag; if (application.Sets != null) { item.Selected = application.Sets.Contains(selectedSet); } } _selectingApplicationBySet = false; listViewApplications.Focus(); }
private void listViewApplications_MouseUp(object sender, MouseEventArgs e) { try { if (e.Button == MouseButtons.Right && listViewApplications.SelectedItems.Count > 0) { Application application = (Application)listViewApplications.SelectedItems[0].Tag; toolStripMenuItemApplicationListStart.Enabled = (listViewApplications.SelectedItems.Count > 1 || !application.IsRunning); toolStripMenuItemApplicationListStop.Enabled = (listViewApplications.SelectedItems.Count > 1 || application.IsRunning); toolStripMenuItemApplicationListEdit.Enabled = (listViewApplications.SelectedItems.Count == 1); contextMenuStripApplicationList.Show(MousePosition); } } catch (Exception ex) { FormUtilities.ShowError(this, ex); } }
private void UpdateSelectedApplicationInfo() { if (listViewApplications.SelectedItems.Count == 1) { Application application = (Application)listViewApplications.SelectedItems[0].Tag; labelName.Text = application.Name; textBoxPath.Text = application.Path; textBoxArguments.Text = application.Arguments; labelGroup.Text = application.Group ?? string.Empty; labelSets.Text = StringUtilities.ListToString(application.Sets); } else { labelName.Text = string.Empty; textBoxPath.Text = string.Empty; textBoxArguments.Text = string.Empty; labelGroup.Text = string.Empty; labelSets.Text = string.Empty; } }
private void StopRecent_Click(object sender, EventArgs e) { try { ToolStripItem item = (ToolStripItem)sender; Application application = ApplicationControl.GetApplicationByID((string)item.Tag); if (application != null) { ApplicationControl.StopApplication(application); } else { ApplicationControl.StopApplicationsBySet((string)item.Tag); } } catch (Exception ex) { FormUtilities.ShowError(this, ex); } }
private void RemoveApplications() { if (listViewApplications.SelectedItems.Count > 0) { _discardEvents = true; foreach (ListViewItem item in listViewApplications.SelectedItems) { Application application = (Application)item.Tag; _config.Applications.Remove(application); _config.RecentUsages.Where(recent => (recent.ID == application.ID.ToString())) .ToList().ForEach(recent => _config.RecentUsages.Remove(recent)); listViewApplications.Items.Remove(item); } _config.RecentUsages.Where(recent => (ApplicationControl.GetApplicationByID(recent.ID) == null && !_config.Sets.Contains(recent.ID))) .ToList().ForEach(recent => _config.RecentUsages.Remove(recent)); RegistryHandler.SaveConfiguration(_config); _discardEvents = false; UpdateSetList(); UpdateSelectedApplicationInfo(); EnableControls(true); } }
private void AddApplicationToList(Application application) { ListViewItem item = listViewApplications.Items.Cast <ListViewItem>().FirstOrDefault(x => (x.Tag == application)); if (item == null) { item = listViewApplications.Items.Add(string.Empty); item.SubItems.Add(application.Group); item.SubItems.Add(application.Name); item.SubItems.Add(application.Path); item.SubItems.Add(application.Arguments); item.Tag = application; } else { item.SubItems[1].Text = application.Group; item.SubItems[2].Text = application.Name; item.SubItems[3].Text = application.Path; item.SubItems[4].Text = application.Arguments; } item.ImageIndex = (application.IsRunning ? 0 : 1); UpdateSetList(); }
private void UpdateSystemTrayContextMenuRecents() { // make sure top [max count] recent items are in correct order List <RecentUsage> recentUsages = _config.RecentUsages.Take(Configuration.MAX_VISIBLE_RECENT_USAGE_COUNT).OrderBy(recent => recent.Name).ToList(); foreach (RecentUsage recentUsage in recentUsages) { Application application = ApplicationControl.GetApplicationByID(recentUsage.ID); bool applicationIsRunning = (application != null ? application.IsRunning : false); Image image = imageList.Images[application != null ? (applicationIsRunning ? 0 : 1) : 2]; int menuIndex = toolStripMenuItemSystemTrayRecent.DropDownItems.Cast <ToolStripItem>().Select(item => item.Text).ToList().IndexOf(recentUsage.Name); int correctIndex = recentUsages.IndexOf(recentUsage); if (menuIndex == -1) { // recent item does not exist in context menu ToolStripMenuItem recentItem = new ToolStripMenuItem(recentUsage.Name, image); toolStripMenuItemSystemTrayRecent.DropDownItems.Insert(correctIndex, recentItem); if (application == null || !applicationIsRunning) { ToolStripItem recentStartItem = new ToolStripMenuItem("Start") { Tag = recentUsage.ID }; recentStartItem.Click += StartRecent_Click; recentItem.DropDownItems.Add(recentStartItem); } ToolStripItem recentRestartItem = new ToolStripMenuItem("Restart") { Tag = recentUsage.ID }; recentRestartItem.Click += RestartRecent_Click; recentItem.DropDownItems.Add(recentRestartItem); if (application == null || applicationIsRunning) { ToolStripItem recentStopItem = new ToolStripMenuItem("Stop") { Tag = recentUsage.ID }; recentStopItem.Click += StopRecent_Click; recentItem.DropDownItems.Add(recentStopItem); } } else { // recent item exist in context menu, verify position and status ToolStripMenuItem recentItem = (ToolStripMenuItem)toolStripMenuItemSystemTrayRecent.DropDownItems[menuIndex]; recentItem.Image = image; if (menuIndex != correctIndex) { toolStripMenuItemSystemTrayRecent.DropDownItems.RemoveAt(menuIndex); toolStripMenuItemSystemTrayRecent.DropDownItems.Insert(correctIndex, recentItem); } if (application != null) { ToolStripItem recentStartItem = recentItem.DropDownItems.Cast <ToolStripItem>().FirstOrDefault(item => (item.Text == "Start")); if (applicationIsRunning && recentStartItem != null) { recentStartItem.Click -= StartRecent_Click; recentItem.DropDownItems.Remove(recentStartItem); } else if (!applicationIsRunning && recentStartItem == null) { recentStartItem = new ToolStripMenuItem("Start") { Tag = recentUsage.ID }; recentStartItem.Click += StartRecent_Click; recentItem.DropDownItems.Insert(0, recentStartItem); } ToolStripItem recentStopItem = recentItem.DropDownItems.Cast <ToolStripItem>().FirstOrDefault(item => (item.Text == "Stop")); if (!applicationIsRunning && recentStopItem != null) { recentStopItem.Click -= StopRecent_Click; recentItem.DropDownItems.Remove(recentStopItem); } else if (applicationIsRunning && recentStopItem == null) { recentStopItem = new ToolStripMenuItem("Stop") { Tag = recentUsage.ID }; recentStopItem.Click += StopRecent_Click; recentItem.DropDownItems.Add(recentStopItem); } } } } // remove items exceeding [max count] for (int i = Configuration.MAX_VISIBLE_RECENT_USAGE_COUNT; i < toolStripMenuItemSystemTrayRecent.DropDownItems.Count; i++) { ToolStripMenuItem recentItem = (ToolStripMenuItem)toolStripMenuItemSystemTrayRecent.DropDownItems[Configuration.MAX_VISIBLE_RECENT_USAGE_COUNT]; ToolStripItem recentStartItem = recentItem.DropDownItems.Cast <ToolStripItem>().FirstOrDefault(item => (item.Text == "Start")); if (recentStartItem != null) { recentStartItem.Click -= StartRecent_Click; } ToolStripItem recentRestartItem = recentItem.DropDownItems.Cast <ToolStripItem>().FirstOrDefault(item => (item.Text == "Restart")); if (recentRestartItem != null) { recentRestartItem.Click -= RestartRecent_Click; } ToolStripItem recentStopItem = recentItem.DropDownItems.Cast <ToolStripItem>().FirstOrDefault(item => (item.Text == "Stop")); if (recentStopItem != null) { recentStopItem.Click -= StopRecent_Click; } recentItem.DropDownItems.Clear(); toolStripMenuItemSystemTrayRecent.DropDownItems.RemoveAt(Configuration.MAX_VISIBLE_RECENT_USAGE_COUNT); } }