Beispiel #1
0
 public GroupMenu(OmMenu p_parent)
 {
     InitializeComponent();
     _parent  = p_parent;
     _tb.Text = MenuKit.GetMenuPath(p_parent);
     _lv.Data = MenuKit.LoadGroupMenus(p_parent);
 }
Beispiel #2
0
 /// <summary>
 /// 加载分组菜单下的菜单项
 /// </summary>
 /// <param name="p_parentMenu"></param>
 /// <returns></returns>
 public static Nl <OmMenu> LoadGroupMenus(OmMenu p_parentMenu)
 {
     // 确保子菜单项的顺序
     return((from om in _leaveMenus
             where om.ParentID == p_parentMenu.ID
             select om).ToNl());
 }
Beispiel #3
0
        void OnOpen(object sender, Mi e)
        {
            var    row  = _fv.Data.To <Menu>();
            OmMenu menu = new OmMenu(
                ID: row.ID,
                Name: row.Name,
                Icon: row.Icon,
                ViewName: row.ViewName,
                Params: row.Params);

            MenuKit.OpenMenu(menu);
        }
Beispiel #4
0
 void OnItemClick(object sender, ItemClickArgs e)
 {
     Kit.RunAsync(() =>
     {
         OmMenu menu = (OmMenu)e.Data;
         if (menu.IsGroup)
         {
             _host.NaviTo(new GroupMenu(menu));
         }
         else
         {
             MenuKit.OpenMenu(menu);
         }
     });
 }
Beispiel #5
0
 /// <summary>
 /// 递归判断是否存在下级菜单
 /// </summary>
 /// <param name="p_parentMenu"></param>
 /// <returns></returns>
 static bool IsExistChild(OmMenu p_parentMenu)
 {
     foreach (var om in _leaveMenus)
     {
         if (om.ParentID == p_parentMenu.ID)
         {
             if (om.IsGroup)
             {
                 return(IsExistChild(om));
             }
             return(true);
         }
     }
     return(false);
 }
Beispiel #6
0
        /// <summary>
        /// 打开菜单项窗口,可以由点击菜单项或直接代码构造Menu的方式调用
        /// </summary>
        /// <param name="p_menu">OmMenu实例</param>
        /// <returns>返回打开的窗口或视图,null表示打开失败</returns>
        public static object OpenMenu(OmMenu p_menu)
        {
            if (p_menu == null)
            {
                Kit.Msg("打开菜单项不可为空!");
                return(null);
            }

            Type tp = Kit.GetViewType(p_menu.ViewName);

            if (tp == null)
            {
                Kit.Msg(string.Format("打开菜单时未找到视图【{0}】!", p_menu.ViewName));
                return(null);
            }

            Icons icon;

            Enum.TryParse(p_menu.Icon, out icon);
            object win = Kit.OpenWin(tp, p_menu.Name, icon, string.IsNullOrEmpty(p_menu.Params) ? null : p_menu.Params);

            // 保存点击次数,用于确定哪些是收藏菜单
            if (win != null)
            {
                Task.Run(() =>
                {
                    if (AtModel.GetScalar <int>($"select count(id) from ommenu where id=\"{p_menu.ID}\"") > 0)
                    {
                        // 点击次数保存在客户端
                        Dict dt      = new Dict();
                        dt["userid"] = Kit.UserID;
                        dt["menuid"] = p_menu.ID;
                        int cnt      = AtState.Exec("update menufav set clicks=clicks+1 where userid=:userid and menuid=:menuid", dt);
                        if (cnt == 0)
                        {
                            AtState.Exec("insert into menufav (userid, menuid, clicks) values (:userid, :menuid, 1)", dt);
                        }
                    }
                    // 收集使用频率
                    //await AtAuth.ClickMenu(p_menu.ID);
                });
            }
            return(win);
        }
Beispiel #7
0
        /// <summary>
        /// 获取给定菜单的路径
        /// </summary>
        /// <param name="p_menu"></param>
        /// <returns></returns>
        public static string GetMenuPath(OmMenu p_menu)
        {
            StringBuilder sb = new StringBuilder();

            if (p_menu != null)
            {
                sb.AppendFormat(" > {0}", p_menu.Name);
                long?parentID = p_menu.ParentID;
                while (parentID.HasValue)
                {
                    OmMenu parent = QueryMenu(parentID.Value);
                    if (parent == null)
                    {
                        break;
                    }
                    sb.Insert(0, string.Format(" > {0}", parent.Name));
                    parentID = parent.ParentID;
                }
            }
            return(sb.ToString());
        }