Skip to content

Commit

Permalink
handle language changed message
Browse files Browse the repository at this point in the history
  • Loading branch information
Scighost committed Dec 29, 2023
1 parent 33e3c2a commit e0311c1
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 20 deletions.
5 changes: 4 additions & 1 deletion src/Starward/Messages/LanguageChangedMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@
namespace Starward.Messages;


public record LanguageChangedMessage(string Language, CultureInfo CultureInfo);
public record LanguageChangedMessage(string Language, CultureInfo CultureInfo)
{
public bool Completed { get; set; }
}

32 changes: 16 additions & 16 deletions src/Starward/Pages/MainPage.xaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<local:PageBase x:Class="Starward.Pages.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:lang="using:Starward.Language"
xmlns:local="using:Starward.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:s="using:Starward"
x:DefaultBindMode="OneWay"
Loaded="Page_Loaded"
RightTapped="Page_RightTapped"
SizeChanged="Page_SizeChanged"
Tapped="Page_Tapped"
Unloaded="Page_Unloaded"
mc:Ignorable="d">
<Page x:Class="Starward.Pages.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:lang="using:Starward.Language"
xmlns:local="using:Starward.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:s="using:Starward"
x:DefaultBindMode="OneWay"
Loaded="Page_Loaded"
RightTapped="Page_RightTapped"
SizeChanged="Page_SizeChanged"
Tapped="Page_Tapped"
Unloaded="Page_Unloaded"
mc:Ignorable="d">


<Grid>
Expand Down Expand Up @@ -488,4 +488,4 @@


</Grid>
</local:PageBase>
</Page>
12 changes: 10 additions & 2 deletions src/Starward/Pages/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.WinUI.Helpers;
using Microsoft.Extensions.Logging;
using Microsoft.Graphics.Canvas;
Expand All @@ -17,6 +18,7 @@
using Microsoft.UI.Xaml.Media.Imaging;
using Starward.Core;
using Starward.Helpers;
using Starward.Messages;
using Starward.Pages.HoyolabToolbox;
using Starward.Pages.Setting;
using Starward.Services;
Expand Down Expand Up @@ -48,7 +50,7 @@ namespace Starward.Pages;
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
[INotifyPropertyChanged]
public sealed partial class MainPage : PageBase
public sealed partial class MainPage : Page
{

public static MainPage Current { get; private set; }
Expand All @@ -73,6 +75,7 @@ public MainPage()
compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
InitializeSelectGameBiz();
InitializeBackgroundImage();
WeakReferenceMessenger.Default.Register<LanguageChangedMessage>(this, OnLanguageChanged);
}


Expand Down Expand Up @@ -112,6 +115,7 @@ private void Page_Unloaded(object sender, RoutedEventArgs e)
Current = null!;
mediaPlayer?.Dispose();
softwareBitmap?.Dispose();
WeakReferenceMessenger.Default.UnregisterAll(this);
}


Expand Down Expand Up @@ -139,10 +143,14 @@ private async Task CheckUpdateAsync()



public void ReloadTextForLanguage()
public void OnLanguageChanged(object? sender, LanguageChangedMessage message)
{
this.Bindings.Update();
UpdateNavigationViewItems();
if (message.Completed)
{
NavigateTo(MainPage_Frame.SourcePageType, changeGameBiz: false);
}
}


Expand Down
5 changes: 4 additions & 1 deletion src/Starward/Pages/Setting/AppearanceSettingPage.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.Logging;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Starward.Messages;
using System;
using System.Globalization;

Expand Down Expand Up @@ -89,7 +91,8 @@ private void ComboBox_Language_SelectionChanged(object sender, SelectionChangedE
{
CultureInfo.CurrentUICulture = new CultureInfo(lang);
}
MainPage.Current.ReloadTextForLanguage();
this.Bindings.Update();
WeakReferenceMessenger.Default.Send(new LanguageChangedMessage(lang!, CultureInfo.CurrentUICulture));
}
}
}
Expand Down
23 changes: 23 additions & 0 deletions src/Starward/Pages/Setting/SettingPage.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.UI.Xaml.Controls;
using Starward.Messages;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
Expand All @@ -15,9 +17,25 @@ public SettingPage()
{
this.InitializeComponent();
SettingFrame.Navigate(typeof(AboutSettingPage));
WeakReferenceMessenger.Default.Register<LanguageChangedMessage>(this, (_, m) =>
{
_languageChangedMessage = m;
this.Bindings.Update();
});

}


protected override void OnUnloaded()
{
WeakReferenceMessenger.Default.UnregisterAll(this);
}


private LanguageChangedMessage? _languageChangedMessage;



private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
try
Expand All @@ -36,6 +54,11 @@ private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewIte
{
if (item.Tag is "Completed")
{
if (_languageChangedMessage is not null)
{
_languageChangedMessage.Completed = true;
WeakReferenceMessenger.Default.Send(_languageChangedMessage);
}
MainWindow.Current.CloseOverlayPage();
return;
}
Expand Down

0 comments on commit e0311c1

Please sign in to comment.