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 CloseOptionsWindow(Add addTimerWindow, bool fromDatacontext = false) { var dataContext = Internal.ChildWindow.GetDatacontext <ChildWindows.Timers.Add>(addTimerWindow.DataContext); if (dataContext?.IsCompleted() == true && fromDatacontext) { if (!dataContext.IsEditing) { var timer = new Core.Database.Storage.Timers { CreatedAt = DateTime.Now, Name = dataContext.Name.Replace(" ", ""), Text = dataContext.Text, Interval = dataContext.Interval, NextExecution = DateTime.Now.AddMinutes(dataContext.Interval) }; _handler.AddTimerToDatabase(timer); TimersList.Add(timer); addTimerWindow.Close(); // if editing (using the same view for add and edit) } else { _handler.EditTimer( name: dataContext.Name, text: dataContext.Text, interval: dataContext.Interval, id: Convert.ToInt32(dataContext.DatabaseID)); // refresh timer in timers list TimersList = new ObservableCollection <Core.Database.Storage.Timers>(_handler.GetTimers()); } addTimerWindow.Close(); } }
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(); } }
private void RemoveSelectedTimer() { _handler.RemoveTimerFromDatabase(SelectedTimer); TimersList.Remove(SelectedTimer); SelectedTimer = null; }