Esempio n. 1
0
        public static void readAppDataFromDB()
        {
            MessageListener.Instance.ReceiveMessage("Получаю из MS SQL главное меню...");
            AppLib.WriteLogTraceMessage("Получаю из MS SQL главное меню...");

            MenuLib.MenuFolderHandler = (folderName) => MessageListener.Instance.ReceiveMessage($"Получаю блюда раздела '{folderName}'...");
            List <AppModel.MenuItem> newMenu = MenuLib.GetMenuMainFolders();

            if (newMenu == null)
            {
                AppLib.WriteLogErrorMessage("Fatal error: Ошибка создания Главного Меню. Меню не создано. Аварийное завершение приложения.");
                MessageBox.Show("Ошибка создания меню\nПрограмма будет закрыта.");
                throw new Exception("Ошибка создания меню");
            }

            // сохранить Главное Меню в свойствах приложения
            List <AppModel.MenuItem> mainMenu = (List <AppModel.MenuItem>)AppLib.GetAppGlobalValue("mainMenu");

            if (mainMenu != null)
            {
                mainMenu.Clear();
            }
            mainMenu = newMenu;

            AppLib.SetAppGlobalValue("mainMenu", mainMenu);

            AppLib.WriteLogTraceMessage("Получаю из MS SQL главное меню... - READY");
        }
Esempio n. 2
0
        // преобразование строки цветов (R,G,B) в SolidColorBrush
        private static void convertAppColor(string setName)
        {
            var buf = AppLib.GetAppGlobalValue(setName);

            if ((buf is string) == false)
            {
                return;
            }

            // если цвет задан строкой
            string sBuf = (string)buf;

            string[] sRGB = sBuf.Split(',');
            byte     r = 0, g = 0, b = 0;

            byte.TryParse(sRGB[0], out r);
            byte.TryParse(sRGB[1], out g);
            byte.TryParse(sRGB[2], out b);
            SolidColorBrush brush = new SolidColorBrush(new Color()
            {
                A = 255, R = r, G = g, B = b
            });

            AppLib.SetAppGlobalValue(setName, brush);
        }
Esempio n. 3
0
        public static void OnClosingApp()
        {
            UserActionsLog actionIdle = (UserActionsLog)AppLib.GetAppGlobalValue("actionIdle");

            if (actionIdle != null)
            {
                actionIdle.FinishLoggingUserActions();
            }
        }
Esempio n. 4
0
        public static string GetImageFullFileName(string fileName)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                return(null);
            }

            string cfgValue = (string)AppLib.GetAppGlobalValue("ImagesPath");

            return(AppEnvironment.GetFullFileName(cfgValue, fileName));
        }
Esempio n. 5
0
        public static string GetCostUIText(decimal cost)
        {
            string orderPriceText = cost.ToString("0");

            string currencyChar = AppLib.GetAppGlobalValue("CurrencyChar") as string;

            if (currencyChar != null)
            {
                orderPriceText += " " + currencyChar;
            }

            return(orderPriceText);
        }
Esempio n. 6
0
        }     // method

        #endregion

        // текст на элементе промокода
        public static void SetPromocodeTextStyle(TextBlock txtInput)
        {
            if (string.IsNullOrEmpty(App.PromocodeNumber))
            {
                txtInput.Text     = AppLib.GetLangTextFromAppProp("invitePromoText");
                txtInput.Style    = (Style)App.Current.Resources["promoInviteTextStyle"];
                txtInput.FontSize = (double)AppLib.GetAppGlobalValue("appFontSize5");
            }
            else
            {
                txtInput.Text     = App.PromocodeNumber;
                txtInput.Style    = (Style)App.Current.Resources["promoCodeTextStyle"];
                txtInput.FontSize = (double)AppLib.GetAppGlobalValue("appFontSize4");
            }
        }
Esempio n. 7
0
        // установка цвета ресурса приложения (Application.Resources) в цвет из свойств приложения (Application.Properties)
        private static void checkAppColor(string setName)
        {
            SolidColorBrush bRes = (SolidColorBrush)Application.Current.Resources[setName];

            if (bRes == null)
            {
                return;
            }

            SolidColorBrush bProp = (SolidColorBrush)AppLib.GetAppGlobalValue(setName);

            if (bRes.Color.Equals(bProp.Color) == false)        // если не равны
            {
                Application.Current.Resources[setName] = bProp; // то переопределить ресурсную кисть
            }
        }
