add close roblox option to context menu

This commit is contained in:
bluepilledgreat 2023-10-06 20:43:13 +01:00
parent 5649b464e9
commit 3451623523
4 changed files with 35 additions and 2 deletions

View File

@ -336,6 +336,8 @@ namespace Bloxstrap
return; return;
} }
App.NotifyIcon?.SetProcessId(gameClientPid);
if (App.Settings.Prop.EnableActivityTracking) if (App.Settings.Prop.EnableActivityTracking)
{ {
activityWatcher = new(); activityWatcher = new();

View File

@ -61,6 +61,7 @@
</MenuItem.Header> </MenuItem.Header>
</MenuItem> </MenuItem>
<MenuItem x:Name="LogTracerMenuItem" Header="Open log tracer" Visibility="Collapsed" Click="LogTracerMenuItem_Click" /> <MenuItem x:Name="LogTracerMenuItem" Header="Open log tracer" Visibility="Collapsed" Click="LogTracerMenuItem_Click" />
<MenuItem x:Name="CloseRobloxMenuItem" Header="Close Roblox" Visibility="Collapsed" Click="CloseRobloxMenuItem_Click" />
</ContextMenu> </ContextMenu>
</ui:UiWindow.ContextMenu> </ui:UiWindow.ContextMenu>
</base:WpfUiWindow> </base:WpfUiWindow>

View File

@ -26,14 +26,16 @@ namespace Bloxstrap.UI.Elements.ContextMenu
private LogTracer? _logTracerWindow; private LogTracer? _logTracerWindow;
private ServerInformation? _serverInformationWindow; private ServerInformation? _serverInformationWindow;
private int? _processId;
public MenuContainer(ActivityWatcher? activityWatcher, DiscordRichPresence? richPresenceHandler) public MenuContainer(ActivityWatcher? activityWatcher, DiscordRichPresence? richPresenceHandler, int? processId)
{ {
InitializeComponent(); InitializeComponent();
ApplyTheme(); ApplyTheme();
_activityWatcher = activityWatcher; _activityWatcher = activityWatcher;
_richPresenceHandler = richPresenceHandler; _richPresenceHandler = richPresenceHandler;
_processId = processId;
if (_activityWatcher is not null) if (_activityWatcher is not null)
{ {
@ -47,6 +49,9 @@ namespace Bloxstrap.UI.Elements.ContextMenu
if (_richPresenceHandler is not null) if (_richPresenceHandler is not null)
RichPresenceMenuItem.Visibility = Visibility.Visible; RichPresenceMenuItem.Visibility = Visibility.Visible;
if (_processId is not null)
CloseRobloxMenuItem.Visibility = Visibility.Visible;
VersionTextBlock.Text = $"{App.ProjectName} v{App.Version}"; VersionTextBlock.Text = $"{App.ProjectName} v{App.Version}";
} }
@ -118,5 +123,21 @@ namespace Bloxstrap.UI.Elements.ContextMenu
_logTracerWindow.Activate(); _logTracerWindow.Activate();
} }
private void CloseRobloxMenuItem_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult result = Controls.ShowMessageBox(
"Are you sure you want to close Roblox?",
MessageBoxImage.Warning,
MessageBoxButton.YesNo
);
if (result != MessageBoxResult.Yes)
return;
using Process process = Process.GetProcessById((int)_processId!);
process.CloseMainWindow();
process.Close();
}
} }
} }

View File

@ -16,6 +16,7 @@ namespace Bloxstrap.UI
private ActivityWatcher? _activityWatcher; private ActivityWatcher? _activityWatcher;
private DiscordRichPresence? _richPresenceHandler; private DiscordRichPresence? _richPresenceHandler;
private int? _processId;
EventHandler? _alertClickHandler; EventHandler? _alertClickHandler;
@ -52,6 +53,14 @@ namespace Bloxstrap.UI
if (App.Settings.Prop.ShowServerDetails) if (App.Settings.Prop.ShowServerDetails)
_activityWatcher.OnGameJoin += (_, _) => Task.Run(OnGameJoin); _activityWatcher.OnGameJoin += (_, _) => Task.Run(OnGameJoin);
} }
public void SetProcessId(int processId)
{
if (_processId is not null)
return;
_processId = processId;
}
#endregion #endregion
#region Context menu #region Context menu
@ -62,7 +71,7 @@ namespace Bloxstrap.UI
App.Logger.WriteLine("NotifyIconWrapper::InitializeContextMenu", "Initializing context menu"); App.Logger.WriteLine("NotifyIconWrapper::InitializeContextMenu", "Initializing context menu");
_menuContainer = new(_activityWatcher, _richPresenceHandler); _menuContainer = new(_activityWatcher, _richPresenceHandler, _processId);
_menuContainer.ShowDialog(); _menuContainer.ShowDialog();
} }