示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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;
                }
            }
        }
示例#4
0
        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, "Задача сохранена и запущена на выполнение.");
                }
            }
        }
示例#5
0
        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      = "Задача деактивирована.";
                }
            }
        }
示例#6
0
        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();
                    });
                }
            }
        }