| | |
| | | using HMI.Base; |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Manager; |
| | | using HMI.Core.Setting; |
| | | using HMI.Core.Util; |
| | | using HMI.UI.Util; |
| | | using HMI.Util; |
| | | using Microsoft.Win32; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Collections.ObjectModel; |
| | | using System.Linq; |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | |
| | | public partial class ParameterSetting : PluginControl |
| | | { |
| | | |
| | | private ObservableCollection<ParameterData> datasource; |
| | | public ObservableCollection<ParameterData> Datasource |
| | | { |
| | | get => datasource; |
| | | set |
| | | { |
| | | Set(ref datasource, value); |
| | | } |
| | | } |
| | | |
| | | public List<string> groups = new List<string>(); |
| | | |
| | | public ParameterSetting() |
| | | { |
| | | |
| | | this.DataContext = this; |
| | | InitializeComponent(); |
| | | } |
| | |
| | | private void Button_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | var btn = ((Button)sender); |
| | | |
| | | ParameterData data = btn.DataContext as ParameterData; |
| | | switch (btn.Name) |
| | | { |
| | | case "addBtn": |
| | | OpenDataModal(null, false); |
| | | break; |
| | | case "editBtn": |
| | | OpenDataModal(data, true); |
| | | break; |
| | | case "refreshBtn": |
| | | LoadData(); |
| | | break; |
| | | case "delBatchBtn": |
| | | DeleteBatch(); |
| | | break; |
| | | case "exportBtn": |
| | | ExportData(); |
| | | break; |
| | | case "importBtn": |
| | | ImportData(); |
| | | break; |
| | | case "delBtn": |
| | | DeleteData(data); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载数据 |
| | | /// </summary> |
| | | public void LoadData() |
| | | { |
| | | try |
| | | { |
| | | Datasource = ParameterManager.GetCommonParameter<ObservableCollection<ParameterData>>() |
| | | ?? new ObservableCollection<ParameterData>(); |
| | | groups = Datasource.Where(d => !string.IsNullOrEmpty(d.ShowGroup)).Select(d => d.ShowGroup).Distinct().ToList(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Datasource = new ObservableCollection<ParameterData>(); |
| | | groups = new List<string>(); |
| | | log.Error("Refresh Data Failed.", ex); |
| | | ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.RefreshFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 打开新增或编辑窗口 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | public void OpenDataModal(ParameterData data, bool isUpdate) |
| | | { |
| | | try |
| | | { |
| | | int index = isUpdate ? Datasource.IndexOf(data) : -1; |
| | | string title = isUpdate ? $"{this.lang("App.Edit")}" : $"{this.lang("App.Add")}"; |
| | | SettingModal modal = new SettingModal() |
| | | { |
| | | Title = title, |
| | | Owner = Window.GetWindow(this) |
| | | }; |
| | | if (modal.Open(data ?? new ParameterData(), Datasource, groups) == true) |
| | | { |
| | | if (index == -1) |
| | | { |
| | | Datasource.Add(modal.Data); |
| | | ParameterManager.SaveCommonParameter(Datasource); |
| | | } |
| | | else |
| | | { |
| | | ParameterManager.SaveCommonParameter(Datasource); |
| | | } |
| | | LoadData(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | if (isUpdate) |
| | | { |
| | | log.Error("Edit Data Failed.", ex); |
| | | MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.EditFailed")}: {ex.Message}"); |
| | | } |
| | | else |
| | | { |
| | | log.Error("Add Data Failed.", ex); |
| | | MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.AddFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 批量删除 |
| | | /// </summary> |
| | | public void DeleteBatch() |
| | | { |
| | | try |
| | | { |
| | | var count = Datasource.Where(d => d.IsSelected).Count(); |
| | | if (count <= 0) |
| | | { |
| | | ToastHelper.Warning(this, this.lang("HMI.NoDeleteData")); |
| | | return; |
| | | } |
| | | if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeletes", count)) |
| | | == MessageBoxResult.OK) |
| | | { |
| | | var temp = Datasource.Where(d => !d.IsSelected).ToList(); |
| | | ParameterManager.SaveCommonParameter(temp); |
| | | LoadData(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Delete Batch Data Failed.", ex); |
| | | ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.DeleteFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除参数 |
| | | /// </summary> |
| | | /// <param name="data"></param> |
| | | private void DeleteData(ParameterData data) |
| | | { |
| | | try |
| | | { |
| | | if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeleteSingle", data.Name)) |
| | | == MessageBoxResult.OK) |
| | | { |
| | | int index = Datasource.IndexOf(data); |
| | | if (index < 0) |
| | | { |
| | | ToastHelper.Error(this, this.lang("App.ParameterException")); |
| | | return; |
| | | } |
| | | var temp = XmlHelper.DeepClone(Datasource); |
| | | temp.RemoveAt(index); |
| | | ParameterManager.SaveCommonParameter(temp); |
| | | LoadData(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Delete Parameter Failed.", ex); |
| | | ToastHelper.Error(this, $"{this.lang("App.DeleteFailed")}: {ex.Message}"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导出数据 |
| | | /// </summary> |
| | | private void ExportData() |
| | | { |
| | | try |
| | | { |
| | | SaveFileDialog sfd = new SaveFileDialog(); |
| | | |
| | | sfd.Filter = ""; |
| | | sfd.DefaultExt = "xls"; |
| | | sfd.FileName = this.lang("Pm.Setting.Title"); |
| | | if (sfd.ShowDialog() == true) |
| | | { |
| | | string targetPath = sfd.FileName; |
| | | ExcelHelper.ExportExcel(targetPath, Datasource); |
| | | ToastHelper.Success(Window.GetWindow(this), this.lang("App.ExportSuccess")); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Export Data Failed.", ex); |
| | | MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private void ImportData() |
| | | { |
| | | try |
| | | { |
| | | OpenFileDialog openFileDialog = new OpenFileDialog(); |
| | | openFileDialog.Filter = "execl(*.xlsx;*.xls)|*.xlsx;*.xls"; |
| | | openFileDialog.Title = this.lang("App.SelectFile"); |
| | | openFileDialog.Multiselect = false; |
| | | if (openFileDialog.ShowDialog() == true) |
| | | { |
| | | List<ParameterData> datas = ExcelHelper.ReadFromExcel<ParameterData>(openFileDialog.FileName); |
| | | ParameterManager.SaveCommonParameter(datas); |
| | | LoadData(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Export Data Failed.", ex); |
| | | MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private void UserControl_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | LoadData(); |
| | | Loaded -= UserControl_Loaded; |
| | | } |
| | | |
| | | public override bool CanActive() |
| | | { |
| | | if (ParamSetting.IsOptRequirePassword) |
| | | { |
| | | var win = new RequirePasswordWindow |
| | | { |
| | | Owner = Window.GetWindow(this), |
| | | WindowStartupLocation = WindowStartupLocation.CenterScreen |
| | | }; |
| | | return win.ShowDialog() == true; |
| | | } |
| | | else |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | } |