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(); }
void DestroyRequestAlarmWindow() { if (alarm != null) { alarm.Close(); if (!alarm.IsDisposed && !alarm.Disposing) { alarm.Dispose(); } alarm = null; } }