コード例 #1
0
ファイル: MainForm.cs プロジェクト: KotlyarovSergey/Calendar
        // таймер
        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();
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: KotlyarovSergey/Calendar
        // ============= удалить событие клик
        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();
                        }
                    }
                }
            }
        }
コード例 #3
0
        // экспорт.клик
        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();
            }
        }
コード例 #4
0
        // иморт.клик
        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();
        }
コード例 #5
0
        // удалить.клик
        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();
            }
        }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: KotlyarovSergey/Calendar
        // определить время следующего сигнала
        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);
        }
コード例 #7
0
        /// <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;
        }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: KotlyarovSergey/Calendar
        // =============== присвоить коллекции правильные даты
        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;
            }
        }
コード例 #9
0
        // загрузка формы
        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;
            }
        }
コード例 #10
0
        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();
        }