// окно Ожидашки private static bool idleAction() { AppLib.WriteLogTraceMessage("Таймер ожидания: истек период бездействия..."); // условия, при которых таймер бездействия ставится на паузу if (AppLib.IsOpenWindow("MsgBoxExt", "idleWin")) { AppLib.WriteLogTraceMessage("Таймер ожидания: ожидашка уже открыта"); return(false); // само окно бездействия } // продолжаем, т.е. показываем окно бездействия, если открыты некоторые окна или есть блюда в корзине AppModel.OrderItem order = (AppModel.OrderItem)AppLib.GetAppGlobalValue("currentOrder"); bool isContinue = AppLib.IsOpenWindow("Cart") || AppLib.IsOpenWindow("DishPopup") || AppLib.IsOpenWindow("Promocode") || ((order.Dishes != null) && (order.Dishes.Count > 0)); if (isContinue == false) { AppLib.WriteLogTraceMessage("Таймер ожидания: не выполнены условия показа ожидашки"); return(false); } MsgBoxExt mBox = new MsgBoxExt() { Name = "idleWin", ShowActivated = true, BigButtons = true, IsShowTitle = false, IsMessageCentered = true, IsRoundCorner = true, MessageFontSize = (double)AppLib.GetAppGlobalValue("appFontSize1"), ButtonFontSize = (double)AppLib.GetAppGlobalValue((AppLib.IsAppVerticalLayout) ? "appFontSize2" : "appFontSize1"), MsgBoxButton = MessageBoxButton.YesNo, ButtonForeground = Brushes.White, ButtonBackground = (Brush)AppLib.GetAppGlobalValue("appBackgroundColor"), ButtonBackgroundOver = (Brush)AppLib.GetAppGlobalValue("appBackgroundColor"), }; mBox.CloseByButtonPress = true; var v = AppLib.GetAppGlobalValue("autoUIReset"); double dInterval = (v == null) ? 10000 : (int)v * 1000; // in msec mBox.SetAutoCloseTimer(dInterval, 500, (sender, e) => { double remainSec = Math.Round(e.RemainMilliSeconds / 1000d, 1); //mBox.MessageText = AppLib.GetLangTextFromAppProp("areYouHereQuestion") + "\nДо закрытия окна осталось " + remainSec.ToString() + " sec"; mBox.btn2Text.Text = AppLib.GetLangTextFromAppProp("dialogBoxNoText") + " (" + remainSec.ToString("0.0") + ")"; }); mBox.MessageText = AppLib.GetLangTextFromAppProp("areYouHereQuestion"); // надписи на кнопках Да/Нет согласно выбранному языку string sYes = AppLib.GetLangTextFromAppProp("dialogBoxYesText"); string sNo = AppLib.GetLangTextFromAppProp("dialogBoxNoText"); mBox.ButtonsText = string.Format(";;{0};{1}", sYes, sNo); AppLib.WriteLogTraceMessage("Таймер ожидания: открытие окна ожидашки"); MessageBoxResult result = mBox.ShowDialog(); AppLib.WriteLogTraceMessage("Таймер ожидания: окно ожидашки закрыто"); // reset UI bool retVal = false; if (result == MessageBoxResult.Yes) { // чтобы не срабатывали обработчики нижележащих контролов AppLib.IsEventsEnable = false; retVal = true; } else { AppLib.ReStartApp(true, true, false); } return(retVal); }