From 51f64466c2ca97dfe6d56ad7f2d8170ee7f190d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Fri, 6 Mar 2026 11:22:19 +0100 Subject: [PATCH] Updating core title bar for menu item changes. --- Wino.Mail.ViewModels/MailAppShellViewModel.cs | 8 ++++++++ Wino.Mail.WinUI/Views/Mail/MailListPage.xaml.cs | 5 +++++ Wino.Mail.WinUI/Views/ManageAccountsPage.xaml.cs | 13 +++++++++++++ Wino.Mail.WinUI/Views/SettingsPage.xaml.cs | 13 +++++++++++++ 4 files changed, 39 insertions(+) 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; + } }