System Theme now works

This commit is contained in:
Eric Tian 2020-08-31 15:06:59 -07:00
commit b2aa3455a5
2 changed files with 122 additions and 98 deletions

View file

@ -16,13 +16,11 @@
<RowDefinition Height="1*" <RowDefinition Height="1*"
MinHeight="{StaticResource HamburgerHeight}" MinHeight="{StaticResource HamburgerHeight}"
MaxHeight="52"/> MaxHeight="52"/>
<RowDefinition Height="4*"/> <RowDefinition Height="1*"/>
<RowDefinition Height="Auto" MaxHeight="32"/>
<RowDefinition Height="4*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Grid.Row="1">
<StackPanel x:Name="SettingsStack" <StackPanel x:Name="SettingsStack"
Grid.Row="1"
AutomationProperties.LabeledBy="{Binding ElementName=SettingsAppTheme}" AutomationProperties.LabeledBy="{Binding ElementName=SettingsAppTheme}"
Orientation="Vertical"> Orientation="Vertical">
@ -32,7 +30,9 @@
AutomationProperties.HeadingLevel="Level1" AutomationProperties.HeadingLevel="Level1"
TextTrimming="Clip"/> TextTrimming="Clip"/>
<TextBlock x:Name="SettingsRestartApp" Style="{StaticResource BodyTextBlockStyle}"/> <TextBlock x:Name="SettingsRestartApp"
Style="{StaticResource CaptionTextBlockStyle}"
Foreground="{StaticResource SystemColorGrayTextColor}"/>
<RadioButton x:Name="SettingsDarkTheme" <RadioButton x:Name="SettingsDarkTheme"
x:Uid="SettingsDarkTheme" x:Uid="SettingsDarkTheme"
@ -55,11 +55,10 @@
Click="ColorSettingsButtonClicked"> Click="ColorSettingsButtonClicked">
<TextBlock x:Uid="ColorSettingsButton" TextWrapping="Wrap"/> <TextBlock x:Uid="ColorSettingsButton" TextWrapping="Wrap"/>
</HyperlinkButton> </HyperlinkButton>
</StackPanel> </StackPanel>
<StackPanel x:Name="AboutStack" <StackPanel x:Name="AboutStack"
Grid.Row="3" Margin="0,32,0,0"
AutomationProperties.LabeledBy="{Binding ElementName=SettingsAboutLabel}" AutomationProperties.LabeledBy="{Binding ElementName=SettingsAboutLabel}"
Orientation="Vertical"> Orientation="Vertical">
@ -105,8 +104,7 @@
VerticalAlignment="Top" VerticalAlignment="Top"
Style="{StaticResource ButtonRevealStyle}" Style="{StaticResource ButtonRevealStyle}"
Click="SettingsFeedbackButtonClick"/> Click="SettingsFeedbackButtonClick"/>
</StackPanel> </StackPanel>
</StackPanel>
</Grid> </Grid>
</UserControl> </UserControl>

View file

@ -19,12 +19,15 @@ using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives; using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data; using namespace Windows::UI::Xaml::Data;
using namespace winrt::Windows::Storage;
#ifndef BUILD_YEAR #ifndef BUILD_YEAR
#define BUILD_YEAR 2020 #define BUILD_YEAR 2020
#endif #endif
auto resourceLoader = AppResourceProvider::GetInstance(); auto resourceLoader = AppResourceProvider::GetInstance();
auto themevalue = Windows::Storage::ApplicationData::Current -> LocalSettings -> Values -> Lookup(L"themeSetting");
String ^ colorSetting = safe_cast<String ^>(themevalue);
SettingsPage::SettingsPage() SettingsPage::SettingsPage()
{ {
@ -32,17 +35,14 @@ SettingsPage::SettingsPage()
InitializeComponent(); InitializeComponent();
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
Language = locService->GetLanguage(); Language = locService->GetLanguage();
this->SetVersionString(); this->SetVersionString();
this->SetCopyrightString(); this->SetCopyrightString();
auto value = Windows::Storage::ApplicationData::Current->LocalSettings->Values->Lookup(L"themeSetting");
if (value != nullptr) if (themevalue != nullptr)
{ {
String ^ colorSetting = safe_cast<String ^>(value);
if (colorSetting == L"Dark") if (colorSetting == L"Dark")
{ {
SettingsDarkTheme->IsChecked = true; SettingsDarkTheme->IsChecked = true;
@ -56,6 +56,10 @@ SettingsPage::SettingsPage()
SettingsSystemTheme->IsChecked = true; SettingsSystemTheme->IsChecked = true;
} }
} }
else
{
SettingsSystemTheme->IsChecked = true;
}
} }
void SettingsPage::SetVersionString() void SettingsPage::SetVersionString()
@ -87,23 +91,45 @@ void SettingsPage::SettingsFeedbackButtonClick(_In_ Object ^ sender, _In_ Routed
Launcher::LaunchUriAsync(ref new Uri("windows-feedback:?contextid=130&metadata=%7B%22Metadata%22:[%7B%22AppBuild%22:%22" + versionNumber + "%22%7D]%7D")); Launcher::LaunchUriAsync(ref new Uri("windows-feedback:?contextid=130&metadata=%7B%22Metadata%22:[%7B%22AppBuild%22:%22" + versionNumber + "%22%7D]%7D"));
} }
void SettingsPage::LightChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
{
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible;
SettingsRestartApp->Text = LocalizationStringUtil::GetLocalizedString(resourceLoader->GetResourceString("SettingsRestartNotice"));
Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", ApplicationTheme::Light.ToString());
}
void SettingsPage::DarkChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) void SettingsPage::DarkChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
{
if (colorSetting == "Dark")
{
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
}
else
{ {
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible; SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible;
SettingsRestartApp->Text = LocalizationStringUtil::GetLocalizedString(resourceLoader->GetResourceString("SettingsRestartNotice")); SettingsRestartApp->Text = resourceLoader->GetResourceString("SettingsRestartNotice");
}
Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", ApplicationTheme::Dark.ToString()); Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", ApplicationTheme::Dark.ToString());
} }
void SettingsPage::LightChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
{
if (colorSetting == "Light")
{
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
}
else
{
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible;
SettingsRestartApp->Text = resourceLoader->GetResourceString("SettingsRestartNotice");
}
Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", ApplicationTheme::Light.ToString());
}
void SettingsPage::SystemChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) void SettingsPage::SystemChecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
{
if (colorSetting == "System")
{
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
}
else
{ {
SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible; SettingsRestartApp->Visibility = Windows::UI::Xaml::Visibility::Visible;
SettingsRestartApp->Text = LocalizationStringUtil::GetLocalizedString(resourceLoader->GetResourceString("SettingsRestartNotice")); SettingsRestartApp->Text = resourceLoader->GetResourceString("SettingsRestartNotice");
}
Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", L"System"); Windows::Storage::ApplicationData::Current->LocalSettings->Values->Insert(L"themeSetting", L"System");
} }