- Change Tray Menu to context menu for design

This commit is contained in:
DB p 2021-10-20 12:33:23 +09:00
parent 9a53015786
commit 3f95385f6a

View file

@ -30,6 +30,7 @@ namespace Flow.Launcher
private bool isProgressBarStoryboardPaused;
private Settings _settings;
private NotifyIcon _notifyIcon;
private ContextMenu contextMenu;
private MainViewModel _viewModel;
#endregion
@ -159,14 +160,19 @@ namespace Flow.Launcher
private void UpdateNotifyIconText()
{
var menu = _notifyIcon.ContextMenuStrip;
var open = menu.Items[0];
var setting = menu.Items[1];
var exit = menu.Items[2];
var menu = contextMenu;
open.Text = InternationalizationManager.Instance.GetTranslation("iconTrayOpen");
setting.Text = InternationalizationManager.Instance.GetTranslation("iconTraySettings");
exit.Text = 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") };
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 @@ namespace Flow.Launcher
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;
}
};
}