|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using POSV.Entity;
|
|
|
|
|
using DevComponents.DotNetBar.Metro;
|
|
|
|
|
using DevComponents.DotNetBar;
|
|
|
|
|
using POSV.Utils;
|
|
|
|
|
using POSV.Template;
|
|
|
|
|
using POSV.MessageEvent;
|
|
|
|
|
using POSV.MsgCenter;
|
|
|
|
|
using POSV.Bean;
|
|
|
|
|
using POS.Language.Language;
|
|
|
|
|
|
|
|
|
|
namespace POSV.Component
|
|
|
|
|
{
|
|
|
|
|
[ToolboxItem(true)]
|
|
|
|
|
public partial class MenuControl : BaseUserControl
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 数据库的模块数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
private List<ModuleMenu> _dataSource = null;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 当前选中的功能块
|
|
|
|
|
/// </summary>
|
|
|
|
|
private MetroTileItem _selectedItem = null;
|
|
|
|
|
|
|
|
|
|
private int DefaultWidth = 55;
|
|
|
|
|
|
|
|
|
|
private int DefaultHeight = 50;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 工具栏的宽度
|
|
|
|
|
/// </summary>
|
|
|
|
|
private int FixItemWidth = 50;
|
|
|
|
|
|
|
|
|
|
private int FixItemHeight = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private int Cols = 8;
|
|
|
|
|
|
|
|
|
|
private int Rows = 5;
|
|
|
|
|
|
|
|
|
|
private Size DefaultItemSize = Size.Empty;
|
|
|
|
|
|
|
|
|
|
public MenuControl()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
this.BackColor = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
//订购界面变更通知事件
|
|
|
|
|
MsgEvent.RemoveListener(Constant.MENU_CHANGED_NOTIFY , this.MenuChangedEventNotify);
|
|
|
|
|
MsgEvent.Receive(Constant.MENU_CHANGED_NOTIFY , this.MenuChangedEventNotify);
|
|
|
|
|
|
|
|
|
|
//title修改通知
|
|
|
|
|
MsgEvent.RemoveListener(Constant.MENU_TITLE_CHANGED_NOTIFY, this.MenuNotifyChangedEventNotify);
|
|
|
|
|
MsgEvent.Receive(Constant.MENU_TITLE_CHANGED_NOTIFY, this.MenuNotifyChangedEventNotify);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// title变更通知
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="args"></param>
|
|
|
|
|
protected void MenuNotifyChangedEventNotify(object sender, MsgEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var list = args.Data as List<object>;
|
|
|
|
|
|
|
|
|
|
var mainChange = new Dictionary<string, string>();
|
|
|
|
|
foreach (var temp in list)
|
|
|
|
|
{
|
|
|
|
|
var data = temp as Tuple<ModuleKeyCode, MenuTileNotifyType, string>;
|
|
|
|
|
//立即刷新
|
|
|
|
|
var keyCode = data.Item1;
|
|
|
|
|
var keyData = data.Item3;
|
|
|
|
|
|
|
|
|
|
foreach (var control in this.mainPanel.Controls)
|
|
|
|
|
{
|
|
|
|
|
if (control is ItemPanel)
|
|
|
|
|
{
|
|
|
|
|
var panel = control as ItemPanel;
|
|
|
|
|
foreach (var icTemp in panel.Items)
|
|
|
|
|
{
|
|
|
|
|
var ic = icTemp as ItemContainer;
|
|
|
|
|
if (ic != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (var itemObj in ic.SubItems)
|
|
|
|
|
{
|
|
|
|
|
if(itemObj is ItemContainer)
|
|
|
|
|
{
|
|
|
|
|
var item = itemObj as ItemContainer;
|
|
|
|
|
foreach (var subItemObj in item.SubItems)
|
|
|
|
|
{
|
|
|
|
|
if(subItemObj is MetroTileItem)
|
|
|
|
|
{
|
|
|
|
|
var tempItem = itemObj as MetroTileItem;
|
|
|
|
|
ApplySubNotify(tempItem, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if(itemObj is MetroTileItem)
|
|
|
|
|
{
|
|
|
|
|
var item = itemObj as MetroTileItem;
|
|
|
|
|
ApplySubNotify(item, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(icTemp is MetroTileItem)
|
|
|
|
|
{
|
|
|
|
|
var tempItem = icTemp as MetroTileItem;
|
|
|
|
|
ApplySubNotify(tempItem, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//记录主菜单通知信息
|
|
|
|
|
if (_dataSource != null)
|
|
|
|
|
{
|
|
|
|
|
var equalKeyCodeModelList = _dataSource.FindAll(x => x.KeyCode == keyCode.ToString());
|
|
|
|
|
foreach (var tempModel in equalKeyCodeModelList)
|
|
|
|
|
{
|
|
|
|
|
switch (data.Item2)
|
|
|
|
|
{
|
|
|
|
|
case MenuTileNotifyType.数量:
|
|
|
|
|
var parentId = tempModel.ParentId;
|
|
|
|
|
var data2 = keyData == "0" ? string.Empty : keyData;
|
|
|
|
|
if (mainChange.ContainsKey(parentId))
|
|
|
|
|
{
|
|
|
|
|
mainChange[parentId] += data2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mainChange.Add(parentId, data2);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mainChange.Keys.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
RefreshMainMenuNotify(mainChange);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex, "通知变更发生异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ApplySubNotify(MetroTileItem item, Tuple<ModuleKeyCode, MenuTileNotifyType, string> data)
|
|
|
|
|
{
|
|
|
|
|
var keyCode = data.Item1;
|
|
|
|
|
var keyData = data.Item3;
|
|
|
|
|
ModuleMenu mo = item.Tag as ModuleMenu;
|
|
|
|
|
if (mo.KeyCode == data.Item1.ToString())
|
|
|
|
|
{
|
|
|
|
|
switch (data.Item2)
|
|
|
|
|
{
|
|
|
|
|
case MenuTileNotifyType.数量:
|
|
|
|
|
if (keyData == "0" || string.IsNullOrEmpty(keyData))
|
|
|
|
|
{
|
|
|
|
|
//去除显示
|
|
|
|
|
item.NotificationMarkText = string.Empty;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (keyData.Length > 2)
|
|
|
|
|
{
|
|
|
|
|
item.NotificationMarkSize = 33;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.NotificationMarkSize = 20;
|
|
|
|
|
}
|
|
|
|
|
item.NotificationMarkText = keyData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case MenuTileNotifyType.名称:
|
|
|
|
|
{
|
|
|
|
|
item.Text = LangProxy.ToLang(keyData);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RefreshMainMenuNotify(Dictionary<string, string> mainChange)
|
|
|
|
|
{
|
|
|
|
|
foreach (var key in mainChange.Keys)
|
|
|
|
|
{
|
|
|
|
|
foreach (var icTemp in menuItemPanel.Items)
|
|
|
|
|
{
|
|
|
|
|
var ic = icTemp as ItemContainer;
|
|
|
|
|
if (ic != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (var itemObj in ic.SubItems)
|
|
|
|
|
{
|
|
|
|
|
var item = itemObj as MetroTileItem;
|
|
|
|
|
ModuleMenu mo = item.Tag as ModuleMenu;
|
|
|
|
|
if (mo.Id == key)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(mainChange[key]))
|
|
|
|
|
{
|
|
|
|
|
//去除显示
|
|
|
|
|
item.NotificationMarkText = string.Empty;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.NotificationMarkText = LangProxy.ToLang("新");
|
|
|
|
|
item.NotificationMarkSize = 20;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void MenuChangedEventNotify(object sender , MsgEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
if(args.Data is List<ModuleMenu>)
|
|
|
|
|
{
|
|
|
|
|
var data = args.Data as List<ModuleMenu>;
|
|
|
|
|
|
|
|
|
|
this._dataSource = data;
|
|
|
|
|
|
|
|
|
|
OnResize(EventArgs.Empty);
|
|
|
|
|
|
|
|
|
|
Initialize();
|
|
|
|
|
|
|
|
|
|
RefreshUi();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnResize(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
|
|
|
|
|
|
this.Rows = 5;
|
|
|
|
|
|
|
|
|
|
//默认按钮宽度
|
|
|
|
|
this.DefaultWidth = (base.Width - 40) / this.Cols - 1;
|
|
|
|
|
//左侧工具栏的固定宽度40,根据用户容器的大小修正宽度和高度
|
|
|
|
|
this.FixItemWidth = base.Width - (this.DefaultWidth * this.Cols);
|
|
|
|
|
//默认按钮高度
|
|
|
|
|
if (this.mainPanel.Visible)
|
|
|
|
|
{
|
|
|
|
|
this.DefaultHeight = (base.Height) / this.Rows;
|
|
|
|
|
this.FixItemHeight = base.Height - this.DefaultHeight * this.Rows;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
base.OnResize(e);
|
|
|
|
|
|
|
|
|
|
//是否显示工具区:1-不显示 0-显示
|
|
|
|
|
bool hideTools = Global.Instance.GlobalConfigBoolValue(ConfigConstant.SYSTEM_NOT_ALLOW_TOOLS_SHOW , false);
|
|
|
|
|
if (hideTools)
|
|
|
|
|
{
|
|
|
|
|
//默认按钮宽度
|
|
|
|
|
this.DefaultWidth = (this.Width) / this.Cols;
|
|
|
|
|
//左侧工具栏的固定宽度40,根据用户容器的大小修正宽度和高度
|
|
|
|
|
this.FixItemWidth = this.Width - (this.DefaultWidth * this.Cols);
|
|
|
|
|
}
|
|
|
|
|
this.toolsItemPanel.Visible = !hideTools;
|
|
|
|
|
|
|
|
|
|
//是否显示结账区:1-不显示 0-显示
|
|
|
|
|
bool hideBills = Global.Instance.GlobalConfigBoolValue(ConfigConstant.SYSTEM_NOT_ALLOW_BILLS_SHOW , false);
|
|
|
|
|
this.billItemPanel.Visible = !hideBills;
|
|
|
|
|
|
|
|
|
|
//是否显示主菜单:1-不显示 0-显示
|
|
|
|
|
bool hideMenus = Global.Instance.GlobalConfigBoolValue(ConfigConstant.SYSTEM_NOT_ALLOW_MENUS_SHOW , false);
|
|
|
|
|
if (hideMenus)
|
|
|
|
|
{
|
|
|
|
|
this.Rows = 4;
|
|
|
|
|
//默认按钮高度
|
|
|
|
|
this.DefaultHeight = (this.Height) / this.Rows;
|
|
|
|
|
this.FixItemHeight = this.Height - this.DefaultHeight * this.Rows;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.menuPanel.Visible = !hideMenus;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Initialize()
|
|
|
|
|
{
|
|
|
|
|
this.hideItemPanel.Visible = this.menuPanel.Visible;
|
|
|
|
|
//this.billItemPanel.Visible = this.menuPanel.Visible;
|
|
|
|
|
|
|
|
|
|
//左侧工具栏的固定宽度
|
|
|
|
|
this.hideItemPanel.Width = this.toolsItemPanel.Width = this.FixItemWidth - 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//默认Size
|
|
|
|
|
this.DefaultItemSize = new Size(DefaultWidth , DefaultHeight);
|
|
|
|
|
|
|
|
|
|
this.keyboardItemPanel.BackgroundStyle.Padding = 0;
|
|
|
|
|
this.keyboardItemPanel.Width = DefaultWidth * 4;
|
|
|
|
|
|
|
|
|
|
this.menuPanel.Height = DefaultHeight + FixItemHeight;
|
|
|
|
|
|
|
|
|
|
this.hideItemPanel.BackgroundStyle.Padding = 0;
|
|
|
|
|
this.ButtonItemSimple.TileSize = new Size(FixItemWidth , this.menuPanel.Height);
|
|
|
|
|
|
|
|
|
|
this.billItemPanel.BackgroundStyle.Padding = 0;
|
|
|
|
|
this.billItemPanel.Height = this.DefaultHeight - 1;
|
|
|
|
|
|
|
|
|
|
if(!this.menuPanel.Visible && this.billItemPanel.Visible)
|
|
|
|
|
{
|
|
|
|
|
this.Height -= 5;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnLoad(e);
|
|
|
|
|
|
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
|
|
|
|
|
|
this.ButtonItemSimple.Tag = new Tuple<string , int>("Show", this.menuPanel.Height);
|
|
|
|
|
//注册菜单隐藏和呈现事件
|
|
|
|
|
this.ButtonItemSimple.MouseDown += ButtonShowOrHideMouseDown;
|
|
|
|
|
|
|
|
|
|
Initialize();
|
|
|
|
|
|
|
|
|
|
var resources = new List<Resources>();
|
|
|
|
|
//获取数据库的数据
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
this._dataSource = db.Query<ModuleMenu>().ToList();
|
|
|
|
|
|
|
|
|
|
resources = db.Query<Resources>().ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._dataSource.ForEach(x => {
|
|
|
|
|
|
|
|
|
|
var resource = resources.FirstOrDefault(r => r.Id == x.ResourceId);
|
|
|
|
|
|
|
|
|
|
if (resource != null)
|
|
|
|
|
{
|
|
|
|
|
x.PermissionCode = string.IsNullOrEmpty(resource.PermissionCode) ? string.Empty : resource.PermissionCode;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//如果数据库数据为空
|
|
|
|
|
if (this._dataSource == null)
|
|
|
|
|
{
|
|
|
|
|
this._dataSource = new List<ModuleMenu>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RefreshUi();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ButtonShowOrHideMouseDown(object sender , MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var item = sender as MetroTileItem;
|
|
|
|
|
|
|
|
|
|
var attr = item.Tag as Tuple<string , int>;
|
|
|
|
|
|
|
|
|
|
if ("Show".Equals(attr.Item1))
|
|
|
|
|
{
|
|
|
|
|
this.mainPanel.Dock = DockStyle.None;
|
|
|
|
|
this.mainPanel.Visible = false;
|
|
|
|
|
item.Tag = new Tuple<string , int>("Hide" , this.Height);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.mainPanel.Dock = DockStyle.Fill;
|
|
|
|
|
this.mainPanel.Visible = true;
|
|
|
|
|
item.Tag = new Tuple<string , int>("Show" , this.menuPanel.Height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.Height = attr.Item2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void RefreshUi()
|
|
|
|
|
{
|
|
|
|
|
//初始化主菜单
|
|
|
|
|
BuilderMainMenuItemPanel(null);
|
|
|
|
|
//初始化结账区
|
|
|
|
|
BuilderBillItemPanel(null);
|
|
|
|
|
//初始化工具区
|
|
|
|
|
BuilderToolsItemPanel(null);
|
|
|
|
|
//初始化键盘区
|
|
|
|
|
BuilderKeyboardItemPanel(null);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Font GetFont(string fontSize)
|
|
|
|
|
{
|
|
|
|
|
Font result = Constant.DEFAULT_FONT;
|
|
|
|
|
|
|
|
|
|
ModuleFont font = ModuleFont.默认;
|
|
|
|
|
Enum.TryParse<ModuleFont>(fontSize , out font);
|
|
|
|
|
switch (font)
|
|
|
|
|
{
|
|
|
|
|
case ModuleFont.默认:
|
|
|
|
|
{
|
|
|
|
|
result = Constant.DEFAULT_FONT;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ModuleFont.正常:
|
|
|
|
|
{
|
|
|
|
|
result = Constant.NORMAL_FONT;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ModuleFont.小字:
|
|
|
|
|
{
|
|
|
|
|
result = Constant.SMALL_FONT;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ModuleFont.大字:
|
|
|
|
|
{
|
|
|
|
|
result = Constant.BIG_FONT;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化主菜单
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void BuilderMainMenuItemPanel(ModuleMenu module)
|
|
|
|
|
{
|
|
|
|
|
this.menuItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
ItemContainer ic = new ItemContainer();
|
|
|
|
|
ic.MultiLine = false;
|
|
|
|
|
ic.ItemSpacing = 0;
|
|
|
|
|
ic.TitleStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
|
|
|
|
|
//加载菜单显示区域为主菜单的数据
|
|
|
|
|
var lists = this._dataSource.FindAll(x => string.IsNullOrEmpty(x.ParentId) && ModuleArea.主菜单.ToString().Equals(x.Area));
|
|
|
|
|
lists.Sort((x , y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
int inx = 0;
|
|
|
|
|
MetroTileItem first = null;
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
|
|
|
|
|
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
|
|
|
|
|
item.Checked = false;
|
|
|
|
|
|
|
|
|
|
item.OptionGroup = "MainMenu";
|
|
|
|
|
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang( string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
|
|
|
|
|
item.TileSize = new Size(this.DefaultItemSize.Width,this.DefaultItemSize.Height + FixItemHeight);
|
|
|
|
|
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
item.CheckedChanged += OnMainControlCheckedChanged;
|
|
|
|
|
|
|
|
|
|
if (module != null && module.Id.Equals(entity.Id))
|
|
|
|
|
{
|
|
|
|
|
this._selectedItem = item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//保留第一项的选择机会
|
|
|
|
|
if (first == null)
|
|
|
|
|
{
|
|
|
|
|
first = item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ic.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
inx++;
|
|
|
|
|
}
|
|
|
|
|
this.menuItemPanel.Items.Add(ic);
|
|
|
|
|
this.menuItemPanel.Invalidate();
|
|
|
|
|
|
|
|
|
|
//没有匹配到具体的模块,将第一个主菜单选中
|
|
|
|
|
if (this._selectedItem == null)
|
|
|
|
|
{
|
|
|
|
|
this._selectedItem = first;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._selectedItem != null)
|
|
|
|
|
{
|
|
|
|
|
this._selectedItem.Checked = true;
|
|
|
|
|
|
|
|
|
|
//当前选择的模块为父节点,构建二级菜单
|
|
|
|
|
BuilderSubMenuItemPanel(this._selectedItem.Tag as ModuleMenu);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//修正隐藏功能按钮外观
|
|
|
|
|
this.ChangedCornerType(this.ButtonItemSimple, this._selectedItem.Tag as ModuleMenu);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnMainControlCheckedChanged(object sender , EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MetroTileItem item = (MetroTileItem)sender;
|
|
|
|
|
var entity = item.Tag as ModuleMenu;
|
|
|
|
|
if (item.Checked)
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color2);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color2);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BuilderSubMenuItemPanel(ModuleMenu parent)
|
|
|
|
|
{
|
|
|
|
|
var layout = (ModuleLayout)parent.Layout;
|
|
|
|
|
|
|
|
|
|
switch (layout)
|
|
|
|
|
{
|
|
|
|
|
case ModuleLayout.清新布局:
|
|
|
|
|
{
|
|
|
|
|
FreshLayoutSubMenuItemPanel(parent);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ModuleLayout.经典布局:
|
|
|
|
|
{
|
|
|
|
|
ClassicLayoutSubMenuItemPanel(parent);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ModuleLayout.自定义布局:
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
DefaultLayoutSubMenuItemPanel(parent);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ClassicLayoutSubMenuItemPanel(ModuleMenu parent)
|
|
|
|
|
{
|
|
|
|
|
this.subMenuItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
//当前模块下已经选择功能
|
|
|
|
|
var lists = this._dataSource.FindAll(x => x.ParentId == parent.Id);
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
int inx = 0;
|
|
|
|
|
|
|
|
|
|
ItemContainer container = new ItemContainer();
|
|
|
|
|
container.BackgroundStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
container.MultiLine = true;
|
|
|
|
|
container.ItemSpacing = 0;
|
|
|
|
|
|
|
|
|
|
var items = new List<BaseItem>();
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
item.OptionGroup = "SubMenu";
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang( string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
switch (inx++)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2, DefaultHeight * 2);
|
|
|
|
|
items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
case 4:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = this.DefaultItemSize;
|
|
|
|
|
|
|
|
|
|
if ((entity.OrderNo) % 2 == 0)
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new Size(this.DefaultItemSize.Width - 2, this.DefaultItemSize.Height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
container.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
if (container.SubItems.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
container.FixedSize = new System.Drawing.Size(DefaultWidth * 2 - 2, DefaultHeight * 2);
|
|
|
|
|
items.Add(container);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2, DefaultHeight);
|
|
|
|
|
items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = this.DefaultItemSize;
|
|
|
|
|
if ((entity.OrderNo) % 7 == 0 || (entity.OrderNo) % 11 == 0)
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new Size(this.DefaultItemSize.Width - 2, this.DefaultItemSize.Height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
this.subMenuItemPanel.Items.AddRange(items.ToArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.subMenuItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FreshLayoutSubMenuItemPanel(ModuleMenu parent)
|
|
|
|
|
{
|
|
|
|
|
this.subMenuItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
//当前模块下已经选择功能
|
|
|
|
|
var lists = this._dataSource.FindAll(x => x.ParentId == parent.Id);
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
int inx = 0;
|
|
|
|
|
|
|
|
|
|
ItemContainer container = new ItemContainer();
|
|
|
|
|
container.BackgroundStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
container.MultiLine = true;
|
|
|
|
|
container.ItemSpacing = 0;
|
|
|
|
|
|
|
|
|
|
var items = new List<BaseItem>();
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
item.OptionGroup = "SubMenu";
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang(string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
switch (inx++)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2, DefaultHeight * 2);
|
|
|
|
|
items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
case 2:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2, DefaultHeight);
|
|
|
|
|
|
|
|
|
|
if ((entity.OrderNo) % 2 == 0)
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2 - 2, DefaultHeight);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
container.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
if (container.SubItems.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
container.FixedSize = new System.Drawing.Size(DefaultWidth * 2 - 2, DefaultHeight * 2);
|
|
|
|
|
items.Add(container);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new System.Drawing.Size(DefaultWidth * 2, DefaultHeight);
|
|
|
|
|
if ((entity.OrderNo) % 4 == 0 || (entity.OrderNo) % 6 == 0)
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new Size(DefaultWidth * 2 - 2, DefaultHeight);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
this.subMenuItemPanel.Items.AddRange(items.ToArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.subMenuItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DefaultLayoutSubMenuItemPanel(ModuleMenu parent)
|
|
|
|
|
{
|
|
|
|
|
this.subMenuItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
ItemContainer ic = new ItemContainer();
|
|
|
|
|
ic.MultiLine = true;
|
|
|
|
|
ic.ItemSpacing = 0;
|
|
|
|
|
ic.TitleStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
|
|
|
|
|
//当前模块下已经选择功能
|
|
|
|
|
var lists = this._dataSource.FindAll(x => x.ParentId == parent.Id);
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
|
|
|
|
|
item.OptionGroup = "SubMenu";
|
|
|
|
|
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang(string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
|
|
|
|
|
item.TileSize = this.DefaultItemSize;
|
|
|
|
|
|
|
|
|
|
if ((entity.OrderNo + 1) % 4 == 0)
|
|
|
|
|
{
|
|
|
|
|
item.TileSize = new Size(this.DefaultItemSize.Width - 2, this.DefaultItemSize.Height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
|
|
|
|
|
ic.SubItems.Add(item);
|
|
|
|
|
}
|
|
|
|
|
this.subMenuItemPanel.Items.Add(ic);
|
|
|
|
|
this.subMenuItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ChangedCornerType(MetroTileItem item , ModuleMenu entity)
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.BorderWidth = 1;
|
|
|
|
|
item.TileStyle.CornerDiameter = 6;
|
|
|
|
|
|
|
|
|
|
//显示样式
|
|
|
|
|
var value = Global.Instance.GlobalConfigStringValue(ConfigConstant.SYSTEM_SHOW_MENU_STYLE , CornerType.圆角.ToString());
|
|
|
|
|
CornerType cornerType = CornerType.默认;
|
|
|
|
|
Enum.TryParse(value , out cornerType);
|
|
|
|
|
switch (cornerType)
|
|
|
|
|
{
|
|
|
|
|
case CornerType.默认:
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.CornerType = eCornerType.Square;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case CornerType.圆角:
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.CornerType = eCornerType.Rounded;
|
|
|
|
|
item.TileStyle.BorderColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case CornerType.棱角:
|
|
|
|
|
{
|
|
|
|
|
item.TileStyle.CornerType = eCornerType.Diagonal;
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;// Translator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent; //Translator.FromHtml(entity.Color1);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化结账区
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void BuilderBillItemPanel(ModuleMenu module)
|
|
|
|
|
{
|
|
|
|
|
this.billItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
ItemContainer ic = new ItemContainer();
|
|
|
|
|
ic.MultiLine = false;
|
|
|
|
|
ic.ItemSpacing = 0;
|
|
|
|
|
ic.TitleStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
|
|
|
|
|
//加载菜单显示区域为结账区的数据
|
|
|
|
|
var lists = this._dataSource.FindAll(x => !string.IsNullOrEmpty(x.ParentId) && ModuleArea.结账区.ToString().Equals(x.Area));
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
|
|
|
|
|
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
|
|
|
|
|
item.Checked = false;
|
|
|
|
|
|
|
|
|
|
item.OptionGroup = "Bill";
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang(string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
|
|
|
|
|
item.TileSize = this.DefaultItemSize;
|
|
|
|
|
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
|
|
|
|
|
ic.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
if (module != null && module.Id.Equals(entity.Id))
|
|
|
|
|
{
|
|
|
|
|
item.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.billItemPanel.Items.Add(ic);
|
|
|
|
|
this.billItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化工具区
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void BuilderToolsItemPanel(ModuleMenu module)
|
|
|
|
|
{
|
|
|
|
|
this.toolsItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
ItemContainer ic = new ItemContainer();
|
|
|
|
|
ic.MultiLine = true;
|
|
|
|
|
ic.ItemSpacing = 0;
|
|
|
|
|
ic.TitleStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
|
|
|
|
|
//加载菜单显示区域为工具区的数据
|
|
|
|
|
var lists = this._dataSource.FindAll(x => !string.IsNullOrEmpty(x.ParentId) && ModuleArea.工具区.ToString().Equals(x.Area));
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
if (entity.OrderNo == 4) break;
|
|
|
|
|
|
|
|
|
|
this.ButtonItemSimple.TileSize = new Size(FixItemWidth, this.menuPanel.Height);
|
|
|
|
|
this.ButtonItemSimple.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
this.ButtonItemSimple.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
this.ButtonItemSimple.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
this.ButtonItemSimple.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
this.ButtonItemSimple.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
this.ButtonItemSimple.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
this.ButtonItemSimple.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
|
|
|
|
|
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
|
|
|
|
|
item.Checked = false;
|
|
|
|
|
|
|
|
|
|
item.OptionGroup = "Tools";
|
|
|
|
|
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang(string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
item.TileSize = new Size(FixItemWidth , DefaultHeight);
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
|
|
|
|
|
ic.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
if (module != null && module.Id.Equals(entity.Id))
|
|
|
|
|
{
|
|
|
|
|
item.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.toolsItemPanel.Items.Add(ic);
|
|
|
|
|
this.toolsItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化键盘区
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void BuilderKeyboardItemPanel(ModuleMenu module)
|
|
|
|
|
{
|
|
|
|
|
this.keyboardItemPanel.Items.Clear();
|
|
|
|
|
|
|
|
|
|
ItemContainer ic = new ItemContainer();
|
|
|
|
|
ic.MultiLine = true;
|
|
|
|
|
ic.ItemSpacing = 0;
|
|
|
|
|
ic.TitleStyle.Class = "MetroTileGroupTitle";
|
|
|
|
|
|
|
|
|
|
//加载菜单显示区域为结账区的数据
|
|
|
|
|
var lists = this._dataSource.FindAll(x => !string.IsNullOrEmpty(x.ParentId) && ModuleArea.键盘区.ToString().Equals(x.Area));
|
|
|
|
|
lists.Sort((x, y) => (x.OrderNo.CompareTo(y.OrderNo)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (ModuleMenu entity in lists)
|
|
|
|
|
{
|
|
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
|
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
|
|
|
|
|
|
|
|
|
|
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
|
|
|
|
|
item.Checked = false;
|
|
|
|
|
|
|
|
|
|
item.TileStyle.Font = GetFont(entity.FontSize);
|
|
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
|
|
|
item.Text = LangProxy.ToLang(string.IsNullOrEmpty(entity.Alias) ? entity.Name : entity.Alias);
|
|
|
|
|
|
|
|
|
|
item.TileSize = this.DefaultItemSize;
|
|
|
|
|
|
|
|
|
|
item.TileStyle.TextColor = ColorTranslator.FromHtml(entity.Color3);
|
|
|
|
|
|
|
|
|
|
item.TileStyle.BackColor = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BackColor2 = ColorTranslator.FromHtml(entity.Color1);
|
|
|
|
|
item.TileStyle.BorderColor = Color.Transparent;
|
|
|
|
|
item.TileStyle.BorderColor2 = Color.Transparent;
|
|
|
|
|
|
|
|
|
|
this.ChangedCornerType(item , entity);
|
|
|
|
|
|
|
|
|
|
item.Tag = entity;
|
|
|
|
|
|
|
|
|
|
item.MouseDown += OnMainControlMouseDown;
|
|
|
|
|
//item.Click += OnMainControlItemClick;
|
|
|
|
|
|
|
|
|
|
ic.SubItems.Add(item);
|
|
|
|
|
|
|
|
|
|
if (module != null && module.Id.Equals(entity.Id))
|
|
|
|
|
{
|
|
|
|
|
item.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.keyboardItemPanel.Items.Add(ic);
|
|
|
|
|
this.keyboardItemPanel.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public event MenuEventHandler MenuMouseDown;
|
|
|
|
|
protected virtual void OnMenuMouseDown(MenuEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MenuMouseDown?.Invoke(this , e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnMainControlMouseDown(object sender , MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MetroTileItem item = (MetroTileItem)sender;
|
|
|
|
|
item.Checked = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var module = item.Tag as ModuleMenu;
|
|
|
|
|
ModuleArea area = ModuleArea.主菜单;
|
|
|
|
|
Enum.TryParse(module.Area , out area);
|
|
|
|
|
|
|
|
|
|
switch (area)
|
|
|
|
|
{
|
|
|
|
|
case ModuleArea.主菜单:
|
|
|
|
|
{
|
|
|
|
|
item.Checked = true;
|
|
|
|
|
//当前选择的模块为父节点,构建二级菜单
|
|
|
|
|
BuilderSubMenuItemPanel(module);
|
|
|
|
|
|
|
|
|
|
//请求title变更通知
|
|
|
|
|
MsgEvent.Send(Constant.MSGCENTER_NOTIFY, new MsgEntity() { Subject = Constant.MENU_TITLE_CHANGED_NOTIFY, Operate = MsgEntityOperate.请求 });
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
this.OnMenuMouseDown(new MenuEventArgs(module.KeyCode , module.KeyData , module));
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public delegate void MenuEventHandler(object sender , MenuEventArgs e);
|
|
|
|
|
|
|
|
|
|
public class MenuEventArgs : EventArgs
|
|
|
|
|
{
|
|
|
|
|
public readonly string KeyCode;
|
|
|
|
|
|
|
|
|
|
public readonly object KeyData;
|
|
|
|
|
|
|
|
|
|
public readonly string PermissionCode;
|
|
|
|
|
|
|
|
|
|
public readonly ModuleMenu ModuleMenu;
|
|
|
|
|
|
|
|
|
|
public MenuEventArgs(string keyCode,object keyData,ModuleMenu moduleMenu)
|
|
|
|
|
{
|
|
|
|
|
this.KeyCode = keyCode;
|
|
|
|
|
|
|
|
|
|
this.KeyData = keyData;
|
|
|
|
|
|
|
|
|
|
this.ModuleMenu = moduleMenu;
|
|
|
|
|
|
|
|
|
|
this.PermissionCode = moduleMenu == null ? string.Empty : moduleMenu.PermissionCode;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// /////////////////////////////快捷菜单使用///////////////////////////////////////
|
|
|
|
|
/// </summary>
|
|
|
|
|
public readonly object Target;
|
|
|
|
|
|
|
|
|
|
public readonly int Index;
|
|
|
|
|
|
|
|
|
|
public readonly ShortcutMenu ShortcutMenu;
|
|
|
|
|
public MenuEventArgs(object sender ,int index, string keyCode , object keyData , ShortcutMenu shortcutMenu)
|
|
|
|
|
{
|
|
|
|
|
this.KeyCode = keyCode;
|
|
|
|
|
|
|
|
|
|
this.KeyData = keyData;
|
|
|
|
|
|
|
|
|
|
this.Target = sender;
|
|
|
|
|
|
|
|
|
|
this.Index = index;
|
|
|
|
|
|
|
|
|
|
this.ShortcutMenu = shortcutMenu;
|
|
|
|
|
|
|
|
|
|
this.PermissionCode = shortcutMenu == null ? string.Empty : shortcutMenu.PermissionCode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|