mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 18:11:27 -07:00
66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using System.Windows;
|
|
using System.Windows.Input;
|
|
using Bloxstrap.UI.Elements.About;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
namespace Bloxstrap.UI.ViewModels.Settings
|
|
{
|
|
public class MainWindowViewModel : NotifyPropertyChangedViewModel
|
|
{
|
|
public ICommand OpenAboutCommand => new RelayCommand(OpenAbout);
|
|
|
|
public ICommand SaveSettingsCommand => new RelayCommand(SaveSettings);
|
|
|
|
public ICommand CloseWindowCommand => new RelayCommand(CloseWindow);
|
|
|
|
public EventHandler? RequestSaveNoticeEvent;
|
|
|
|
public EventHandler? RequestCloseWindowEvent;
|
|
|
|
public bool TestModeEnabled
|
|
{
|
|
get => App.LaunchSettings.TestModeFlag.Active;
|
|
set
|
|
{
|
|
if (value)
|
|
{
|
|
var result = Frontend.ShowMessageBox(Strings.Menu_TestMode_Prompt, MessageBoxImage.Information, MessageBoxButton.YesNo);
|
|
|
|
if (result != MessageBoxResult.Yes)
|
|
return;
|
|
}
|
|
|
|
App.LaunchSettings.TestModeFlag.Active = value;
|
|
}
|
|
}
|
|
|
|
private void OpenAbout() => new MainWindow().ShowDialog();
|
|
|
|
private void CloseWindow() => RequestCloseWindowEvent?.Invoke(this, EventArgs.Empty);
|
|
|
|
private void SaveSettings()
|
|
{
|
|
const string LOG_IDENT = "MainWindowViewModel::SaveSettings";
|
|
|
|
App.Settings.Save();
|
|
App.State.Save();
|
|
App.FastFlags.Save();
|
|
|
|
foreach (var pair in App.PendingSettingTasks)
|
|
{
|
|
var task = pair.Value;
|
|
|
|
if (task.Changed)
|
|
{
|
|
App.Logger.WriteLine(LOG_IDENT, $"Executing pending task '{task}'");
|
|
task.Execute();
|
|
}
|
|
}
|
|
|
|
App.PendingSettingTasks.Clear();
|
|
|
|
RequestSaveNoticeEvent?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
}
|