예제 #1
0
        void ShowRequestAlarm(bool forced = false)
        {
            updateIndex++;

            if (!forced && updateIndex < 5)
            {
                return;
            }
            else
            {
                updateIndex = 0;
            }

            List <Request> alarmRequests            = new List <Request>();
            int            notSleepingRequestsCount = 0;

            foreach (KeyValuePair <int, Request> r in requests)
            {
                if (!r.Value.isPending)
                {
                    continue;
                }

                // max 24 hour
                if (!r.Value.IsActive(60 * 60 * 24))
                {
                    continue;
                }

                if (!r.Value.isSleeping)
                {
                    notSleepingRequestsCount++;
                }

                alarmRequests.Add(r.Value);
            }

            if (notSleepingRequestsCount > 0)
            {
                if (alarm == null)
                {
                    alarm = new RequestsAlarm();
                    alarm.Show();
                    Rectangle workArea = Screen.GetWorkingArea(alarm);
                    alarm.Location           = new Point(workArea.X + workArea.Width - alarm.Width, workArea.Y + workArea.Height - alarm.Height);
                    alarm.buttonClose.Click += alarmCloseClicked;
                }

                bool requests_changed = alarm.UpdateData(alarmRequests.ToArray());
                if (requests_changed && !alarm.Visible)
                {
                    alarm.Show();
                }
            }

            requests.ValidateChanges();
        }
예제 #2
0
 void DestroyRequestAlarmWindow()
 {
     if (alarm != null)
     {
         alarm.Close();
         if (!alarm.IsDisposed && !alarm.Disposing)
         {
             alarm.Dispose();
         }
         alarm = null;
     }
 }