using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using Venus_Core; using Venus_Unity; using RoleDefine = Venus_MainPages.Roles.RoleDefine; using Menu = Venus_MainPages.Roles.Menu; using Venus_MainPages.Views; using Venus_MainPages.Roles; using System.Windows.Data; using WPF.Themes.UserControls; using System.IO; using MECF.Framework.Common.DataCenter; namespace Venus_MainPages.ViewModels { internal class RoleViewModel : BindableBase { #region 私有属性 List m_venusMenus = new List(); //ObservableCollection m_Menus = new ObservableCollection(); ICollectionView vm; ObservableCollection m_Roles = new ObservableCollection(); ObservableCollection m_RoleDefines = new ObservableCollection(); private bool firstLoad = true; private RoleView roleView; private RoleDefine m_CurrentRoleDefine; #endregion #region 依赖项属性 public List VenusMenus { get { return m_venusMenus; } set { SetProperty(ref m_venusMenus, value); } } //public ObservableCollection Menus //{ // get { return m_Menus; } // set // { // SetProperty(ref m_Menus, value); // } //} public ObservableCollection Roles { get { return m_Roles; } set { SetProperty(ref m_Roles, value); } } public ObservableCollection RoleDefines { get { return m_RoleDefines; } set { SetProperty(ref m_RoleDefines, value); } } public RoleDefine CurrentRoleDefine { get { return m_CurrentRoleDefine; } set { SetProperty(ref m_CurrentRoleDefine, value); } } #endregion #region 命令 private DelegateCommand _SaveCommand; public DelegateCommand SaveCommand => _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave)); private DelegateCommand _LoadedCommand; public DelegateCommand LoadedCommand => _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(OnLoaded)); #endregion string uiConfig; public RoleViewModel() { string configPath = ""; uiConfig = ""; object obj = QueryDataClient.Instance.Service.GetData("System.ConfigType"); var configType = (ConfigType)Convert.ToInt32(obj); if (configType == ConfigType.Other || configType == ConfigType.Kepler2300 || configType == ConfigType.Kepler2200) { uiConfig = "_Kepler"; } else if (configType == ConfigType.VenusSE || configType == ConfigType.VenusDE) { uiConfig = "_VenusSE"; } else if (configType == ConfigType.Venus) { uiConfig = "_Venus"; } if (File.Exists($"Config/UIMenu{uiConfig}.json")) { configPath = $"Config/UIMenu{uiConfig}.json"; } else if (File.Exists($"Config/Menu{uiConfig}.json")) { configPath = $"Config/Menu{uiConfig}.json"; } else { } RoleDefines = SerializeHelper.Instance.ReadFromJsonFile>(configPath); for (int i = 0; i < RoleDefines.Count; i++) { Roles.Add(RoleDefines[i].RoleName); } //Roles.Add("Manager"); //Roles.Add("Engineer"); //Roles.Add("Technician"); //Roles.Add("Operator"); } private void OnSave() { //for (int i = 0; i < RoleDefines.Count; i++) //{ // for (int j = 0; j < RoleDefines[i].Menus.Count; j++) // { // RoleDefines[i].Menus[j].Permission = MenuPermission.ReadWrite; // } //} SerializeHelper.Instance.WriteToJsonFile>(RoleDefines.ToList(), $"Config/UIMenu{uiConfig}.json"); } private void OnLoaded(Object myrecipeView) { if (firstLoad == true) { roleView = myrecipeView as RoleView; roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged; } } private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs e) { int index = Roles.IndexOf(e.NewValue.ToString()); CurrentRoleDefine = RoleDefines[index]; vm = CollectionViewSource.GetDefaultView(CurrentRoleDefine.Menus); vm.GroupDescriptions.Clear(); vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu")); } } }