Esempio n. 1
0
        private List <KeyValuePair <OrderStatusEnum, OrderStatusEnum> > getActionsFromCheckBoxes(Panel panel)
        {
            List <KeyValuePair <OrderStatusEnum, OrderStatusEnum> > retVal = new List <KeyValuePair <OrderStatusEnum, OrderStatusEnum> >();

            List <CheckBox> cbList = panel.Children.OfType <CheckBox>().ToList();

            foreach (CheckBox item in cbList)
            {
                if ((item.IsChecked ?? false) && (item.Tag != null))
                {
                    KeyValuePair <OrderStatusEnum, OrderStatusEnum> actionPair = KDSModeHelper.GetStatusPairFromIntPair(item.Tag.ToString());
                    if (actionPair.Key != OrderStatusEnum.None)
                    {
                        retVal.Add(actionPair);
                    }
                }
            }

            return((retVal.Count == 0) ? null : retVal);
        }
Esempio n. 2
0
        // выбор роли КДСа
        // для предопредл.роли отобразить флажки и дизаблить
        private void rbKDSMode_Checked(object sender, RoutedEventArgs e)
        {
            RadioButton rbChecked = (RadioButton)sender;
            KDSModeEnum kdsMode;

            if (Enum.TryParse <KDSModeEnum>(rbChecked.Tag.ToString(), out kdsMode))
            {
                KDSModeStates kdsStates = KDSModeHelper.DefinedKDSModes[kdsMode];
                // установить флажки состояний
                foreach (CheckBox item in pnlStates.Children.OfType <CheckBox>())
                {
                    OrderStatusEnum eStatus = (OrderStatusEnum)Convert.ToInt32(item.Tag);
                    item.IsChecked = (kdsStates.AllowedStates.Contains(eStatus));
                }

                // установить флажки действий
                KeyValuePair <OrderStatusEnum, OrderStatusEnum> kvp;
                foreach (CheckBox item in pnlActions.Children.OfType <CheckBox>())
                {
                    if (item.Tag != null)
                    {
                        kvp            = KDSModeHelper.GetStatusPairFromIntPair(item.Tag.ToString());
                        item.IsChecked = ((kvp.Key != OrderStatusEnum.None) && (kdsStates.AllowedActions.Contains(kvp)));
                    }
                }

                if (kdsMode == KDSModeEnum.Special)
                {
                    pnlStates.IsEnabled = true; pnlActions.IsEnabled = true;
                }
                else
                {
                    pnlStates.IsEnabled = false; pnlActions.IsEnabled = false;
                }
            }
        }  // method
