Implement exit menu.

This commit is contained in:
2020-04-10 19:11:19 +01:00
parent e5415ce609
commit 3b86e719df
5 changed files with 281 additions and 248 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,7 @@
<NativeMenu.Menu> <NativeMenu.Menu>
<NativeMenu> <NativeMenu>
<NativeMenuItem Header="_About" Clicked="OnAboutClicked" /> <NativeMenuItem Header="_Preferences" /> <NativeMenuItem Header="_About" Clicked="OnAboutClicked" /> <NativeMenuItem Header="_Preferences" />
<NativeMenuItem Header="_Quit" /> <NativeMenuItem Header="_Quit" Clicked="OnQuitClicked" />
</NativeMenu> </NativeMenu>
</NativeMenu.Menu> </NativeMenu.Menu>
</Application> </Application>

View File

@@ -57,5 +57,15 @@ namespace Aaru.Gui
mainWindowViewModel.ExecuteAboutCommand(); mainWindowViewModel.ExecuteAboutCommand();
} }
void OnQuitClicked(object sender, EventArgs args)
{
if(!(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ||
!(desktop.MainWindow is MainWindow mainWindow) ||
!(mainWindow.DataContext is MainWindowViewModel mainWindowViewModel))
return;
mainWindowViewModel.ExecuteExitCommand();
}
} }
} }

View File

@@ -20,6 +20,7 @@ namespace Aaru.Gui.ViewModels
EncodingsCommand = ReactiveCommand.Create(ExecuteEncodingsCommand); EncodingsCommand = ReactiveCommand.Create(ExecuteEncodingsCommand);
PluginsCommand = ReactiveCommand.Create(ExecutePluginsCommand); PluginsCommand = ReactiveCommand.Create(ExecutePluginsCommand);
StatisticsCommand = ReactiveCommand.Create(ExecuteStatisticsCommand); StatisticsCommand = ReactiveCommand.Create(ExecuteStatisticsCommand);
ExitCommand = ReactiveCommand.Create(ExecuteExitCommand);
_view = view; _view = view;
} }
@@ -33,6 +34,7 @@ namespace Aaru.Gui.ViewModels
public ReactiveCommand<Unit, Unit> EncodingsCommand { get; } public ReactiveCommand<Unit, Unit> EncodingsCommand { get; }
public ReactiveCommand<Unit, Unit> PluginsCommand { get; } public ReactiveCommand<Unit, Unit> PluginsCommand { get; }
public ReactiveCommand<Unit, Unit> StatisticsCommand { get; } public ReactiveCommand<Unit, Unit> StatisticsCommand { get; }
public ReactiveCommand<Unit, Unit> ExitCommand { get; }
internal void ExecuteAboutCommand() internal void ExecuteAboutCommand()
{ {
@@ -76,5 +78,7 @@ namespace Aaru.Gui.ViewModels
dialog.DataContext = new StatisticsDialogViewModel(dialog); dialog.DataContext = new StatisticsDialogViewModel(dialog);
dialog.ShowDialog(_view); dialog.ShowDialog(_view);
} }
internal void ExecuteExitCommand() => (Application.Current.ApplicationLifetime as ClassicDesktopStyleApplicationLifetime)?.Shutdown();
} }
} }

View File

@@ -11,7 +11,7 @@
<MenuItem Header="_File"> <MenuItem Header="_File">
<MenuItem Header="_Open" /> <Separator /> <MenuItem Header="_Open" /> <Separator />
<MenuItem Header="_Settings" IsVisible="{Binding NativeMenuNotSupported}" /> <Separator /> <MenuItem Header="_Settings" IsVisible="{Binding NativeMenuNotSupported}" /> <Separator />
<MenuItem Header="E_xit" IsVisible="{Binding NativeMenuNotSupported}" /> <MenuItem Header="E_xit" IsVisible="{Binding NativeMenuNotSupported}" Command="{Binding ExitCommand}"/>
</MenuItem> </MenuItem>
<MenuItem Header="_Devices"> <MenuItem Header="_Devices">
<MenuItem Header="_Refresh" /> <MenuItem Header="_Refresh" />