Esempio n. 8
0
        public static void CreateChoiceBox()
        {
            MsgBoxExt chBox = new MsgBoxExt()
            {
                TitleFontSize   = (double)AppLib.GetAppGlobalValue("appFontSize6"),
                MessageFontSize = (double)AppLib.GetAppGlobalValue("appFontSize2"),
                ButtonFontSize  = (double)AppLib.GetAppGlobalValue("appFontSize4"),

                MsgBoxButton = MessageBoxButton.YesNo,

                ButtonForeground     = Brushes.White,
                ButtonBackground     = (Brush)AppLib.GetAppGlobalValue("appBackgroundColor"),
                ButtonBackgroundOver = (Brush)AppLib.GetAppGlobalValue("appBackgroundColor"),

                CloseByButtonPress = false
            };

            AppLib.ChoiceWindow = chBox;
        }
Esempio n. 9
0
        public static OrderItem CreateNewOrder()
        {
            string deviceName = (string)AppLib.GetAppGlobalValue("ssdID", string.Empty);
            int    rndFrom    = int.Parse(AppLib.GetAppSetting("RandomOrderNumFrom")); // случайный номер заказа: От
            int    rndTo      = int.Parse(AppLib.GetAppSetting("RandomOrderNumTo"));   // случайный номер заказа: До

            OrderItem order = new OrderItem()
            {
                DeviceID             = deviceName,
                RangeOrderNumberFrom = rndFrom, RangeOrderNumberTo = rndTo
            };

            DateTime?dtOrder;

            // создать случайный номер заказа и получить дату заказа из БД
            order.CreateOrderNumberForPrint(out dtOrder);  //
            order.OrderDate = dtOrder;
            App.OrderNumber = order.OrderNumberForPrint.ToString();

            // сохранить ссылку на новый заказ в глоб.перем.
            AppLib.SetAppGlobalValue("currentOrder", order);
            // и в Главном окне
            MainWindow mainWin = (App.Current.MainWindow as MainWindow);

            mainWin.CurrentOrder = order;

            string logMsg = "Создан новый заказ № '" + App.OrderNumber + "'";

            if (dtOrder != null)
            {
                logMsg += " от " + ((DateTime)dtOrder).ToString("yyyy-MM-dd HH:mm:ss");
            }
            AppLib.WriteAppAction(logMsg);

            return(order);
        }