Esempio n. 3
0
        public static void Main(string[] args)
        {
            // splash
            Splasher.Splash = new SplashScreen();
            Splasher.ShowSplash();
            //for (int i = 0; i < 5000; i += 1)
            //{
            //    MessageListener.Instance.ReceiveMessage(string.Format("Load module {0}", i));
            //    Thread.Sleep(1);
            //}

            // таймаут запуска приложения
            string 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);
                }
            }

            // текст в MessageListener.Instance прибинден к текстовому полю на сплэше
            MessageListener.Instance.ReceiveMessage("Инициализация журнала событий...");
            AppLib.InitAppLogger();

            AppLib.WriteLogInfoMessage("************  Start KDS Client (WPF) *************");
            // установить текущий каталог на папку с приложением
            string curDir = System.IO.Directory.GetCurrentDirectory();

            if (curDir.Last() != '\\')
            {
                curDir += "\\";
            }
            string appDir = AppEnvironment.GetAppDirectory();

            if (curDir != appDir)
            {
                AppLib.WriteLogInfoMessage("Текущий каталог изменен на папку приложения: " + appDir);
                System.IO.Directory.SetCurrentDirectory(appDir);
            }

            // защита PSW-файлом
            MessageListener.Instance.ReceiveMessage("Проверка лицензии...");
            bool isLoyalClient = false;

            //isLoyalClient = ((args != null) && args.Contains("-autoGenLicence"));
            // ключ реестра HKLM\Software\Integra\autoGenLicence = 01 (binary)
            if (isLoyalClient == false)
            {
                isLoyalClient = RegistryHelper.IsExistsAutoGenLicenceKey();
            }
            pswLib.CheckProtectedResult checkProtectedResult;
            if (pswLib.Hardware.IsCurrentAppProtected("KDSWPFClient", out checkProtectedResult, null, isLoyalClient) == false)
            {
                string errMsg = string.Format("{0}{1}{1}{2}", checkProtectedResult.LogMessage, Environment.NewLine, checkProtectedResult.CustomMessage);
                appExit(2, errMsg);
            }

            MessageListener.Instance.ReceiveMessage("Получение версии приложения...");
            AppLib.WriteLogInfoMessage("Инициализация KDS-клиента...");

            // проверка наличия уникального имени клиента в конфиг-файле
            cfgValue = CfgFileHelper.GetAppSetting("KDSClientName");
            if (cfgValue.IsNull() == true)
            {
                cfgValue = "Не указано имя КДС-клиента в файле AppSettings.config.";
                appExit(3, cfgValue);
            }
            if (cfgValue.Equals("uniqClientName", StringComparison.OrdinalIgnoreCase))
            {
#if (Release == false) && (DEBUG == false)
                cfgValue = "Измените имя КДС-клиента в файле AppSettings.config";
                appExit(3, cfgValue);
#endif
            }
            KDSWPFClient.App app = new KDSWPFClient.App();
            WpfHelper.SetAppGlobalValue("KDSClientName", cfgValue);
            App.ClientName = System.Convert.ToString(WpfHelper.GetAppGlobalValue("KDSClientName"));
            AppLib.WriteLogInfoMessage(" - имя КДС-клиента: {0}", App.ClientName);

            // информация о файлах и сборках
            AppLib.WriteLogInfoMessage(" - файл: {0}, Version {1}", AppEnvironment.GetAppFullFile(), AppEnvironment.GetAppVersion());
            ITSAssemblyInfo asmInfo = new ITSAssemblyInfo("IntegraLib");
            AppLib.WriteLogInfoMessage(" - Integra lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version);
            asmInfo = new ITSAssemblyInfo("IntegraWPFLib");
            AppLib.WriteLogInfoMessage(" - Integra WPF lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version);

            MessageListener.Instance.ReceiveMessage("Получение параметров окружения...");
            AppLib.WriteLogInfoMessage(AppEnvironment.GetEnvironmentString());

            getAppLayout();

            // настройка приложения
            MessageListener.Instance.ReceiveMessage("Получение параметров приложения...");
#if !DEBUG
            System.Threading.Thread.Sleep(500);
#endif
            app.InitializeComponent(); // определенные в app.xaml

            setAppGlobalValues();      // для хранения в свойствах приложения (из config-файла или др.)
            AppLib.WriteLogInfoMessage("App settings from config file: " + CfgFileHelper.GetAppSettingsFromConfigFile());

            // создать каналы
            AppLib.WriteLogInfoMessage("Создаю клиента для работы со службой KDSService - START");
            AppDataProvider dataProvider = new AppDataProvider();
            try
            {
                MessageListener.Instance.ReceiveMessage("Создание канала получения данных...");
#if !DEBUG
                System.Threading.Thread.Sleep(1000);
#endif
                dataProvider.CreateGetChannel();

                MessageListener.Instance.ReceiveMessage("Создание канала установки данных...");
#if !DEBUG
                System.Threading.Thread.Sleep(1000);
#endif
                dataProvider.CreateSetChannel();

                AppLib.WriteLogInfoMessage("Создаю клиента для работы со службой KDSService - FINISH");
            }
            catch (Exception)
            {
                AppLib.WriteLogErrorMessage("Data provider error: " + dataProvider.ErrorMessage);
            }

            // и получить словари и настройки от службы
            MessageListener.Instance.ReceiveMessage("Получаю словари и настройки от службы KDSService...");
#if !DEBUG
            System.Threading.Thread.Sleep(500);
#endif
            AppLib.WriteLogInfoMessage("Получаю словари и настройки от службы KDSService - START");
            if (dataProvider.SetDictDataFromService() == false)
            {
                // КДСы могут быть уже запущены, а служба еще нет!
                AppLib.WriteLogErrorMessage("Data provider error: " + dataProvider.ErrorMessage);
                //if (splashScreen != null) splashScreen.Close(TimeSpan.FromMinutes(10));
                //MessageBox.Show("Ошибка получения словарей от службы KDSService:" + Environment.NewLine + dataProvider.ErrorMessage, "АВАРИЙНОЕ ЗАВЕРШЕНИЕ ПРИЛОЖЕНИЯ", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                //Environment.Exit(2);
            }
            else
            {
                AppLib.WriteLogInfoMessage("Получаю словари и настройки от службы KDSService - FINISH");
            }

            WpfHelper.SetAppGlobalValue("AppDataProvider", dataProvider);

            // прочитать из config-а и сохранить в свойствах приложения режим КДС
            MessageListener.Instance.ReceiveMessage("Получаю из config-файла режим работы КДС...");
#if !DEBUG
            System.Threading.Thread.Sleep(500);
#endif
            KDSModeHelper.Init();

            // создать и сохранить в свойствах приложения служебные окна (ColorLegend, StateChange)
            MessageListener.Instance.ReceiveMessage("Создаю служебные окна...");
#if !DEBUG
            System.Threading.Thread.Sleep(500);
#endif
            WpfHelper.SetAppGlobalValue("ColorLegendWindow", new ColorLegend());  // окно легенды
            // окно изменения статуса
            WpfHelper.SetAppGlobalValue("StateChangeWindow", new StateChange());

            // основное окно приложения
            MessageListener.Instance.ReceiveMessage("Инициализация окна приложения...");
#if !DEBUG
            System.Threading.Thread.Sleep(1000);
#endif
            MainWindow mainWindow = new MainWindow(args);
            app.MainWindow = mainWindow;
            app.Run(mainWindow);

            if (dataProvider != null)
            {
                dataProvider.Dispose(); dataProvider = null;
            }
            AppLib.WriteLogInfoMessage("************  End KDS Client (WPF)  *************");
        }  // Main()
Esempio n. 4
0
        }  // method

        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            //  *** получить напрямую новые значения  ***
            // новые значения из списков
            _cfgValKeeper.PutNewValueDirectly("depUIDs", getIsViewDepIds());

            // роль КДС из контролов
            KDSModeEnum eMode = getKDSModeFromRadioButtons();

            if (eMode != KDSModeEnum.None)
            {
                _cfgValKeeper.PutNewValueDirectly("KDSMode", eMode.ToString());
                string sStates, sActions;
                if (eMode == KDSModeEnum.Special)
                {
                    // получить новые объектные значения разрешений
                    List <OrderStatusEnum> newAllowedStates = getStatesFromCheckBoxes(pnlStates);
                    List <KeyValuePair <OrderStatusEnum, OrderStatusEnum> > newAllowedActions = getActionsFromCheckBoxes(pnlActions);
                    sStates = KDSModeHelper.StatesListToString(newAllowedStates); if (sStates == null)
                    {
                        sStates = "";
                    }
                    sActions = KDSModeHelper.ActionsListToString(newAllowedActions); if (sActions == null)
                    {
                        sActions = "";
                    }
                }
                else
                {
                    sStates = ""; sActions = "";
                }
                // записать их новые значения в кипер
                _cfgValKeeper.PutNewValueDirectly("KDSModeSpecialStates", sStates);
                _cfgValKeeper.PutNewValueDirectly("KDSModeSpecialActions", sActions);
            }

            _cfgValKeeper.PutNewValueDirectly("NewOrderAudioAttention", (string)cbxSelectAudio.SelectedValue);

            // *** получить новые значения из контролов  ***
            _cfgValKeeper.PutNewValueFromControls();

            // собрать словарь новых значений
            _appNewSettings = _cfgValKeeper.GetNewValuesDict();
            // сделаны ли какие-нибудь изменения?
            if (_appNewSettings.Count > 0)
            {
                string errMsg = null;
                string sBuf;
                if (CfgFileHelper.SaveAppSettings(_appNewSettings, out errMsg))  // сохранить в config-файле (все в символьном виде)
                {
                    // для объектов, взятых из AppProps, сохранить туда
                    _cfgValKeeper.SaveToAppProps();

                    // для некоторых значений может понадобиться преобразование типов для сохранения в App.Properties
                    if (_appNewSettings.ContainsKey("KDSMode") && (_appNewSettings["KDSMode"].IsNull() == false))
                    {
                        if (Enum.TryParse <KDSModeEnum>(_appNewSettings["KDSMode"], out eMode))
                        {
                            KDSModeHelper.CurrentKDSMode = eMode;
                        }
                    }
                    // особые состояния и действия хранятся не в App.Properties, а в четвертом элементе KDSModeStates и в config-e !!
                    if (_appNewSettings.ContainsKey("KDSModeSpecialStates"))
                    {
                        sBuf = _appNewSettings["KDSModeSpecialStates"];
                        KDSModeStates modeStates = KDSModeHelper.DefinedKDSModes[KDSModeEnum.Special];
                        modeStates.StringToAllowedStates(sBuf);
                        modeStates.CreateUserStateSets();
                    }
                    if (_appNewSettings.ContainsKey("KDSModeSpecialActions"))
                    {
                        sBuf = _appNewSettings["KDSModeSpecialActions"];
                        KDSModeHelper.DefinedKDSModes[KDSModeEnum.Special].StringToAllowedActions(sBuf);
                    }

                    MessageBox.Show("Настройки успешно сохранены в config-файле!", "Сохранение настроек в config-файле", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Ошибка сохранения настроек приложения:" + Environment.NewLine + "\t" + errMsg, "Сохранение настроек в config-файле", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

            this.DialogResult = true;
        }