コード例 #1
0
ファイル: App.xaml.cs プロジェクト: AlCher2018/NoodleD
        // окно Ожидашки
        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);
        }