Esempio n. 10
0
        private static void calculateAppSizes()
        {
            double dVar;

            double screenWidth, screenHeight;

            screenWidth  = (double)AppLib.GetAppGlobalValue("screenWidth");
            screenHeight = (double)AppLib.GetAppGlobalValue("screenHeight");
            AppLib.WriteLogTraceMessage(string.Format("Монитор - {0} x {1}", screenWidth, screenHeight));

            double dishesPanelWidth;

            // вертикальная разметка: панель меню сверху
            if (AppLib.IsAppVerticalLayout)
            {
                // панель меню
                AppLib.SetAppGlobalValue("categoriesPanelWidth", screenWidth);
                AppLib.SetAppGlobalValue("categoriesPanelHeight", (screenHeight / 6d * 1.0d));
                // панель блюд
                dishesPanelWidth = screenWidth;
                AppLib.SetAppGlobalValue("dishesPanelHeight", (screenHeight / 6d * 5.0d));
            }
            // горизонтальная разметка: панель меню справа
            else
            {
                // панель меню
                AppLib.SetAppGlobalValue("categoriesPanelWidth", (screenWidth / 6d * 1d));
                AppLib.SetAppGlobalValue("categoriesPanelHeight", screenHeight);
                // панель блюд
                dishesPanelWidth = (screenWidth / 6d * 5d);
                AppLib.SetAppGlobalValue("dishesPanelHeight", screenHeight);
            }
            AppLib.SetAppGlobalValue("dishesPanelWidth", dishesPanelWidth);

            // кол-во колонок панелей блюд
            saveAppSettingToProps("dishesColumnsCount");
            int dColCount = AppLib.GetAppGlobalValue("dishesColumnsCount", 0).ToString().ToInt();

            if (dColCount == 0)
            {
                dColCount = 3;
                AppLib.SetAppGlobalValue("dishesColumnsCount", dColCount);
            }
            // ***************
            // панель блюда
            double dishPanelWidth = 0.95d * dishesPanelWidth / dColCount;

            AppLib.SetAppGlobalValue("dishPanelWidth", dishPanelWidth);
            double contentPanelWidth = 0.9d * dishPanelWidth;

            AppLib.SetAppGlobalValue("dishImageWidth", contentPanelWidth);
            AppLib.SetAppGlobalValue("contentPanelWidth", contentPanelWidth);
            double dishPanelLeftMargin = (dishesPanelWidth - dColCount * dishPanelWidth) / 2;

            AppLib.SetAppGlobalValue("dishPanelLeftMargin", dishPanelLeftMargin);
            // высота строки заголовка
            double dishPanelHeaderRowHeight = (AppLib.IsAppVerticalLayout ? 0.25d : 0.17d) * dishPanelWidth;

            if (dColCount == 2)
            {
                dishPanelHeaderRowHeight *= 0.5;
            }
            AppLib.SetAppGlobalValue("dishPanelHeaderRowHeight", dishPanelHeaderRowHeight);
            // высота строки изображения
            double dishPanelImageRowHeight = 0.7d * dishPanelWidth;

            AppLib.SetAppGlobalValue("dishPanelImageRowHeight", dishPanelImageRowHeight);
            AppLib.SetAppGlobalValue("dishImageHeight", dishPanelImageRowHeight);
            // высота строки гарниров
            double dishPanelGarnishesRowHeight = ((AppLib.IsAppVerticalLayout)?0.3d:0.2d) * dishPanelWidth;

            AppLib.SetAppGlobalValue("dishPanelGarnishesRowHeight", dishPanelGarnishesRowHeight);
            // высота строки кнопки добавления
            double dishPanelAddButtonRowHeight = (AppLib.IsAppVerticalLayout?0.25d:0.15d) * dishPanelWidth;

            AppLib.SetAppGlobalValue("dishPanelAddButtonRowHeight", dishPanelAddButtonRowHeight);
            AppLib.SetAppGlobalValue("dishPanelAddButtonTextSize", 0.3d * dishPanelAddButtonRowHeight);
            // расстояния между строками панели блюда
            double dishPanelRowMargin1 = 0.01d * dishPanelWidth;
            double dishPanelRowMargin2 = (AppLib.IsAppVerticalLayout?0.03d:0.02d) * dishPanelWidth;

            AppLib.SetAppGlobalValue("dishPanelRowMargin1", dishPanelRowMargin1);
            AppLib.SetAppGlobalValue("dishPanelRowMargin2", dishPanelRowMargin2);
            // размер кнопки описания блюда
            AppLib.SetAppGlobalValue("dishPanelDescrButtonSize", 0.085d * dishPanelWidth);
            // высота панелей
            double dishPanelHeight            = Math.Floor(dishPanelHeaderRowHeight + dishPanelRowMargin1 + dishPanelImageRowHeight + dishPanelRowMargin2 + dishPanelAddButtonRowHeight);
            double dishPanelHeightWithGarnish = Math.Floor(dishPanelHeight + dishPanelGarnishesRowHeight + dishPanelRowMargin2);

            AppLib.SetAppGlobalValue("dishPanelHeight", dishPanelHeight);
            AppLib.SetAppGlobalValue("dishPanelHeightWithGarnish", dishPanelHeightWithGarnish);
            dVar = 1d;
            double contentPanelHeight            = Math.Floor(dVar * dishPanelHeight);
            double contentPanelHeightWithGarnish = Math.Floor(dVar * dishPanelHeightWithGarnish);

            AppLib.SetAppGlobalValue("contentPanelHeight", contentPanelHeight);
            AppLib.SetAppGlobalValue("contentPanelHeightWithGarnish", contentPanelHeightWithGarnish);
            // ***********

            // углы закругления
            dVar = 0.005 * screenWidth;
            AppLib.SetAppGlobalValue("cornerRadiusButton", dVar);
            AppLib.SetAppGlobalValue("cornerRadiusGarnish", 0.5 * dVar);
            AppLib.SetAppGlobalValue("cornerRadiusDishPanel", 2 * dVar);

            dVar = 0.5 * screenWidth;
            AppLib.SetAppGlobalValue("maxDialogWindowWidth", dVar);

            // РАЗМЕРЫ ШРИФТОВ
            double appFontSize0, appFontSize1, appFontSize2, appFontSize3, appFontSize4, appFontSize5, appFontSize6, appFontSize7;
            double minVal = Math.Min(screenWidth, screenHeight);

            appFontSize0 = 0.055 * minVal;
            appFontSize1 = 0.04 * minVal;
            appFontSize2 = 0.8 * appFontSize1;
            appFontSize3 = 0.8 * appFontSize2;
            appFontSize4 = 0.8 * appFontSize3;
            appFontSize5 = 0.8 * appFontSize4;
            appFontSize6 = 0.8 * appFontSize5;
            appFontSize7 = 0.8 * appFontSize6;
            AppLib.SetAppGlobalValue("appFontSize0", appFontSize0);
            AppLib.SetAppGlobalValue("appFontSize1", appFontSize1);
            AppLib.SetAppGlobalValue("appFontSize2", appFontSize2);
            AppLib.SetAppGlobalValue("appFontSize3", appFontSize3);
            AppLib.SetAppGlobalValue("appFontSize4", appFontSize4);
            AppLib.SetAppGlobalValue("appFontSize5", appFontSize5);
            AppLib.SetAppGlobalValue("appFontSize6", appFontSize6);
            AppLib.SetAppGlobalValue("appFontSize7", appFontSize7);
        }
