// таймер private void MainTimer_Tick(object sender, EventArgs e) { // если текущее время >= времени события DateTime DT_Now = DateTime.Now; if (DT_Now >= NextSignaltime) { // остановить таймер MainTimer.Stop(); // получить структуру события ReadWriteFile RWF = new ReadWriteFile(WorkDir + "\\" + EventListFile, vers); EventStruct ES = RWF.GetEvent(NextEventIndex); SignalText = ES.Caption; SignalType = ES.IsEarly; EventDay = ES.Date; NeedSignalize = true; // сигализировать //Signalize(ES.Caption, ES.IsEarly, ES.Date); needBell = true; Signalize(); // изменить статус события ES.Informed = true; RWF.EditEvent(NextEventIndex, ES); // перезапустить таймер ReloadTimer(); } }
// ============= удалить событие клик private void toolStripMenuItem11_Click(object sender, EventArgs e) { if (CotextMenuControl != null) { Type tp = CotextMenuControl.GetType(); if (tp == typeof(Label)) { //Label lbl = cm.Parent as Label; Label lbl = CotextMenuControl as Label; // определить чего нажали int ind = FindIndexCurentLabel(lbl); if (ind >= 0) { if (MessageBox.Show("Удалить все события этого дня?", "Удалить", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { ReadWriteFile RWF = new ReadWriteFile(WorkDir + "\\" + EventListFile, vers); RWF.DeleteAllEventFromDay(FirstDay.AddDays(ind)); RefreshMonth(); ReloadTimer(); } } } } }
// экспорт.клик private void btnExp_Click(object sender, EventArgs e) { // Экспорт // индексы выбранных событий List <int> ChkLst = ListOfChekedEvents(); int KolVo = ChkLst.Count; // соответствие с оригинальными List <int> IndLst = new List <int>(); foreach (int i in ChkLst) { IndLst.Add(OriginalIndex[i]); } ReadWriteFile RWF = new ReadWriteFile(FileName, vers); if (RWF.ExportEvents(IndLst) == true) { //MessageBox.Show("Экспорт успешно завершен.", "Экспорт", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("Экспортировано " + KolVo.ToString() + " события.", "Экспорт", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } }
// иморт.клик private void btnImp_Click(object sender, EventArgs e) { ReadWriteFile RWF = new ReadWriteFile(FileName, vers); int KolVo = 0; // перебераем все панели for (int i = 0; i < EvPnlList.Count; i++) { // если событие отмечено if (EvPnlList[i].chb.Checked == true) { RWF.AddEvent(EventList[i]); // добавляем KolVo++; } } MessageBox.Show("Добавлено " + KolVo.ToString() + " события.", "Экспорт", MessageBoxButtons.OK, MessageBoxIcon.Information); // переопределить таймер RestartTimer(); this.Close(); }
// удалить.клик private void btnDelete_Click(object sender, EventArgs e) { List <int> LI = ListOfChekedEvents(); if (LI.Count > 0) { LI.Sort(); LI.Reverse(); ReadWriteFile RWF = new ReadWriteFile(FileName, vers); for (int i = 0; i < LI.Count; i++) { RWF.DeleteEvent(OriginalIndex[LI[i]]); } // обновить форму RefreshForm(); // переопределить таймер RestartTimer(); } }
// определить время следующего сигнала private bool DetectNextSignal() { ReadWriteFile RWF = new ReadWriteFile(WorkDir + "\\" + EventListFile, vers); // индекс ближайшего события int indx = RWF.NextEvent(); if (indx >= 0) { NextEventIndex = indx; EventStruct ES = RWF.GetEvent(indx); NextSignaltime = ES.BeforeInform; //label10.Text = ES.BeforeInform.ToShortDateString() + " " + ES.BeforeInform.ToShortTimeString() + "\r\n" + ES.Caption; IconText = NextSignaltime.ToShortDateString() + " " + NextSignaltime.ToShortTimeString() + "\r\n" + ES.Caption; if (IconText.Length > 63) { IconText = IconText.Substring(0, 63); } notifyIcon1.Text = IconText; return(true); } return(false); }
/// <summary> /// Изменить /// </summary> /// <param name="fName"></param> /// <param name="vr"></param> /// <param name="indx">индекс изменяемого события</param> public EditAddEvent(string fName, byte[] vr, int indx, MainForm fr) { InitializeComponent(); FileName = fName; Array.Copy(vr, vers, 4); IndexOfEvent = indx; ReadWriteFile RWF = new ReadWriteFile(FileName, vers); //EventStruct ES = RWF.GetEvent(75); EventStruct ES = RWF.GetEvent(indx); DT = ES.Date; Caption = ES.Caption; Event = !ES.IsEarly; signal = ES.NeedInform; TimeSpan ts = DT.Date - ES.BeforeInform.Date; BeforeDay = ts.Days; ts = ES.BeforeInform.TimeOfDay; time = new DateTime(ts.Ticks); mfr = fr; }
// =============== присвоить коллекции правильные даты private void RefreshMonth() { CalcFirstDay(); // высчитать первый день //ReadWriteFile RWF = new ReadWriteFile(WorkDir, vers); ReadWriteFile RWF = new ReadWriteFile(WorkDir + "\\" + EventListFile, vers); // получить список дат с событиями EventsList = RWF.GetAllDateWithEvents(FirstDay); // получить список дат с годовщинами EarlyList = RWF.GetAllDateWithEarlys(FirstDay); DateTime dt; int d; for (int i = 0; i < 42; i++) { dt = FirstDay.AddDays(i); d = dt.Day; LabelList[i].Text = d.ToString(); if (i < 6) // первые пн-сб { if (d > 6) { LabelList[i].ForeColor = Color.Gray; } else { LabelList[i].ForeColor = Color.Black; } } else if (i > 27) { if (d < 15) { LabelList[i].ForeColor = Color.Gray; } else { LabelList[i].ForeColor = Color.Black; } } // есть ли событие bool ev = IsEventPresent(dt); bool er = IsEarlyPresent(dt); if (ev == true && er == true) { // оба LabelList[i].Image = Rsc.event_end_early_img; } else if (ev == true && er == false) { // событие LabelList[i].Image = Rsc.event_img; } else if (ev == false && er == true) { // годовщина LabelList[i].Image = Rsc.early_img; } else { // ничего LabelList[i].Image = null; } } // отметить сегодняшнюю дату // раскрасить предыдущий if (TudeyLabelIndex >= 0) { LabelList[TudeyLabelIndex].Image = null; } // если в отбражаемом месяце есть сегодня GetTudeyLabelIndex(); if (TudeyLabelIndex >= 0) { LabelList[TudeyLabelIndex].Image = Rsc.redRect; } }
// загрузка формы private void ShowEvents_Load(object sender, EventArgs e) { // список событий EventList = new List <EventStruct>(); // список оригинальных индексов OriginalIndex = new List <int>(); // заполнить списки if (obj != ShowEventsObjective.toImport) { ReadWriteFile RWF = new ReadWriteFile(FileName, vers); if (ShowOneDay == true) // если один день { RWF.FillEventslist(EventList, OriginalIndex, Date); } else // если нужны все события { RWF.FillEventslist(EventList); for (int i = 0; i < EventList.Count; i++) { OriginalIndex.Add(i); } } } else // для импорта { ReadWriteFile RWF = new ReadWriteFile(ImpFlName, vers); RWF.FillEventslist(EventList); for (int i = 0; i < EventList.Count; i++) { OriginalIndex.Add(i); } } // подогнать размеры ChangeFormWidth(); if (EventList.Count > 0) { // добавить панели EvPnlList = new List <EvPanell>(); for (int i = 0; i < EventList.Count; i++) { // изменить форму и остальные элменты OtherElements(i); // создать i-ю панель CreateEventPanel(i); } // поместить форму в сердину экрана this.Location = new Point((Screen.PrimaryScreen.Bounds.Width - this.Width) / 2, (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2); } else { OtherElements(0); lblUnFind.Visible = true; btnDelete.Enabled = false; btnEdit.Enabled = false; } if (ShowOneDay == false) { lblDate.Left = 25; lblType.Left += 37; lblEventCapt.Left += 27; lblSignal.Left += 27; } }
private void btnOK_Click(object sender, EventArgs e) { DT = dateTimePicker1.Value; if (comboBox1.SelectedIndex == 0) { Event = true; } else { Event = false; } Caption = textBox1.Text; if (checkBox1.Checked) { signal = true; BeforeDay = Convert.ToInt32(numericUpDown1.Value); /* * if (ChekTime() == false) * { * MessageBox.Show("Время задано не верно!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); * maskedTextBox1.Focus(); * return; * } */ } else { signal = false; } // проверить уникальность события // -- нахэр, добавляйте скока влезет // сформировать структуру ES.Date = DT; ES.CapLength = (byte)Caption.Length; ES.Caption = Caption; ES.NeedInform = signal; if (signal == true) { /* * DateTime d1 = DT.Date; * * // минус дней * DateTime d2 = d1.AddDays(-Convert.ToDouble(BeforeDay)); * // плюс часы * double hour = Convert.ToDouble(maskedTextBox1.Text.Substring(0,2)); * d1 = d2.AddHours(hour); * // минуты * double minute = Convert.ToDouble(maskedTextBox1.Text.Substring(3, 2)); * d2 = d1.AddMinutes(minute); * * ES.BeforeInform = d2; */ DateTime d1 = DT.Date.AddDays(-Convert.ToDouble(BeforeDay)); ES.BeforeInform = new DateTime(d1.Year, d1.Month, d1.Day, dateTimePicker2.Value.Hour, dateTimePicker2.Value.Minute, 0); ES.Informed = false; } else { ES.BeforeInform = DT; ES.Informed = true; } ES.IsEarly = !Event; // произвести изменения ReadWriteFile RWF = new ReadWriteFile(FileName, vers); if (IndexOfEvent >= 0) // изменить { RWF.EditEvent(IndexOfEvent, ES); } else // добавить { RWF.AddEvent(ES); } // переопределить таймер RestartTimer(); this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); }