using HMI.Base;
using HMI.Core.Api;
using HMI.Core.Util;
using HMI.UI.Util;
using System;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
namespace HMI.SettingControl
{
///
/// UserControl1.xaml 的交互逻辑
///
public partial class SettingControl : PluginControl
{
#region 属性
private ObservableCollection tabItems;
public ObservableCollection TabItems
{
get { return tabItems; }
set { Set(ref tabItems, value); }
}
#endregion
public SettingControl()
{
DataContext = this;
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var item = new TabItem
{
Content = new SystemConfig()
};
item.SetValue(TabItem.HeaderProperty, new DynamicResourceExtension("Setting.SystemSetting").ProvideValue(null));
TabItems = new ObservableCollection() {
item
};
foreach (var d in PluginLoader.Instance.Plugins)
{
if (d.SettingControl == null) continue;
TabItems.Add(new TabItem
{
Header = d.Name,
Tag = d,
Content = d.SettingControl
});
}
tabControl.SelectedIndex = 0;
Loaded -= UserControl_Loaded;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
switch (btn.Name)
{
case "resetBtn":
ResetCurrentConfig();
break;
case "saveBtn":
SaveAllConfig();
break;
default:
break;
}
}
private void SaveAllConfig()
{
foreach (var d in tabControl.ItemsSource)
{
if (!(d is TabItem tabItem)) continue;
if (tabItem.Content is IConfigManager manager)
{
try
{
manager.SaveConfig();
this.Success(this.lang("App.SaveSuccess"));
}
catch (Exception ex)
{
MsgBoxHelper.Error(this, $"{tabItem.Header}{this.lang("App.SaveFailed")}: {ex.Message}");
}
}
}
}
private void SaveCurrentConfig()
{
var content = tabControl.SelectedItem as TabItem;
if (content is IConfigManager manager)
{
try
{
manager.SaveConfig();
}
catch (Exception ex)
{
MsgBoxHelper.Error(this, $"{this.lang("App.SaveFailed")}: {ex.Message}");
}
}
}
private void ResetCurrentConfig()
{
var tabItem = tabControl.SelectedItem as TabItem;
if (tabItem.Content is IConfigManager manager)
{
try
{
manager.ResetConfig();
}
catch (Exception ex)
{
MsgBoxHelper.Error(this, $"{this.lang("App.SaveFailed")}: {ex.Message}");
}
}
}
}
}