Esempio n. 11
0
        private static void getSettingsFromConfigFile()
        {
            AppLib.WriteLogTraceMessage("Читаю настройки из файла *.config ...");

            // фоновое изображение
            saveAppSettingToProps("BackgroundImageHorizontal");
            saveAppSettingToProps("BackgroundImageVertical");
            saveAppSettingToProps("BackgroundImageBrightness", typeof(double), "0.2");

            // идентификатор устройства самообслуживания
            saveAppSettingToProps("ssdID", null);
            App.DeviceId = (string)AppLib.GetAppGlobalValue("ssdID");

            // путь к папке с изображениями
            saveAppSettingToProps("ImagesPath");

            // символ денежной единицы
            saveAppSettingToProps("CurrencyChar", null);

            // печать чека
            // ширина в пикселях (1"=96px => 1px = 0.26mm)
            saveAppSettingToProps("BillPageWidht", typeof(int), "300");
            // размер шрифта позиций заказа
            saveAppSettingToProps("BillLineFontSize", typeof(int), "12");
            // отступ слева строк позиций заказа, в пикселях (1px = 0.26mm)
            saveAppSettingToProps("BillLineLeftMargin", typeof(int), "0");
            // отступ сверху строки блюда, в пикселях (1px = 0.26mm)
            saveAppSettingToProps("BillLineTopMargin", typeof(int), "10");
            // отступ сверху строки ингредиента, в пикселях (1px = 0.26mm)
            saveAppSettingToProps("BillLineIngrTopMargin", typeof(int), "0");
            // отступ сверху строки цены, в пикселях (1px = 0.26mm)
            saveAppSettingToProps("BillLinePriceTopMargin", typeof(int), "0");

            // большие кнопки прокрутки панели блюд
            saveAppSettingToProps("dishesPanelScrollButtonSize", typeof(double));
            saveAppSettingToProps("dishesPanelScrollButtonHorizontalAlignment");

            // размер шрифта заголовка панели блюда
            saveAppSettingToProps("dishPanelHeaderFontSize", typeof(int));
            saveAppSettingToProps("dishPanelUnitCountFontSize", typeof(int));
            saveAppSettingToProps("dishPanelDescriptionFontSize", typeof(int));
            saveAppSettingToProps("dishPanelAddButtoFontSize", typeof(int));
            saveAppSettingToProps("dishPanelFontSize", typeof(int));
            saveAppSettingToProps("dishPanelGarnishBrightness");

            saveAppSettingToPropTypeBool("IsPrintBarCode");
            saveAppSettingToPropTypeBool("IsIncludeBarCodeLabel");
            saveAppSettingToPropTypeBool("isAnimatedSelectVoki");

//            saveAppSettingToPropTypeBool("IsWriteTraceMessages");

            // добавить некоторые постоянные тексты (заголовки, надписи на кнопках)
            parseAndSetAllLangString("dialogBoxYesText");
            parseAndSetAllLangString("dialogBoxNoText");
            parseAndSetAllLangString("wordIngredients");
            parseAndSetAllLangString("InputNumberWinTitle");
            parseAndSetAllLangString("cartDelIngrTitle");
            parseAndSetAllLangString("cartDelIngrQuestion");
            parseAndSetAllLangString("cartDelDishTitle");
            parseAndSetAllLangString("cartDelDishQuestion");
            // сообщения печати
            parseAndSetAllLangString("printOrderTitle");
            parseAndSetAllLangString("saveOrderErrorMessage");
            parseAndSetAllLangString("userErrMsgSuffix");
            parseAndSetAllLangString("afterPrintingErrMsg");
            parseAndSetAllLangString("printConfigError");
            parseAndSetAllLangString("printerStatusMsg");
            // TakeOrder window
            parseAndSetAllLangString("takeOrderOut");
            parseAndSetAllLangString("wordOr");
            parseAndSetAllLangString("takeOrderIn");

            // AreYouHere window
            saveAppSettingToProps("UserIdleTime", typeof(int));        // время бездействия из config-файла, в сек
            parseAndSetAllLangString("areYouHereTitle");
            parseAndSetAllLangString("areYouHereQuestion");
            // время в секундах, через которое произойдет возврат приложения в исходное состояние, если пользователь не нажал Да
            saveAppSettingToProps("autoUIReset", typeof(int));

            parseAndSetAllLangString("CurrencyName");
            parseAndSetAllLangString("withGarnish");

            AppLib.WriteLogTraceMessage("Читаю настройки из файла *.config ... READY");
        }
