using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Forms; using POSV.MessageEvent; using POSV.Entity; using POSV.Bean; using POSV.Utils; using System.Drawing; using POS.Language.Language; namespace POSV.Component { [ToolboxItem(true)] public partial class CategorySettings : AbstractSettings { public CategorySettings() { InitializeComponent(); this.superTabControl.SelectedTabChanging += OnSelectedTabChanging; this.superTabControl.SelectedTabChanged += OnSelectedTabChanged; this.ButtonOK.Text = LangProxy.ToLang("应用"); this.ButtonClose.Text = LangProxy.ToLang("关闭"); this.lblInfo.Text = LangProxy.ToLang("收银界面配置,修改后请点击保存"); this.superTabItem2.Text = LangProxy.ToLang("品类显示定义"); this.superTabItem4.Text = LangProxy.ToLang("规格做法定义"); this.superTabItem3.Text = LangProxy.ToLang("点单列表定义"); this.superTabItem1.Text = LangProxy.ToLang("品项显示定义"); } private void OnSelectedTabChanged(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangedEventArgs e) { } private void OnSelectedTabChanging(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangingEventArgs e) { if (e.OldValue == null) { return; } //品类参数 if (this.categoryParameter1 is AbstractParameter) { var newValue = categoryParameter1.NewChanged(); if (newValue.Count > 0) { categoryParameter1.SaveChanged(newValue); } } //品项参数 if (this.productParameter1 is AbstractParameter) { var newValue = productParameter1.NewChanged(); if (newValue.Count > 0) { productParameter1.SaveChanged(newValue); } } //购物车参数 if (this.shoppingCartParameter1 is AbstractParameter) { var newValue = shoppingCartParameter1.NewChanged(); if (newValue.Count > 0) { shoppingCartParameter1.SaveChanged(newValue); } } //规格做法参数 if (this.specMakeParameter1 is AbstractParameter) { var newValue = specMakeParameter1.NewChanged(); if (newValue.Count > 0) { specMakeParameter1.SaveChanged(newValue); } } } public override void RefreshUi() { base.RefreshUi(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.BackColor = Color.Transparent; } public override Tuple SaveChanged(List data) { bool isSuccess = true; string message = "参数更新成功"; try { lock (Global.Instance.SyncLock) { using (var db = Global.Instance.OpenDataBase) { using (var trans = db.GetTransaction()) { foreach (var config in data) { db.Save(config); } trans.Complete(); } } } } catch (Exception ex) { isSuccess = false; message = "参数更新异常"; LOGGER.Error(ex, message); } finally { if (isSuccess) { //更新品类控件UI UpdateCategoryUi(); } } return new Tuple(isSuccess, message); } public override List NewChanged() { var result = new List(); //品类参数 var categoryValue = this.categoryParameter1.NewChanged(); result.AddRange(categoryValue); //品项参数 var productValue = this.productParameter1.NewChanged(); result.AddRange(productValue); //购物车参数 var shoppingCartValue = this.shoppingCartParameter1.NewChanged(); result.AddRange(shoppingCartValue); //规格做法参数 var newValue = specMakeParameter1.NewChanged(); result.AddRange(newValue); return result; } private void UpdateCategoryUi() { Config config = null; lock (Global.Instance.SyncLock) { using (var db = Global.Instance.OpenDataBase) { string sql = string.Format(SqlConstant.ConfigQueryByGroupAndKey, ConfigConstant.CATEGORY_GROUP, ConfigConstant.CATEGORY_JSON_TEMPLATE); config = db.SingleOrDefault(sql); } } if (config != null) { CategoryItem item = JsonUtils.Deserialize(config.Values); //发送分组通知 MsgEvent.Send(Constant.CATEGORY_CHANGED_NOTIFY, item); } } private void OnButtonOKClick(object sender, EventArgs e) { var selected = this.superTabControl.SelectedTabIndex; var result = new Tuple(true, LangProxy.ToLang("没有任何更新")); switch (selected) { case 0: { var newValue = categoryParameter1.NewChanged(); if (newValue.Count > 0) { result = categoryParameter1.SaveChanged(newValue); } } break; case 1: { var newValue = productParameter1.NewChanged(); if (newValue.Count > 0) { result = productParameter1.SaveChanged(newValue); } } break; case 2: { var newValue = shoppingCartParameter1.NewChanged(); if (newValue.Count > 0) { result = shoppingCartParameter1.SaveChanged(newValue); } } break; case 3: { var newValue = specMakeParameter1.NewChanged(); if (newValue.Count > 0) { result = specMakeParameter1.SaveChanged(newValue); } } break; } if (result.Item1) { string message = "[" + this.Tag.ToString() + LangProxy.ToLang("]的参数修改成功"); DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新成功"), LangProxy.ToLang(message), MessageBoxIcon.Information, MessageBoxButtons.OK); dialog.ShowDialog(); } else { string message = "[" + this.Tag.ToString() + LangProxy.ToLang("]的参数修改失败"); DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新失败"), LangProxy.ToLang(message), MessageBoxIcon.Error, MessageBoxButtons.OK); dialog.ShowDialog(); } } private void OnButtonCloseClick(object sender, EventArgs e) { var parent = this.FindForm(); if (parent != null && parent is SettingsForm) { var settings = parent as SettingsForm; settings.FormClose(); } } } }