private void mnuEditClearLog_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } DialogResult Ask = MessageBox.Show("Очистить протокол?", "Очистка протокола", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Ask == DialogResult.No) { return; } cTask tmptsk = new cTask(cConfig.dsConfig, "Tasks", RecID); tmptsk.ClearLog(); tmptsk.ToDataSet(cConfig.dsConfig, "Tasks"); cConfig.SaveConfig(); Worker.ClearTaskLog(RecID); }
private void mnuEditClearLogAll_Click(object sender, EventArgs e) { //проверка, не заблокировано ли что-нибудь if (LockedRecIDs.Count > 0) { CommonFunctions.InfoMessage("Невозможно очистить протоколы.", "Выполняется задание"); return; } DialogResult Ask = MessageBox.Show("Очистить все протоколы?", "Очистка протоколов", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Ask == DialogResult.No) { return; } if (cConfig.dsConfig.Tables["Tasks"].Rows.Count == 0) { return; } for (int i = 0; i < cConfig.dsConfig.Tables["Tasks"].Rows.Count; i++) { cConfig.dsConfig.Tables["Tasks"].Rows[i]["Log"] = string.Empty; int RecID = (int)cConfig.dsConfig.Tables["Tasks"].Rows[i]["ID"]; Worker.ClearTaskLog(RecID); } cConfig.SaveConfig(); }
private void mnuEditDelete_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } DataRow dr = cConfig.dsConfig.Tables["Tasks"].Rows.Find(RecID); DialogResult Ans = MessageBox.Show("Окончательно удалить задачу " + dr["Name"].ToString() + "?\r\nОтменить будет невозможно!", "Удаление задачи", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (Ans == DialogResult.No) { return; } //определение, удаляется ли последняя строка в гриде bool LastRow = false; int gridy = grdMain.CurrentCellAddress.Y; int gridx = grdMain.CurrentCellAddress.X; if (gridy == (grdMain.Rows.Count - 1)) { LastRow = true; } //удаление задачи cConfig.dsConfig.Tables["Tasks"].Rows.Remove(dr); //выгружаем из списка запущенных, если есть WorkerErrorLevel wol = Worker.RemoveTask(RecID, false); showworkererror(wol, "Задача удалена"); if (!cConfig.SaveConfig()) { CommonFunctions.ErrMessage(cConfig.ConfigErrMessage); } FindRows = null; if (LastRow) { if (grdMain.Rows.Count > 0) { grdMain.Rows[grdMain.Rows.Count - 1].Cells[gridx].Selected = true; } } }
private void mnuEditEdit_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } //Подготовка данных для редактирования int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; cTask Task = null; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } try { Task = new cTask(cConfig.dsConfig, "Tasks", RecID); } catch (Exception ex) { CommonFunctions.ErrMessage(ex.Message); statlblMessages.ForeColor = Color.Red; statlblMessages.Text = "ОШИБКА: " + ex.Message; return; } //форма редактирования frmAddTask fAddTask = new frmAddTask(); fAddTask.fMain = this; fAddTask.Task = Task; fAddTask.bEdit = true; fAddTask.ShowDialog(); OnLockRecord = null; OnUnlockRecord = null; if (fAddTask.bSuccess) { FindRows = null; //обнуление поиска //отредактированное задание должно быть в очереди на выполнение if (Worker.RunningInCurrentPeriod(RecID)) { Worker.RemoveTask(RecID, false); //удаляем WorkerErrorLevel wol = Worker.AddTask(RecID); //перезапускаем showworkererror(wol, "Задача сохранена и запущена на выполнение."); } } }
private void mnuEditActivate_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } DataRow dr = cConfig.dsConfig.Tables["Tasks"].Rows.Find(RecID); bool Active = (bool)dr["Active"]; bool stopped = false; grdMain_SelectionChanged(null, null); //есть ли задача в списке на выполнение if (Worker.IsTaskExist(RecID)) { //есть, значит активна, надо остановить и удалить из списка WorkerErrorLevel wol = Worker.RemoveTask(RecID, false); showworkererror(wol, "Задача остановлена"); if (wol != WorkerErrorLevel.OK) { return; } Active = false; stopped = true; } else //в списке нет { //меняем активность на противоположную Active = !Active; } //сохранение в БД dr["Active"] = Active; bool scfg = cConfig.SaveConfig(); if (!scfg) { CommonFunctions.ErrMessage(cConfig.ConfigErrMessage); return; } if (Active) //если была активирована { if (Worker.RunningInCurrentPeriod(RecID)) //должна ли выполняться { //надо добавить в список и запустить WorkerErrorLevel wol = Worker.AddTask(RecID); showworkererror(wol, "Задача активирована и запущена"); } else { statlblMessages.ForeColor = Color.Black; statlblMessages.Text = "Задача активирована."; } } else { if (stopped) { statlblMessages.ForeColor = Color.Black; statlblMessages.Text = "Задача остановлена и деактивирована."; } else { statlblMessages.ForeColor = Color.Black; statlblMessages.Text = "Задача деактивирована."; } } }
void cTaskWorker_onSendMessage(object sender, bool NoAddTime) { cTask tsk = (cTask)sender; switch (tsk.TaskSoundType) { case SoundType.Internal: { SoundPlayer sp = new SoundPlayer(Properties.Resources.alarm); sp.Load(); sp.Play(); }; break; case SoundType.User: { try { SoundPlayer sp = new SoundPlayer(tsk.SoundPath); sp.Load(); sp.Play(); } catch { SystemSounds.Hand.Play(); } }; break; } //показываем всплывающую подсказку if ((WorkerNotification == NotificationType.Baloon) || (WorkerNotification == NotificationType.Both)) { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { CommonFunctions.globalNI.ShowBalloonTip(5000, tsk.TaskName, tsk.MessageText + " ", System.Windows.Forms.ToolTipIcon.Info); }); } //показываем окно с оповещением if ((WorkerNotification == NotificationType.Window) || (WorkerNotification == NotificationType.Both)) { if (tsk.Overdue) { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { CommonFunctions.InfoMessage(tsk.MessageText, tsk.TaskName + ": " + tsk.LastRun); }); return; } if (MessageForms[tsk.ID] == null) //формы сообщения нет { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { MessageForms[tsk.ID] = new frmMessage(); MessageForms[tsk.ID].Task = tsk; MessageForms[tsk.ID].NoAddTime = NoAddTime; MessageForms[tsk.ID].TopMost = true; //поверх всех окон MessageForms[tsk.ID].Show(); }); } else { //форма для этой задачи есть, сообщение выслано повторно (Remind) //а пользователь не реагирует fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { MessageForms[tsk.ID].TopMost = true; //Форма поверх всех окон, в форме это отключается. MessageForms[tsk.ID].Task = tsk; MessageForms[tsk.ID].Show(); }); } } }