Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/AppMenu.cs

186 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using MECF.Framework.Common.Account.Permissions;
using MECF.Framework.Common.CommonData;
using Sicentury.Core;
namespace MECF.Framework.Common.Account.Extends
{
[Serializable]
public class AppMenu : NotifiableItem
{
#region Variables
private string _menuID;
private string _menuViewModel;
private string _resKey;
private string _system;
private MenuPermissionEnum _permission;
private AppMenu _parent;
private List<AppMenu> _subMenus;
private bool _selected;
private bool _isAlarm;
private string _alarmModule;
private string _description;
#endregion
#region Constructors
public AppMenu()
{
}
public AppMenu(string menuID, string menuViewModel, string resKey, List<AppMenu> subMenus, string description = "")
{
_menuID = menuID;
_menuViewModel = menuViewModel;
_resKey = resKey;
_subMenus = subMenus;
_description = description;
}
#endregion
#region Properties
public string MenuID
{
get => _menuID;
set => _menuID = value;
}
public string ResKey
{
get => _resKey;
set => _resKey = value;
}
public List<AppMenu> MenuItems
{
get => _subMenus;
set => _subMenus = value;
}
public string ViewModel
{
get => _menuViewModel;
set => _menuViewModel = value;
}
public MenuPermissionEnum Permission
{
get => _permission;
set => _permission = value;
}
public string System
{
get => _system;
set => _system = value;
}
/// <summary>
/// 设置或返回当前菜单的父菜单。
/// </summary>
public AppMenu Parent
{
get => _parent;
set => _parent = value;
}
/// <summary>
/// 设置或返回当前菜单是否被选中。
/// </summary>
public bool Selected
{
get => _selected;
set => Set(ref _selected, value);
}
/// <summary>
/// 设置或返回是否在当前菜单是否有报警。
/// </summary>
public bool IsAlarm
{
get => _isAlarm;
set => Set(ref _isAlarm, value);
}
/// <summary>
/// 设置或返回报警模组。
/// </summary>
public string AlarmModule
{
get => _alarmModule;
set => Set(ref _alarmModule, value);
}
public object Model { get; set; }
/// <summary>
/// 设置或返回被选中的子菜单。
/// </summary>
public AppMenu LastSelectedSubMenu { get; set; }
/// <summary>
/// 返回当前菜单的描述。
/// </summary>
public string Description
{
get => _description;
set => _description = value;
}
#endregion
#region Methods
/*private void Set<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(field, value))
return;
field = value;
//InvokePropertyChanged(propertyName);
}
*/
public object Clone(AppMenu parent)
{
var appMenu = new AppMenu();
appMenu.MenuID = MenuID;
appMenu.ResKey = ResKey;
appMenu.ViewModel = ViewModel;
appMenu.Permission = Permission;
appMenu.Selected = Selected;
appMenu.System = System;
appMenu.Parent = parent;
appMenu.IsAlarm = IsAlarm;
appMenu.AlarmModule = AlarmModule;
appMenu.Description = Description;
if (MenuItems != null)
{
appMenu.MenuItems = new List<AppMenu>();
foreach (var menuItem in MenuItems)
{
appMenu.MenuItems.Add((AppMenu)menuItem.Clone(appMenu));
}
}
return appMenu;
}
public override string ToString()
{
return $"Name = {MenuID}, Sub Menu = {MenuItems?.Count ?? 0}";
}
#endregion
}
}