Example #1
0
        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();
        }
Example #2
0
        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);
        }
Example #3
0
 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();
         }
     }
 }
Example #4
0
        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();
        }
Example #5
0
 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);
     }
 }
Example #6
0
 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;
     }
 }
Example #7
0
 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);
     }
 }
Example #8
0
 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);
     }
 }
Example #9
0
        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();
        }
Example #10
0
        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);
            }
        }