Esempio n. 12
0
        public static void Main()
        {
            App app = new App();

            if (Microsoft.Shell.SingleInstance <App> .InitializeAsFirstInstance(Unique))
            {
                string cfgValue;
                // установить текущий каталог на папку с приложением
                string setAppDirResult = setAppDirectory();

                // splash-screen
                Splasher.Splash = new Views.SplashScreen();
                Splasher.ShowSplash();

                MessageListener.Instance.ReceiveMessage("Инициализация журнала событий...");
                cfgValue = AppLib.InitAppLoggers();
                if (cfgValue != null)
                {
                    appExit(1, "Ошибка инициализации журнала приложения: " + cfgValue);
                }

                AppLib.WriteLogInfoMessage("************  Start NoodleD_Client (WPF) *************");
                // объем доступной памяти
                MessageListener.Instance.ReceiveMessage("Check free RAM value...");
                int freeMemory = AppLib.getAvailableRAM();
                AppLib.WriteLogInfoMessage("Available RAM: " + freeMemory.ToString() + " MB");
                if (freeMemory < 300)
                {
                    AppLib.WriteLogErrorMessage("Terminate program by low memory.");
                    AppLib.WriteLogInfoMessage("************  End application  ************");
                    appExit(2, "This computer has too low available memory.\r\nYou need at least 300 MB free memory.");
                }

                if (setAppDirResult.IsNull() == false)
                {
                    AppLib.WriteLogInfoMessage(setAppDirResult);
                }

                // таймаут запуска приложения
                cfgValue = CfgFileHelper.GetAppSetting("StartTimeout");
                int startTimeout = 0;
                if (cfgValue != null)
                {
                    startTimeout = cfgValue.ToInt();
                }
                if (startTimeout != 0)
                {
                    for (int i = startTimeout; i > 0; i--)
                    {
                        MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд.");
                        System.Threading.Thread.Sleep(1000);
                    }
                }

                #region информация о сборках
                MessageListener.Instance.ReceiveMessage("Получаю информацию о сборках и настройках...");
                ITSAssemblyInfo asmInfo = new ITSAssemblyInfo(AppEnvironment.GetAppAssemblyName());
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");
                asmInfo = new ITSAssemblyInfo("IntegraLib");
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");
                asmInfo = new ITSAssemblyInfo("IntegraWPFLib");
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");

                AppLib.WriteLogInfoMessage("Системное окружение: " + AppEnvironment.GetEnvironmentString());

                // номер устройства - не число!
                if (AppLib.GetAppSetting("ssdID").IsNumber() == false)
                {
                    AppLib.WriteLogErrorMessage("** Номер устройства - НЕ ЧИСЛО !! **");
                    AppLib.WriteLogInfoMessage("************  End application  ************");
                    appExit(4, "Номер устройства - НЕ ЧИСЛО!!");
                }

                // основная информация о софт-окружении
                AppLib.WriteLogTraceMessage(string.Format("Настройки: Id устройства-{0}, папка изображений-{1}, таймер бездействия-{2} sec, диапазон номеров чеков от {3} до {4}, принтер пречека-{5}",
                                                          AppLib.GetAppSetting("ssdID"), AppLib.GetAppSetting("ImagesPath"), AppLib.GetAppSetting("UserIdleTime"),
                                                          AppLib.GetAppSetting("RandomOrderNumFrom"), AppLib.GetAppSetting("RandomOrderNumTo"),
                                                          AppLib.GetAppSetting("PrinterName")));

                //******  НАСТРОЙКИ  ******
                // определенные в app.xaml
                app.InitializeComponent();
                // определенные в config-файле
                getSettingsFromConfigFile();
                // вычислить размеры, хранимые в свойствах приложения
                calculateAppSizes();
                // прочие глобальные настройки
                AppLib.SetAppGlobalValue("promoCode", null);
                //TestData.mainProc();
                #endregion

                // проверка соединения с бд
                MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных...");
                AppLib.WriteLogTraceMessage("Проверка доступа к базе данных...");
                AppLib.WriteLogTraceMessage(" - строка подключения: " + getDbConnectionString());
                string errorMessage;
                while (AppLib.CheckDBConnection(typeof(NoodleDContext), out errorMessage) == false)
                {
                    AppLib.WriteLogTraceMessage(" - result: " + errorMessage);
                    // задержка на 10 сек
                    for (int i = 10; i > 0; i--)
                    {
                        MessageListener.Instance.ReceiveMessage($"Проверка доступа к БД завершилась ошибкой!! (след.проверка через {i} сек)");
                        Thread.Sleep(1000);
                    }
                    MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных...");
                    Thread.Sleep(500);
                }
                AppLib.WriteLogTraceMessage(" - result: Ok");

                // настройки, определенные в ms sql
                readSettingFromDB();

                // данные, хранящиеся в БД
                readAppDataFromDB();

                // ожидашка
                int idleSec = (int)AppLib.GetAppGlobalValue("UserIdleTime", 0);
                if (idleSec > 0)
                {
                    IdleHandler                  = new UserActionIdle();
                    IdleHandler.IdleSeconds      = idleSec;
                    IdleHandler.IdleElapseEvent += IdleHandler_IdleElapseEvent;
                    IdleHandler.SetPause();
                }

                // главное окно приложения
                MessageListener.Instance.ReceiveMessage("Запуск основного окна...");
                Thread.Sleep(500);

                MainWindow mainWindow = new MainWindow();
                try
                {
                    app.Run(mainWindow);
                }
                catch (Exception ex)
                {
                    AppLib.WriteLogErrorMessage(ex.ToString());
                    MessageBox.Show(ex.Message, "Error Application", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }

                AppLib.WriteLogInfoMessage("************  End application  ************");

                // подчистить память
                if (IdleHandler != null)
                {
                    IdleHandler.Dispose();
                }

                // Allow single instance code to perform cleanup operations
                Microsoft.Shell.SingleInstance <App> .Cleanup();
            }
        }
Esempio n. 13
0
        // окно Ожидашки
        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);
        }
Esempio n. 14
0
        public static DishItem GetDishItemByRowGUID(string rowGuid)
        {
            IEnumerable <AppModel.MenuItem> mFolders = (IEnumerable <AppModel.MenuItem>)AppLib.GetAppGlobalValue("mainMenu");
            DishItem retVal;

            foreach (AppModel.MenuItem menuItem in mFolders)
            {
                if ((retVal = menuItem.Dishes.FirstOrDefault <DishItem>(d => d.RowGUID.ToString() == rowGuid)) != null)
                {
                    return(retVal);
                }
            }
            return(null);
        }