private void ChildItem_CheckStateChanged(object sender, EventArgs e) { ToolStripItem menuItem = (ToolStripItem)sender; SingleTimerLib.SingleTimer _t = TimersList[menuItem.Text.SubStringByIndexOf("-[").Trim()]; Color _fc = Color.Black; Color _bc = Color.White; if (_t != null) { if (_t.TimerIsRunning) { _fc = Color.NavajoWhite; _bc = Color.LightSeaGreen; _t.StopTimer(); DebugPrint(string.Format("{0}: {1} is no longer running!", "ChildItem_CheckStateChanged", _t.Name)); } else { _t.StartTimer(); DebugPrint(string.Format("{0}: {1} is now running!", "ChildItem_CheckStateChanged", _t.Name)); } menuItem.BackColor = _t.TimerIsRunning ? Color.LightSeaGreen : Color.LightPink; menuItem.ForeColor = _t.TimerIsRunning ? Color.NavajoWhite : Color.MintCream; Rows[_t.RowIndex].Cells[1].Style.BackColor = menuItem.BackColor; Rows[_t.RowIndex].Cells[1].Style.ForeColor = menuItem.ForeColor; } else { menuItem.BackColor = SystemColors.InactiveCaption; menuItem.ForeColor = SystemColors.InactiveCaptionText; } }
private void QueryUserRenameTimer(int rowIndex) { string oldname = Rows[rowIndex].TimerCanonicalName(); string newname = GetTimerName("Specify as new name:", "Rename Timer", oldname); if (newname == "Cancel") { return; } if (newname == oldname) { return; } SingleTimerLib.SingleTimer _t = TimersList[oldname]; if (_t != null) { TimerName2RowIndexDictionary.Remove(_t.Name); TimersList.Remove(_t.Name); TimerName2RowIndexDictionary.Add(newname, _t.RowIndex); _t.ReNameTimer(newname); } else { Rows.RemoveAt(rowIndex); TimerName2RowIndexDictionary.Remove(oldname); TimersList.Remove(oldname); } }
private void TimersGridViewDeleteItem_Click(object sender, EventArgs e) { List <int> deleteables = new List <int>(); foreach (ListViewItem _i in timersDataGridView.SelectedRows) { deleteables.Add(_i.Index); } timersDataGridView.ClearSelection(); string message = "Confirm deletion of {0}"; string caption = Application.ProductName + "Delete {0}"; timersDataGridView.ClearSelection(); foreach (int index in deleteables) { Rows[index].Selected = true; string timerName = Rows[index].TimerCanonicalName(); if (AnswerYesNo(string.Format(message, timerName), string.Format(caption, timerName)) == DialogResult.Yes) { SingleTimerLib.SingleTimer _t = TimersList[timerName]; _t.PropertyChanged -= SingleTimer_PropertyChanged; _t.SingleTimerChanged -= SingleTimer_SingleTimerChanged; _t.TimerReset -= SingleTimer_OnTimerReset; TimersList.Remove(timerName); timersDataGridView.Rows.RemoveAt(index); } timersDataGridView.ClearSelection(); } }
private void SingleTimer_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { SingleTimerLib.SingleTimer _t = (SingleTimerLib.SingleTimer)sender; if (sender == null) { return; } switch (e.PropertyName) { case nameof(SingleTimerLib.SingleTimer.RunningElapsedTime): ThreadSafeUpdateTimerElapsedTime(_t); DebugPrint(string.Format("From {1}: [{2}] Elapsed {0}", _t.RunningElapsedTime, "SingleTimer_PropertyChanged", e.PropertyName)); break; case nameof(SingleTimerLib.SingleTimer.RowIndex): break; case nameof(SingleTimerLib.SingleTimer.Name): DebugPrint(string.Format("{0} is a new name!", _t.Name)); Debug.Assert(TimerName2RowIndexDictionary.ContainsKey(_t.CanonicalName)); TimersList.Add(_t.CanonicalName, _t); ThreadSafeUpdateTimerNamee(_t); break; case nameof(SingleTimerLib.SingleTimer.TimerIsRunning): string message1 = "{0}: {1} is running! [{2}]"; string message2 = "{0}: {1} is stopped! [{2}]"; DebugPrint(string.Format(_t.TimerIsRunning ? message1 : message2, "SingleTimer_PropertyChanged", _t.Name, e.PropertyName)); break; default: break; } }
private void DoClose() { _isClosing = true; Properties.Settings.Default.Save(); List <string> listOfKeys = new List <string>(); foreach (string _k in TimersList.Keys) { listOfKeys.Add(_k); } foreach (string name in listOfKeys) { SingleTimerLib.SingleTimer _t = TimersList[name]; _t.PropertyChanged -= SingleTimer_PropertyChanged; _t.SingleTimerChanged -= SingleTimer_SingleTimerChanged; _t.TimerReset -= SingleTimer_OnTimerReset; _t.StopTimer(); TimersList.Remove(_t.CanonicalName); TimerName2RowIndexDictionary.Remove(_t.CanonicalName); DebugPrint(string.Format("Timer {0} is being is about to be disposed!", _t.Name)); _t.Dispose(); } WriteDataToXml(); listOfKeys.Clear(); listOfKeys = null; Hide(); jobTimersIcon.Visible = false; FormClosing -= JobTimerForm_FormClosing; Close(); Application.Exit(); }
private void QueryUserResetTimer(ToolStripMenuItem childItem, string shortName, int rowIndex) { if (MessageBox.Show(this, string.Format("Reset Timer '{0}'", shortName), shortName, MessageBoxButtons.YesNo) == DialogResult.Yes) { SingleTimerLib.SingleTimer _t = TimersList[shortName]; _t.ResetTimer(); ThreadSafeUpdateTimerElapsedTime(new SingleTimerLib.SingleTimerLibEventArgs(_t.RunningElapsedTime, _t.Name, _t.RowIndex, 0)); childItem.BackColor = _t.TimerIsRunning ? Color.LightSeaGreen : Color.LightPink; childItem.ForeColor = _t.TimerIsRunning ? Color.NavajoWhite : Color.MintCream; } }
private void SetupChildItem(SingleTimerLib.SingleTimer _t, ToolStripMenuItem childItem) { childItem.CheckOnClick = true; childItem.Checked = _t.TimerIsRunning; childItem.Image = new Bitmap(_imageStream); childItem.MouseEnter += ChildItem_MouseEnter; childItem.MouseDown += ChildItem_MouseDown; childItem.MouseLeave += ChildItem_MouseLeave; childItem.CheckStateChanged += ChildItem_CheckStateChanged; childItem.BackColor = _t.TimerIsRunning ? Color.LightSeaGreen : Color.LightPink; childItem.ForeColor = _t.TimerIsRunning ? Color.NavajoWhite : Color.MintCream; }
private void NewTimerToolStripMenuItem1_Click(object sender, EventArgs e) { SingleTimerLib.SingleTimer _t = StartNewTimer; if (_t != null) { if (AnswerYesNo(string.Format("Run timer '{0}'?", _t.Name), _t.Name) == DialogResult.Yes) { _t.StartTimer(); } } else { MessageBox.Show("Adding new Timer failed.\nDid you cancel or attempt to add a duplicate name?"); } }
private void QueryUserResetTimer(int rowIndex) { string name = Rows[rowIndex].TimerCanonicalName(); if (MessageBox.Show(this, string.Format("Reset Timer '{0}'", name), name, MessageBoxButtons.YesNo) == DialogResult.Yes) { SingleTimerLib.SingleTimer _t = TimersList[name]; if (_t != null) { _t.ResetTimer(); } else { ThreadSafeUpdateGridViewRowElapsedTimerValue(rowIndex, "00:00:00"); } } }
private void SetupSavedTimers() { Application.DoEvents(); timersDataGridView.Update(); for (int idx = 0; idx < Timers.Rows.Count; ++idx) { DataRow _r = Timers.Rows[idx]; if (!TimerName2RowIndexDictionary.ContainsKey(_r[0].ToString())) { TimerName2RowIndexDictionary.Add(_r[0].ToString(), idx); } SingleTimerLib.SingleTimer _t = TimersList.AddTimer(_r[0].ToString(), new SingleTimerLib.SingleTimer(idx, _r[0].ToString(), _r[1].ToString())); _t.PropertyChanged += SingleTimer_PropertyChanged; _t.SingleTimerChanged += SingleTimer_SingleTimerChanged; _t.TimerReset += SingleTimer_OnTimerReset; } }
private void ActiveTimersMenu_DropDownOpening(object sender, EventArgs e) { foreach (ToolStripMenuItem item in activeTimersMenu.DropDownItems) { string name = item.Text.SubStringByIndexOf("-["); SingleTimerLib.SingleTimer _t = TimersList[name]; if (_t != null) { item.BackColor = _t.TimerIsRunning ? Color.LightSeaGreen : Color.LightPink; item.ForeColor = _t.TimerIsRunning ? Color.NavajoWhite : Color.MintCream; } else { item.BackColor = Color.LightPink; item.ForeColor = Color.MintCream; } } }
private void TreadSafeDeleteDataGridViewRows() { if (timersDataGridView.InvokeRequired) { timersDataGridView.Invoke(new Action(TreadSafeDeleteDataGridViewRows)); return; } foreach (DataGridViewRow _dr in timersDataGridView.SelectedRows) { string name = timersDataGridView.CurrentRow.TimerCanonicalName(); SingleTimerLib.SingleTimer _t = TimersList[name]; _t.SingleTimerChanged -= SingleTimer_SingleTimerChanged; _t.PropertyChanged -= SingleTimer_PropertyChanged; _t.TimerReset -= SingleTimer_OnTimerReset; _t.StopTimer(); Debug.Assert(_t.CanonicalName == Timers.Rows[_t.RowIndex].TimerCanonicalName()); Timers.Rows.RemoveAt(_t.RowIndex); Timers.AcceptChanges(); ThreadSafeUpdateDataGridView(); TimerName2RowIndexDictionary.Remove(name); TimersList.Remove(name); _t.Dispose(); } }