using System.Windows; using System.Windows.Media; namespace WarframeClock { public class OverlayWindowViewModel : BindableBase { public PlainsTimeOverlayItemViewModel PlainsTimeOverlayItemViewModel { get; } = new PlainsTimeOverlayItemViewModel(); public ArbitrationOverlayItemViewModel ArbitrationOverlayItemViewModel { get; } = new ArbitrationOverlayItemViewModel(); public KuvaFloodOverlayItemViewModel KuvaFloodOverlayItemViewModel { get; } = new KuvaFloodOverlayItemViewModel(); private bool _settingsMode; public bool SettingsMode { get => _settingsMode; set { _settingsMode = value; NotifyPropertyChanged(); } } #region "App Settings" public FontFamily FontFamily => new FontFamily(Settings.FontFamilyName); public double FontSize => Settings.FontSize; public double FontSizeTiny => Settings.FontSize * 0.4; public double FontSizeSmall => Settings.FontSize * 0.5; public HorizontalAlignment HorizontalAlignment => Settings.DockToX == Settings.AlignmentX.Left ? HorizontalAlignment.Left : HorizontalAlignment.Right; public VerticalAlignment VerticalAlignment => Settings.DockToY == Settings.AlignmentY.Top ? VerticalAlignment.Top : VerticalAlignment.Bottom; public Thickness Margin => new Thickness( Settings.DockToX == Settings.AlignmentX.Left ? Settings.MarginX : 0.0, Settings.DockToY == Settings.AlignmentY.Top ? Settings.MarginY : 0.0, Settings.DockToX == Settings.AlignmentX.Right ? Settings.MarginX : 0.0, Settings.DockToY == Settings.AlignmentY.Bottom ? Settings.MarginY : 0.0); public void RefreshPosition() { NotifyPropertyChanged(nameof(HorizontalAlignment)); NotifyPropertyChanged(nameof(VerticalAlignment)); NotifyPropertyChanged(nameof(Margin)); } public void RefreshFont() { NotifyPropertyChanged(nameof(FontFamily)); NotifyPropertyChanged(nameof(FontSize)); NotifyPropertyChanged(nameof(FontSizeSmall)); NotifyPropertyChanged(nameof(FontSizeTiny)); } public bool ShowArbitration { get => Settings.ShowArbitration; set { Settings.ShowArbitration = value; NotifyPropertyChanged(); } } public bool ShowKuvaFlood { get => Settings.ShowKuvaFlood; set { Settings.ShowKuvaFlood = value; NotifyPropertyChanged(); } } public bool Standalone { get => Settings.Standalone; set { Settings.Standalone = value; NotifyPropertyChanged(); } } public bool StandaloneAlwaysOnTop { get => Settings.StandaloneAlwaysOnTop; set { Settings.StandaloneAlwaysOnTop = value; NotifyPropertyChanged(); } } #endregion public void Refresh() { PlainsTimeOverlayItemViewModel.Refresh(); ArbitrationOverlayItemViewModel.Refresh(); KuvaFloodOverlayItemViewModel.Refresh(); } } }