Example #1
0
        // таймер
        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();
            }
        }
Example #2
0
        /// <summary>
        /// возвращает событие с указанным номером
        /// </summary>
        /// <param name="indx">номер события</param>
        /// <returns>null - если такого индекса нет</returns>
        public EventStruct GetEvent(int indx)
        {
            EventStruct ES = new EventStruct();

            try
            {
                ES = EventsList[indx];
            }
            catch
            {
                ES.Date         = DateTime.Today;
                ES.Caption      = "Событие не найдено!!!";
                ES.BeforeInform = DateTime.Today;
                ES.CapLength    = (byte)ES.Caption.Length;
                ES.Informed     = false;
                ES.NeedInform   = false;
                ES.IsEarly      = false;
            }
            return(ES);
        }
Example #3
0
        // определить время следующего сигнала
        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);
        }
Example #4
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;
        }
Example #5
0
 /// <summary>
 /// изменить событие
 /// </summary>
 /// <param name="indx"></param>
 /// <param name="ES"></param>
 public void EditEvent(int indx, EventStruct ES)
 {
     EventsList[indx] = ES;
     WriteFile();
 }
Example #6
0
 // добавить событие
 public void AddEvent(EventStruct ES)
 {
     EventsList.Add(ES);
     WriteFile();
 }
Example #7
0
        // ========== PRIVATE =========

        // прочитать файл
        private void ReadFile()
        {
            //string fn = WorkDirectory + "\\eventlist.dat";
            //if (File.Exists(fn) == false)
            if (File.Exists(fileName) == false)
            {
                return;
            }

            FileStream FS;

            try
            {
                FS = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            }
            catch
            {
                return;
            }

            // тип

            // версия

            // кол-во
            FS.Seek(8, SeekOrigin.Begin);

            byte[] buf = new byte[4];
            FS.Read(buf, 0, 4);
            int         count = BitConverter.ToInt32(buf, 0);
            long        offset;
            EventStruct ES;

            for (int i = 0; i < count; i++)
            {
                ES = new EventStruct();

                // смещение очердного события
                FS.Seek(12 + i * 4, SeekOrigin.Begin);
                FS.Read(buf, 0, 4);
                offset = Convert.ToInt64(BitConverter.ToInt32(buf, 0));

                // передвигаемся на начало i-й структуры
                FS.Seek(offset, SeekOrigin.Begin);

                // дата
                buf = new byte[8];
                FS.Read(buf, 0, 8);
                long tickcount = BitConverter.ToInt64(buf, 0);
                ES.Date = new DateTime(tickcount);

                // длинна заголовка
                byte B = (byte)FS.ReadByte();
                ES.CapLength = B;               // кол-во символов

                // заголовок
                buf = new byte[B * 2];          // т.к юникод 1 симв = 2 байт
                FS.Read(buf, 0, B * 2);;
                string S = Encoding.Unicode.GetString(buf);
                ES.Caption = S;

                // необходимость оповещения
                B             = (byte)FS.ReadByte();
                ES.NeedInform = Convert.ToBoolean(B);

                // время сигнала
                buf = new byte[8];
                FS.Read(buf, 0, 8);
                tickcount       = BitConverter.ToInt64(buf, 0);
                ES.BeforeInform = new DateTime(tickcount);

                // был ли сигнал
                B           = (byte)FS.ReadByte();
                ES.Informed = Convert.ToBoolean(B);

                // типо события
                B          = (byte)FS.ReadByte();
                ES.IsEarly = Convert.ToBoolean(B);

                // добавить событие в список
                EventsList.Add(ES);
            }

            FS.Close();
        }