From 3f95385f6a13a5995a71bf1eee05edb335057ce7 Mon Sep 17 00:00:00 2001 From: DB p Date: Wed, 20 Oct 2021 12:33:23 +0900 Subject: [PATCH 1/2] - Change Tray Menu to context menu for design --- Flow.Launcher/MainWindow.xaml.cs | 58 +++++++++++++++++++------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 057c3f07d09..0c21733919a 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -30,6 +30,7 @@ public partial class MainWindow private bool isProgressBarStoryboardPaused; private Settings _settings; private NotifyIcon _notifyIcon; + private ContextMenu contextMenu; private MainViewModel _viewModel; #endregion @@ -159,14 +160,19 @@ private void InitializePosition() private void UpdateNotifyIconText() { - var menu = _notifyIcon.ContextMenuStrip; - var open = menu.Items[0]; - var setting = menu.Items[1]; - var exit = menu.Items[2]; - - open.Text = InternationalizationManager.Instance.GetTranslation("iconTrayOpen"); - setting.Text = InternationalizationManager.Instance.GetTranslation("iconTraySettings"); - exit.Text = InternationalizationManager.Instance.GetTranslation("iconTrayExit"); + var menu = contextMenu; + + var header = new MenuItem() { Header = "Flow Launcher", IsEnabled = false }; + var open = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") }; + var settings = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") }; + var exit = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit") }; + menu.Items[0] = header; + menu.Items[1] = open; + menu.Items[2] = settings; + menu.Items[3] = exit; + open.Click += (o, e) => Visibility = Visibility.Visible; + settings.Click += (o, e) => App.API.OpenSettingDialog(); + exit.Click += (o, e) => Close(); } private void InitializeNotifyIcon() @@ -178,29 +184,33 @@ private void InitializeNotifyIcon() Visible = !_settings.HideNotifyIcon }; var menu = new ContextMenuStrip(); - var items = menu.Items; + contextMenu = new ContextMenu(); + + MenuItem header = new MenuItem() { Header = "Flow Launcher", IsEnabled = false }; + MenuItem open = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") }; + MenuItem settings = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") }; + MenuItem exit = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit") }; - var open = items.Add(InternationalizationManager.Instance.GetTranslation("iconTrayOpen")); open.Click += (o, e) => Visibility = Visibility.Visible; - var setting = items.Add(InternationalizationManager.Instance.GetTranslation("iconTraySettings")); - setting.Click += (o, e) => App.API.OpenSettingDialog(); - var exit = items.Add(InternationalizationManager.Instance.GetTranslation("iconTrayExit")); + settings.Click += (o, e) => App.API.OpenSettingDialog(); exit.Click += (o, e) => Close(); + contextMenu.Items.Add(header); + contextMenu.Items.Add(open); + contextMenu.Items.Add(settings); + contextMenu.Items.Add(exit); - _notifyIcon.ContextMenuStrip = menu; + _notifyIcon.ContextMenuStrip = menu; /*it need for close the context menu. if not, context menu can't close. */ _notifyIcon.MouseClick += (o, e) => { - if (e.Button == MouseButtons.Left) + switch (e.Button) { - if (menu.Visible) - { - menu.Close(); - } - else - { - var p = System.Windows.Forms.Cursor.Position; - menu.Show(p); - } + case MouseButtons.Left: + _viewModel.ToggleFlowLauncher(); + break; + + case MouseButtons.Right: + contextMenu.IsOpen = true; + break; } }; } From 520510d58bdef4168b5200e5c2f8e72b03572330 Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Tue, 26 Oct 2021 21:49:00 -0500 Subject: [PATCH 2/2] Reorganize code --- Flow.Launcher/MainWindow.xaml.cs | 40 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 0c21733919a..8cc6f6c4376 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -11,6 +11,7 @@ using Flow.Launcher.Helper; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.ViewModel; +using Microsoft.AspNetCore.Authorization; using Application = System.Windows.Application; using Screen = System.Windows.Forms.Screen; using ContextMenuStrip = System.Windows.Forms.ContextMenuStrip; @@ -161,18 +162,9 @@ private void InitializePosition() private void UpdateNotifyIconText() { var menu = contextMenu; - - var header = new MenuItem() { Header = "Flow Launcher", IsEnabled = false }; - var open = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") }; - var settings = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") }; - var exit = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit") }; - menu.Items[0] = header; - menu.Items[1] = open; - menu.Items[2] = settings; - menu.Items[3] = exit; - open.Click += (o, e) => Visibility = Visibility.Visible; - settings.Click += (o, e) => App.API.OpenSettingDialog(); - exit.Click += (o, e) => Close(); + ((MenuItem)menu.Items[1]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen"); + ((MenuItem)menu.Items[2]).Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings"); + ((MenuItem)menu.Items[3]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit"); } private void InitializeNotifyIcon() @@ -183,13 +175,25 @@ private void InitializeNotifyIcon() Icon = Properties.Resources.app, Visible = !_settings.HideNotifyIcon }; - var menu = new ContextMenuStrip(); contextMenu = new ContextMenu(); - MenuItem header = new MenuItem() { Header = "Flow Launcher", IsEnabled = false }; - MenuItem open = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") }; - MenuItem settings = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") }; - MenuItem exit = new MenuItem() { Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit") }; + var header = new MenuItem + { + Header = "Flow Launcher", + IsEnabled = false + }; + var open = new MenuItem + { + Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + }; + var settings = new MenuItem + { + Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") + }; + var exit = new MenuItem + { + Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit") + }; open.Click += (o, e) => Visibility = Visibility.Visible; settings.Click += (o, e) => App.API.OpenSettingDialog(); @@ -199,7 +203,7 @@ private void InitializeNotifyIcon() contextMenu.Items.Add(settings); contextMenu.Items.Add(exit); - _notifyIcon.ContextMenuStrip = menu; /*it need for close the context menu. if not, context menu can't close. */ + _notifyIcon.ContextMenuStrip = new ContextMenuStrip(); // it need for close the context menu. if not, context menu can't close. _notifyIcon.MouseClick += (o, e) => { switch (e.Button)