// выбор роли КДСа // для предопредл.роли отобразить флажки и дизаблить 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
} // 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; }
private void ConfigEdit_Loaded(object sender, RoutedEventArgs e) { if (_deps != null) { // контрол меняет значение поля IsViewOnKDS в _deps !!! listBoxDepartments.ItemsSource = _deps.Values; } _cfgValKeeper.AddPreValue("depUIDs", false, null); _cfgValKeeper.AddPreValue("IsWriteTraceMessages", true, chkIsWriteTraceMessages); _cfgValKeeper.AddPreValue("IsLogUserAction", true, chkIsLogUserAction); _cfgValKeeper.AddPreValue("AppFontScale", false, tbFontSizeScale); _cfgValKeeper.AddPreValue("OrdersColumnsCount", true, tbxOrdersColumnsCount); _cfgValKeeper.AddPreValue("AutoReturnOrdersGroupByTime", false, tbTimerIntervalToOrderGroupByTime); _cfgValKeeper.AddPreValueDirectly("NewOrderAudioAttention", (string)cbxSelectAudio.SelectedValue); _cfgValKeeper.AddPreValue("OrderHeaderClickable", true, cbxOrderHeaderClickable); _cfgValKeeper.AddPreValue("IsIngredientsIndependent", true, cbxIngrClickable); _cfgValKeeper.AddPreValue("ShowTimerOnDependIngr", true, cbxIngrShowTimer); _cfgValKeeper.AddPreValue("IsShowOrderStatusByAllShownDishes", true, cbxShowOrderStatusByAllShownDishes); _cfgValKeeper.AddPreValue("IsMultipleStatusTabs", true, cbxMultipleStatusTabs); _cfgValKeeper.AddPreValue("IsDishGroupAndSumQuantity", true, cbxTabDishGroup); // получить от службы //AppDataProvider dataProvider = (AppDataProvider)AppLib.GetAppGlobalValue("AppDataProvider"); //int expTake = dataProvider.GetExpectedTakeValue(); //_cfgValKeeper.AddPreValueDirectly("ExpectedTake", expTake.ToString(), tbTimerExpectedTake); bool isDefault = true; KDSModeEnum eMode = KDSModeHelper.CurrentKDSMode; _cfgValKeeper.AddPreValueDirectly("KDSMode", eMode.ToString()); // прямое сохранение только в символьном виде if (KDSModeHelper.DefinedKDSModes.ContainsKey(eMode)) { string sStates, sActions; if (eMode == KDSModeEnum.Special) { KDSModeStates modeStates = KDSModeHelper.DefinedKDSModes[KDSModeEnum.Special]; sStates = modeStates.AllowedStatesToString(); sActions = modeStates.AllowedActionsToString(); } else { sStates = ""; sActions = ""; } _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialStates", sStates); _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialActions", sActions); isDefault = false; // чекнуть нужную кнопку foreach (RadioButton item in lbxKDSMode.Children.OfType <RadioButton>()) { if ((item.Tag != null) && (Convert.ToInt32(item.Tag) == (int)eMode)) { item.IsChecked = true; } else { item.IsChecked = false; } } } else { _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialStates", ""); _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialActions", ""); } // роль КДС по умолчанию if (isDefault) { _cfgValKeeper.AddPreValueDirectly("KDSMode", ""); _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialStates", ""); _cfgValKeeper.AddPreValueDirectly("KDSModeSpecialActions", ""); rbSpecial.IsChecked = true; } }