using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using CommunityToolkit.Mvvm.Input; using Microsoft.Win32; using Bloxstrap.UI.Elements.Settings; namespace Bloxstrap.UI.ViewModels.Settings { public class AppearanceViewModel : NotifyPropertyChangedViewModel { private readonly Page _page; public ICommand PreviewBootstrapperCommand => new RelayCommand(PreviewBootstrapper); public ICommand BrowseCustomIconLocationCommand => new RelayCommand(BrowseCustomIconLocation); private void PreviewBootstrapper() { IBootstrapperDialog dialog = App.Settings.Prop.BootstrapperStyle.GetNew(); if (App.Settings.Prop.BootstrapperStyle == BootstrapperStyle.ByfronDialog) dialog.Message = Strings.Bootstrapper_StylePreview_ImageCancel; else dialog.Message = Strings.Bootstrapper_StylePreview_TextCancel; dialog.CancelEnabled = true; dialog.ShowBootstrapper(); } private void BrowseCustomIconLocation() { var dialog = new OpenFileDialog { Filter = $"{Strings.Menu_IconFiles}|*.ico" }; if (dialog.ShowDialog() != true) return; CustomIconLocation = dialog.FileName; OnPropertyChanged(nameof(CustomIconLocation)); } public AppearanceViewModel(Page page) { _page = page; foreach (var entry in BootstrapperIconEx.Selections) Icons.Add(new BootstrapperIconEntry { IconType = entry }); } public IEnumerable Themes { get; } = Enum.GetValues(typeof(Theme)).Cast(); public Theme Theme { get => App.Settings.Prop.Theme; set { App.Settings.Prop.Theme = value; ((MainWindow)Window.GetWindow(_page)!).ApplyTheme(); } } public static List Languages => Locale.GetLanguages(); public string SelectedLanguage { get => Locale.SupportedLocales[App.Settings.Prop.Locale]; set => App.Settings.Prop.Locale = Locale.GetIdentifierFromName(value); } public IEnumerable Dialogs { get; } = BootstrapperStyleEx.Selections; public BootstrapperStyle Dialog { get => App.Settings.Prop.BootstrapperStyle; set => App.Settings.Prop.BootstrapperStyle = value; } public ObservableCollection Icons { get; set; } = new(); public BootstrapperIcon Icon { get => App.Settings.Prop.BootstrapperIcon; set => App.Settings.Prop.BootstrapperIcon = value; } public string Title { get => App.Settings.Prop.BootstrapperTitle; set => App.Settings.Prop.BootstrapperTitle = value; } public string CustomIconLocation { get => App.Settings.Prop.BootstrapperIconCustomLocation; set { if (String.IsNullOrEmpty(value)) { if (App.Settings.Prop.BootstrapperIcon == BootstrapperIcon.IconCustom) App.Settings.Prop.BootstrapperIcon = BootstrapperIcon.IconBloxstrap; } else { App.Settings.Prop.BootstrapperIcon = BootstrapperIcon.IconCustom; } App.Settings.Prop.BootstrapperIconCustomLocation = value; OnPropertyChanged(nameof(Icon)); OnPropertyChanged(nameof(Icons)); } } } }