88using System . Reactive . Subjects ;
99using System . Text . Json . Serialization ;
1010using Microsoft . Extensions . DependencyInjection ;
11+ using Material . Colors ;
1112using Avalonia . Controls ;
12- using Avalonia . Styling ;
13+ using Avalonia . Media ;
14+ using Material . Styles . Themes ;
1315using ReactiveUI ;
1416using ReactiveUI . Validation . Extensions ;
1517using ReactiveUI . Validation . Helpers ;
@@ -56,22 +58,17 @@ public string Seed
5658 }
5759 }
5860
59- private string themeVariantName = "" ;
61+ [ JsonIgnore ]
62+ public BehaviorSubject < string > ThemeVariantSubject = new ( "" ) ;
6063 public string ThemeVariantName
6164 {
6265 get
6366 {
64- return themeVariantName ;
67+ return ThemeVariantSubject . Value ;
6568 }
6669 set
6770 {
68- App . Current ! . RequestedThemeVariant = value switch
69- {
70- "Light" => ThemeVariant . Light ,
71- "Dark" => ThemeVariant . Dark ,
72- _ => ThemeVariant . Default
73- } ;
74- themeVariantName = value ;
71+ ThemeVariantSubject . OnNext ( ThemeHelper . SetTheme ( value ) ) ;
7572 }
7673 }
7774 private int currentTabIndex ;
@@ -94,6 +91,7 @@ public RandomizerViewModel(MainViewModel main)
9491 BiomesViewModel = new ( Main ) ;
9592 PalacesViewModel = new ( Main ) ;
9693 ItemsViewModel = new ( Main ) ;
94+ HintsViewModel = new ( Main , this ) ;
9795 CustomizeViewModel = new ( Main ) ;
9896 Activator = new ViewModelActivator ( ) ;
9997
@@ -132,15 +130,14 @@ public RandomizerViewModel(MainViewModel main)
132130
133131 ToggleTheme = ReactiveCommand . Create ( ( ) =>
134132 {
135- if ( App . Current ! . ActualThemeVariant == ThemeVariant . Dark )
133+ if ( ThemeVariantName == " Dark" )
136134 {
137- App . Current ! . RequestedThemeVariant = ThemeVariant . Light ;
135+ ThemeVariantName = " Light" ;
138136 }
139- else if ( App . Current ! . ActualThemeVariant == ThemeVariant . Light )
137+ else
140138 {
141- App . Current ! . RequestedThemeVariant = ThemeVariant . Dark ;
139+ ThemeVariantName = " Dark" ;
142140 }
143- ThemeVariantName = App . Current . RequestedThemeVariant ? . Key . ToString ( ) ?? "Default" ;
144141 } ) ;
145142
146143 var seedValidObservable = this . WhenAnyValue ( x => x . Main . Config . Seed , seed => ! string . IsNullOrWhiteSpace ( seed ) ) ;
@@ -318,6 +315,7 @@ private void AddValidationRules()
318315 public BiomesViewModel BiomesViewModel { get ; }
319316 public PalacesViewModel PalacesViewModel { get ; }
320317 public ItemsViewModel ItemsViewModel { get ; }
318+ public HintsViewModel HintsViewModel { get ; }
321319 public CustomizeViewModel CustomizeViewModel { get ; }
322320
323321 [ JsonIgnore ]
0 commit comments