44using Files . App . UITests . Views ;
55using Microsoft . UI . Xaml ;
66using Microsoft . UI . Xaml . Controls ;
7+ using Microsoft . UI . Xaml . Controls . Primitives ;
8+ using System ;
79
810namespace Files . App . UITests
911{
@@ -17,46 +19,55 @@ private MainWindow()
1719 InitializeComponent ( ) ;
1820
1921 ExtendsContentIntoTitleBar = true ;
20-
2122 MainFrame . Navigate ( typeof ( MainPage ) ) ;
23+
24+ // Set the toggle state for theme change button
25+ if ( Content is FrameworkElement element )
26+ {
27+ if ( element . ActualTheme is ElementTheme . Light )
28+ {
29+ AppThemeChangeToggleButton . IsChecked = true ;
30+ AppThemeGlyph . Glyph = "\uE706 " ; // Sun
31+ }
32+ else
33+ {
34+ AppThemeChangeToggleButton . IsChecked = false ;
35+ AppThemeGlyph . Glyph = "\uE708 " ; // Moon
36+ }
37+ }
2238 }
2339
2440 private void NavigationView_SelectionChanged ( NavigationView sender , NavigationViewSelectionChangedEventArgs args )
2541 {
2642 if ( args . SelectedItem is not NavigationViewItem item || item . Tag is not string tag )
2743 return ;
2844
29- switch ( tag )
30- {
31- case "ThemedIconPage" :
32- MainFrame . Navigate ( typeof ( ThemedIconPage ) ) ;
33- break ;
34- case "ToolbarPage" :
35- MainFrame . Navigate ( typeof ( ToolbarPage ) ) ;
36- break ;
37- case "StorageControlsPage" :
38- MainFrame . Navigate ( typeof ( StorageControlsPage ) ) ;
39- break ;
40- }
45+ MainFrame . Navigate (
46+ tag switch
47+ {
48+ nameof ( ThemedIconPage ) => typeof ( ThemedIconPage ) ,
49+ nameof ( ToolbarPage ) => typeof ( ToolbarPage ) ,
50+ nameof ( StorageControlsPage ) => typeof ( StorageControlsPage ) ,
51+ nameof ( OmnibarPage ) => typeof ( OmnibarPage ) ,
52+ _ => throw new InvalidOperationException ( "There's no applicable page associated with the given key." ) ,
53+ } ) ;
4154 }
4255
43- private void ThemeModeSelectorCombBox_SelectionChanged ( object sender , SelectionChangedEventArgs e )
56+ private void AppThemeChangeToggleButton_Click ( object sender , RoutedEventArgs e )
4457 {
45- if ( sender is not ComboBox comboBox ||
58+ if ( sender is not ToggleButton toggleButton ||
4659 Content is not FrameworkElement element )
4760 return ;
4861
49- switch ( comboBox . SelectedIndex )
62+ if ( toggleButton . IsChecked is true )
63+ {
64+ element . RequestedTheme = ElementTheme . Light ;
65+ AppThemeGlyph . Glyph = "\uE706 " ; // Sun
66+ }
67+ else
5068 {
51- case 0 :
52- element . RequestedTheme = ElementTheme . Default ;
53- break ;
54- case 1 :
55- element . RequestedTheme = ElementTheme . Light ;
56- break ;
57- case 2 :
58- element . RequestedTheme = ElementTheme . Dark ;
59- break ;
69+ element . RequestedTheme = ElementTheme . Dark ;
70+ AppThemeGlyph . Glyph = "\uE708 " ; // Moon
6071 }
6172 }
6273 }
0 commit comments