Beispiel #1
0
        /// <summary>
        /// Phone模式附加标题右键菜单
        /// </summary>
        /// <param name="p_elem">标题元素</param>
        /// <param name="p_win">所属窗口</param>
        public static void OnPhoneTitleTapped(FrameworkElement p_elem, Win p_win)
        {
            if (p_elem == null || p_win == null)
            {
                return;
            }

            p_elem.RightTapped += (s, e) =>
            {
                if (_menu == null)
                {
                    _menu = new Menu {
                        IsContextMenu = true, Placement = MenuPosition.BottomLeft
                    };
                    var item = new Mi {
                        ID = "取消自启动"
                    };
                    item.Click += (o, a) => Startup.DelAutoStart();
                    _menu.Items.Add(item);

                    item = new Mi {
                        ID = "设置自启动"
                    };
                    item.Click += SetAutoStart;
                    _menu.Items.Add(item);

                    item = new Mi {
                        ID = "系统监视"
                    };
                    item.Click += (o, a) => SysTrace.ShowBox();
                    _menu.Items.Add(item);
                }

                var autoStart = AtState.GetAutoStart();
                if (autoStart != null &&
                    autoStart.WinType == p_win.GetType().AssemblyQualifiedName &&
                    (p_win.Params == null || autoStart.Params == JsonSerializer.Serialize(p_win.Params, JsonOptions.UnsafeSerializer)))
                {
                    _menu.Items[0].Visibility = Visibility.Visible;
                    _menu.Items[1].Visibility = Visibility.Collapsed;
                }
                else
                {
                    _menu.Items[0].Visibility = Visibility.Collapsed;
                    _menu.Items[1].Visibility = Visibility.Visible;
                    _currentWin = p_win;
                }
                _ = _menu.OpenContextMenu(default, p_elem);
Beispiel #2
0
        static void ShowMenu(Point p_pos)
        {
            if (_menu == null)
            {
                _menu = new Menu {
                    IsContextMenu = true
                };
                var item = new Mi {
                    ID = "取消自启动"
                };
                item.Click += (s, a) => Startup.DelAutoStart();
                _menu.Items.Add(item);
                item = new Mi {
                    ID = "设置自启动"
                };
                item.Click += SetAutoStart;
                _menu.Items.Add(item);
                item = new Mi {
                    ID = "恢复窗口默认布局"
                };
                item.Click += ResetWinLayout;
                _menu.Items.Add(item);
                item = new Mi {
                    ID = "关闭其他"
                };
                item.Click += CloseOtherWin;
                _menu.Items.Add(item);
                item = new Mi {
                    ID = "停靠在左侧"
                };
                item.Click += DockLeft;
                _menu.Items.Add(item);
                item = new Mi {
                    ID = "停靠在右侧"
                };
                item.Click += DockRight;
                _menu.Items.Add(item);
            }

            var autoStart = AtState.GetAutoStart();
            Win win       = _currentItem._win;

            if (autoStart != null &&
                win != null &&
                autoStart.WinType == win.GetType().AssemblyQualifiedName &&
                (win.Params == null || autoStart.Params == JsonSerializer.Serialize(win.Params, JsonOptions.UnsafeSerializer)))
            {
                _menu.Items[0].Visibility = Visibility.Visible;
                _menu.Items[1].Visibility = Visibility.Collapsed;
            }
            else
            {
                _menu.Items[0].Visibility = Visibility.Collapsed;
                _menu.Items[1].Visibility = Visibility.Visible;
            }

            if (win != null)
            {
                if (win.AllowResetLayout)
                {
                    _menu.Items[2].Visibility = Visibility.Visible;
                }
                else
                {
                    // 主区内容为Win
                    Tabs tabs = (Tabs)win.GetValue(Win.MainTabsProperty);
                    if (tabs != null &&
                        tabs.Items.Count > 0 &&
                        tabs.Items[0].Content is Win cw &&
                        cw.AllowResetLayout)
                    {
                        _menu.Items[2].Visibility = Visibility.Visible;
                    }
                    else
                    {
                        _menu.Items[2].Visibility = Visibility.Collapsed;
                    }
                }
Beispiel #3
0
        /// <summary>
        /// 加载Windows模式桌面
        /// </summary>
        static void LoadDesktop()
        {
            Desktop desktop = new Desktop();

            // 主页
            if (_homePageType != null)
            {
                Win win = Activator.CreateInstance(_homePageType) as Win;
                if (win != null)
                {
                    if (string.IsNullOrEmpty(win.Title))
                    {
                        win.Title = "主页";
                    }
                    win.Icon        = Icons.主页;
                    desktop.HomeWin = win;
                }
            }

            // 自启动
            AutoStartInfo autoStart;

            if (!string.IsNullOrEmpty(_launchArgs))
            {
                // 带启动参数的自启动
                LaunchFreely(_launchArgs);
                _launchArgs = null;
            }
            else if ((autoStart = AtState.GetAutoStart()) != null)
            {
                // 用户设置的自启动
                bool suc  = false;
                Type type = Type.GetType(autoStart.WinType);
                if (type != null)
                {
                    try
                    {
                        Win win = null;
                        if (string.IsNullOrEmpty(autoStart.Params))
                        {
                            win = (Win)Activator.CreateInstance(type);
                        }
                        else
                        {
                            var par = JsonSerializer.Deserialize(autoStart.Params, Type.GetType(autoStart.ParamsType));
                            win = (Win)Activator.CreateInstance(type, par);
                        }

                        if (win != null)
                        {
                            win.Title = string.IsNullOrEmpty(autoStart.Title) ? "自启动" : autoStart.Title;
                            Icons icon;
                            if (Enum.TryParse(autoStart.Icon, out icon))
                            {
                                win.Icon = icon;
                            }

                            desktop.ShowNewWin(win);
                            suc = true;
                        }
                    }
                    catch { }
                }
                if (!suc)
                {
                    AtState.DelAutoStart();
                }
            }

            if (desktop.MainWin == null)
            {
                desktop.MainWin = desktop.HomeWin;
            }
            SysVisual.RootContent = desktop;
        }