void subCancel_Click(object sender, EventArgs e) { string appName = getParent(sender).Text.Split(' ').First(); LLAppTimer timer = LLApplicationsManager.ApplicationTimers.Where(x => x.App.Name == appName).First(); LLApplicationsManager.ApplicationTimers.Remove(timer); timer.Pause(); //By pausing, the timer is disposed. Unless Resume() is called, this is effectively a "cancel" operation. contextMenu.MenuItems.Remove(getParent(sender)); }
private void updateContextMenuItem(LLAppTimer x) { try { //look for existing menu item MenuItem menuItem = null; foreach (MenuItem m in contextMenu.MenuItems) { if (m.Text.StartsWith(x.App.Name)) { menuItem = m; break; } } //get seconds remaining double seconds = x.GetSecondsRemaining(); //if the menu item already exists, just update it, otherwise add it if (menuItem != null) { //if there are no seconds remaining, remove it from the list, otherwise update the time. if (seconds < 0) { contextMenu.MenuItems.Remove(menuItem); } else { string txt = ""; txt = x.App.Name + " in " + TimeSpan.FromSeconds(seconds).ToString().Substring(3, 5); if (menuItem.Tag == "Paused") { txt += " (Paused)"; } menuItem.Text = txt; } } else { if (seconds > 0 && !x.Started) { MenuItem m = new MenuItem(x.App.Name + " in " + TimeSpan.FromSeconds(x.GetSecondsRemaining()).ToString().Substring(3, 5)); MenuItem subPause = new MenuItem("Pause/Resume"); MenuItem subExecute = new MenuItem("Execute"); MenuItem subCancel = new MenuItem("Cancel"); subPause.Click += new EventHandler(subPause_Click); subExecute.Click += new EventHandler(subExecute_Click); subCancel.Click += new EventHandler(subCancel_Click); m.MenuItems.Add(subPause); m.MenuItems.Add(subExecute); m.MenuItems.Add(subCancel); contextMenu.MenuItems.Add(m); m.Click += new EventHandler(m_Click); } } } catch (Exception ex) { Logger.LogError("There was an error creating the LaunchPad context menu. " + ex.ToString()); } }