diff --git a/Wino.Mail.ViewModels/MailAppShellViewModel.cs b/Wino.Mail.ViewModels/MailAppShellViewModel.cs index 9848c150..4f641b7e 100644 --- a/Wino.Mail.ViewModels/MailAppShellViewModel.cs +++ b/Wino.Mail.ViewModels/MailAppShellViewModel.cs @@ -454,6 +454,11 @@ public partial class MailAppShellViewModel : MailBaseViewModel, StatePersistenceService.CoreWindowTitle = $"{folder.AssignedAccountName} - {folder.FolderName}"; } + private void UpdateWindowTitle(string title) + { + StatePersistenceService.CoreWindowTitle = title; + } + private async Task NavigateSpecialFolderAsync(MailAccount account, SpecialFolderType specialFolderType, bool extendAccountMenu) { try @@ -636,14 +641,17 @@ public partial class MailAppShellViewModel : MailBaseViewModel, else if (clickedMenuItem is SettingsItem) { NavigationService.Navigate(WinoPage.SettingsPage, parameter, NavigationReferenceFrame.InnerShellFrame, NavigationTransitionType.None); + UpdateWindowTitle(Translator.MenuSettings); } else if (clickedMenuItem is ManageAccountsMenuItem) { NavigationService.Navigate(WinoPage.ManageAccountsPage, parameter, NavigationReferenceFrame.InnerShellFrame, NavigationTransitionType.None); + UpdateWindowTitle(Translator.MenuManageAccounts); } else if (clickedMenuItem is ContactsMenuItem) { NavigationService.Navigate(WinoPage.ContactsPage, parameter, NavigationReferenceFrame.InnerShellFrame, NavigationTransitionType.None); + UpdateWindowTitle(Translator.ContactsPage_Title); } else if (clickedMenuItem is IAccountMenuItem clickedAccountMenuItem) { diff --git a/Wino.Mail.WinUI/Views/Mail/MailListPage.xaml.cs b/Wino.Mail.WinUI/Views/Mail/MailListPage.xaml.cs index 34d21163..855c2e64 100644 --- a/Wino.Mail.WinUI/Views/Mail/MailListPage.xaml.cs +++ b/Wino.Mail.WinUI/Views/Mail/MailListPage.xaml.cs @@ -64,6 +64,11 @@ public sealed partial class MailListPage : MailListPageAbstract, Bindings.Update(); + if (ViewModel.ActiveFolder != null) + { + ViewModel.StatePersistenceService.CoreWindowTitle = $"{ViewModel.ActiveFolder.AssignedAccountName} - {ViewModel.ActiveFolder.FolderName}"; + } + ViewModel.MailCollection.ItemSelectionChanged += WinoMailCollectionSelectionChanged; MailListView.MailDragStateChanged += MailListViewMailDragStateChanged; diff --git a/Wino.Mail.WinUI/Views/ManageAccountsPage.xaml.cs b/Wino.Mail.WinUI/Views/ManageAccountsPage.xaml.cs index bbd4bb27..8c3238b2 100644 --- a/Wino.Mail.WinUI/Views/ManageAccountsPage.xaml.cs +++ b/Wino.Mail.WinUI/Views/ManageAccountsPage.xaml.cs @@ -47,6 +47,7 @@ public sealed partial class ManageAccountsPage : ManageAccountsPageAbstract, var accountManagementPageType = ViewModel.NavigationService.GetPageType(WinoPage.AccountManagementPage); AccountPagesFrame.Navigate(accountManagementPageType, null, new SuppressNavigationTransitionInfo()); + UpdateWindowTitle(); } protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) @@ -77,6 +78,7 @@ public sealed partial class ManageAccountsPage : ManageAccountsPageAbstract, PageHistory.ForEach(a => a.IsActive = false); PageHistory.Add(new BreadcrumbNavigationItemViewModel(message, true)); + UpdateWindowTitle(); } private void AccountPagesFrameNavigated(object sender, NavigationEventArgs e) @@ -108,6 +110,7 @@ public sealed partial class ManageAccountsPage : ManageAccountsPageAbstract, // Update back button visibility after navigation ViewModel.StatePersistenceService.IsManageAccountsNavigating = AccountPagesFrame.CanGoBack; + UpdateWindowTitle(); } } @@ -136,6 +139,7 @@ public sealed partial class ManageAccountsPage : ManageAccountsPageAbstract, DispatcherQueue.TryEnqueue(() => { activePage.Title = message.Account.Name; + UpdateWindowTitle(); }); } @@ -147,5 +151,14 @@ public sealed partial class ManageAccountsPage : ManageAccountsPageAbstract, if (activePage == null) return; activePage.Title = message.NewName; + UpdateWindowTitle(); + } + + private void UpdateWindowTitle() + { + var activeTitle = PageHistory.LastOrDefault()?.Title; + ViewModel.StatePersistenceService.CoreWindowTitle = string.IsNullOrWhiteSpace(activeTitle) + ? Translator.MenuManageAccounts + : activeTitle; } } diff --git a/Wino.Mail.WinUI/Views/SettingsPage.xaml.cs b/Wino.Mail.WinUI/Views/SettingsPage.xaml.cs index a3cc9fb8..a8c35f95 100644 --- a/Wino.Mail.WinUI/Views/SettingsPage.xaml.cs +++ b/Wino.Mail.WinUI/Views/SettingsPage.xaml.cs @@ -52,6 +52,8 @@ public sealed partial class SettingsPage : SettingsPageAbstract, break; } } + + UpdateWindowTitle(); } public override void OnLanguageChanged() @@ -65,6 +67,7 @@ public sealed partial class SettingsPage : SettingsPageAbstract, if (settingsHeader == null) return; settingsHeader.Title = Translator.MenuSettings; + UpdateWindowTitle(); } protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) @@ -105,6 +108,7 @@ public sealed partial class SettingsPage : SettingsPageAbstract, PageHistory.ForEach(a => a.IsActive = false); PageHistory.Add(new BreadcrumbNavigationItemViewModel(message, true)); + UpdateWindowTitle(); } private void SettingsFrameNavigated(object sender, NavigationEventArgs e) @@ -136,6 +140,7 @@ public sealed partial class SettingsPage : SettingsPageAbstract, // Update back button visibility after navigation ViewModel.StatePersistenceService.IsSettingsNavigating = SettingsFrame.CanGoBack; + UpdateWindowTitle(); } } @@ -154,4 +159,12 @@ public sealed partial class SettingsPage : SettingsPageAbstract, { GoBackFrame(message.SlideEffect); } + + private void UpdateWindowTitle() + { + var activeTitle = PageHistory.LastOrDefault()?.Title; + ViewModel.StatePersistenceService.CoreWindowTitle = string.IsNullOrWhiteSpace(activeTitle) + ? Translator.MenuSettings + : activeTitle; + } }