diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj
index fd2f5f1d9..4be5fc282 100644
--- a/Flow.Launcher/Flow.Launcher.csproj
+++ b/Flow.Launcher/Flow.Launcher.csproj
@@ -104,6 +104,9 @@
+
+
+
diff --git a/Flow.Launcher/Helper/HotKeyMapper.cs b/Flow.Launcher/Helper/HotKeyMapper.cs
index fe25ecf18..01a524160 100644
--- a/Flow.Launcher/Helper/HotKeyMapper.cs
+++ b/Flow.Launcher/Helper/HotKeyMapper.cs
@@ -6,12 +6,13 @@ using NHotkey.Wpf;
using Flow.Launcher.Core.Resource;
using System.Windows;
using Flow.Launcher.ViewModel;
+using Flow.Launcher;
using System.Threading.Tasks;
using System.Threading;
namespace Flow.Launcher.Helper
{
- internal static class HotKeyMapper
+ internal class HotKeyMapper
{
private static Settings settings;
private static MainViewModel mainViewModel;
@@ -27,7 +28,13 @@ namespace Flow.Launcher.Helper
internal static void OnToggleHotkey(object sender, HotkeyEventArgs args)
{
- mainViewModel.ToggleFlowLauncher();
+ if (mainViewModel.gameModeStatus == true)
+ {
+ }
+ else
+ {
+ mainViewModel.ToggleFlowLauncher();
+ }
}
private static void SetHotkey(string hotkeyStr, EventHandler action)
@@ -75,7 +82,7 @@ namespace Flow.Launcher.Helper
{
SetHotkey(hotkey.Hotkey, (s, e) =>
{
- if (mainViewModel.ShouldIgnoreHotkeys())
+ if (mainViewModel.ShouldIgnoreHotkeys() || mainViewModel.gameModeStatus == true)
return;
mainViewModel.MainWindowVisibility = Visibility.Visible;
diff --git a/Flow.Launcher/Images/gamemode.ico b/Flow.Launcher/Images/gamemode.ico
new file mode 100644
index 000000000..27a46a904
Binary files /dev/null and b/Flow.Launcher/Images/gamemode.ico differ
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index 5ca6bdbfd..e5856625c 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -15,6 +15,7 @@
About
Exit
Close
+ Game Mode
Flow Launcher Settings
diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs
index 16e4be8a0..29cced997 100644
--- a/Flow.Launcher/MainWindow.xaml.cs
+++ b/Flow.Launcher/MainWindow.xaml.cs
@@ -164,8 +164,9 @@ namespace Flow.Launcher
{
var menu = contextMenu;
((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");
+ ((MenuItem)menu.Items[2]).Header = InternationalizationManager.Instance.GetTranslation("GameMode");
+ ((MenuItem)menu.Items[3]).Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings");
+ ((MenuItem)menu.Items[4]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit");
}
private void InitializeNotifyIcon()
@@ -187,6 +188,10 @@ namespace Flow.Launcher
{
Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen")
};
+ var gamemode = new MenuItem
+ {
+ Header = InternationalizationManager.Instance.GetTranslation("GameMode")
+ };
var settings = new MenuItem
{
Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings")
@@ -197,10 +202,12 @@ namespace Flow.Launcher
};
open.Click += (o, e) => Visibility = Visibility.Visible;
+ gamemode.Click += (o, e) => GameMode();
settings.Click += (o, e) => App.API.OpenSettingDialog();
exit.Click += (o, e) => Close();
contextMenu.Items.Add(header);
contextMenu.Items.Add(open);
+ contextMenu.Items.Add(gamemode);
contextMenu.Items.Add(settings);
contextMenu.Items.Add(exit);
@@ -220,6 +227,19 @@ namespace Flow.Launcher
};
}
+ public void GameMode()
+ {
+ if (_viewModel.gameModeStatus)
+ {
+ _notifyIcon.Icon = Properties.Resources.app;
+ _viewModel.gameModeStatus = false;
+ }
+ else
+ {
+ _notifyIcon.Icon = Properties.Resources.gamemode;
+ _viewModel.gameModeStatus = true;
+ }
+ }
private void InitProgressbarAnimation()
{
var da = new DoubleAnimation(ProgressBar.X2, ActualWidth + 150,
diff --git a/Flow.Launcher/Properties/Resources.Designer.cs b/Flow.Launcher/Properties/Resources.Designer.cs
index a19716073..43927cb98 100644
--- a/Flow.Launcher/Properties/Resources.Designer.cs
+++ b/Flow.Launcher/Properties/Resources.Designer.cs
@@ -69,5 +69,13 @@ namespace Flow.Launcher.Properties {
return ((System.Drawing.Icon)(obj));
}
}
+ internal static System.Drawing.Icon gamemode
+ {
+ get
+ {
+ object obj = ResourceManager.GetObject("gamemode", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
}
}
diff --git a/Flow.Launcher/Properties/Resources.resx b/Flow.Launcher/Properties/Resources.resx
index 3ae43d89b..2126cb185 100644
--- a/Flow.Launcher/Properties/Resources.resx
+++ b/Flow.Launcher/Properties/Resources.resx
@@ -112,13 +112,16 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Images\gamemode.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs
index 547228ee3..955b3df7a 100644
--- a/Flow.Launcher/ViewModel/MainViewModel.cs
+++ b/Flow.Launcher/ViewModel/MainViewModel.cs
@@ -44,6 +44,7 @@ namespace Flow.Launcher.ViewModel
private readonly History _history;
private readonly UserSelectedRecord _userSelectedRecord;
private readonly TopMostRecord _topMostRecord;
+ private MainWindow _mainWindow;
private CancellationTokenSource _updateSource;
private CancellationToken _updateToken;
@@ -304,6 +305,8 @@ namespace Flow.Launcher.ViewModel
public ResultsViewModel ContextMenu { get; private set; }
public ResultsViewModel History { get; private set; }
+ public bool gameModeStatus = false;
+
private string _queryText;
public string QueryText