private void SirenButton2_Click(object sender, EventArgs e) { int i = Form1.opts[Form1.optsName[31], 0]; if (i > 0) { Ask.SoundSiren(2, i); } }
private void analize1() { ParseAndTrimLog(); if (workInterval <= 0) { throw new Exception("RtdbTimeCalc.cs: fatal algorithm error workInterval <= 0"); } RelaxNeeded = 0; if (timeRecords.Count <= 1) { return; } ShiftAndTrim(timeRecords); long relax, work, toRelax; int relaxSimpleStatus; double relaxState; toRelax = checkToRelax(timeRecords, out relax, out work, out RelaxNeeded, out relaxSimpleStatus, out relaxState); notifyIcon1.Text = "Экран учёта отдыха (" + RelaxNeeded / minute + ": " + relax / minute + "/" + ((double)work / (double)hour).ToString("f1") + ")"; if (locked || currentStatus.work == TimeRecord.status.st.No) { return; } var NOW = DateTime.Now.Ticks; EndRelaxTime = NOW + toRelax; if (askIsVisible != 0 && askIsVisible + 20 * second < NOW) // окно видно, но игнорируется более 20 секунд { if (ask != null) { ask.Close(); ask.Dispose(); ask = null; askIsVisible = 0; blackVisible(); return; } else { Program.ToLogFile("Экран запроса на отдых должен быть активен, однако это не так [чёрный экран при превышении ожидания ответа пользователя]"); } } #if DEBUG if (Form1.locked && currentStatus.work != TimeRecord.status.st.No) { Program.toLogFile("Form1.locked && currentStatus.work != TimeRecord.status.st.No"); MessageBox.Show("В программе Relaxtime Black Display возникла ошибка: Form1.locked && currentStatus.work != TimeRecord.status.st.No; сообщите разработчику по e-mail, указанному в меню 'О программе'"); return; } #endif if (currentStatus.work == TimeRecord.status.st.No) { return; } // Если пора отдыхать if ( (askIsVisible == 0 || askIsVisible + continueInterval < NOW) && toRelax > 0 && nextDialogTime < NOW && (isFullScreen <= 0 || !opts[optsName[15], true]) ) // если окно видно продолжительное время или оно скрыто { if (ask != null) { ask.Close(); ask.Dispose(); ask = null; } if (noReaction || noRelaxTime) { return; } #if forLinux #else if (lastCheckedScreen != 0) // если активна экранная заставка, хотя это должно проверяться выше режимом работы { return; } #endif if (shortAskForm != null) { shortAskForm.Focus(); return; } tagLASTINPUTINFO p; int result; long dwTime; GetDelayTime(out p, out result, out dwTime, opts[optsName[25], true]); long k32 = opts[optsName[32], 0]; DbgLog.dbg.messageToLog("Ask", "dwTime " + dwTime + ", onlySiren = " + onlySiren + ", k32 = " + k32); if (!onlySiren && k32 > 1 && dwTime < 1000 * 2.5 * k32) { if (askCancelCount < 2 * k32) { askCancelCount++; return; } else { Ask.SoundSiren(1, 2); askCancelCount = 0; return; } } if (!onlySiren && (k32 == 1 && dwTime < 1000 * 7.5)) { if (askCancelCount < 2) { askCancelCount++; return; } } if (onlySiren || (k32 == 1 && askCancelCount > 1)) { ask = new Ask(this, relaxState); } else { ask = new Ask(this, relaxSimpleStatus); } askCancelCount = 0; askIsVisible = DateTime.Now.Ticks; ask.relaxTimeLabel.Text = "К отдыху " + toRelax / minute + " минут (" + relax / minute + "/" + ((double)work / (double)hour).ToString("f1") + ")"; ask.ShowOrSiren(); } }