polish account summary layout and email count

This commit is contained in:
2026-04-30 10:31:53 +02:00
parent f853008ee6
commit 0ffbde80b3
2 changed files with 38 additions and 11 deletions

View File

@@ -44,6 +44,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
private readonly ICalDavClient _calDavClient; private readonly ICalDavClient _calDavClient;
private readonly IMimeStorageService _mimeStorageService; private readonly IMimeStorageService _mimeStorageService;
private readonly ICalendarService _calendarService; private readonly ICalendarService _calendarService;
private readonly IMailService _mailService;
private readonly IFolderService _folderService;
public IMailDialogService MailDialogService { get; } public IMailDialogService MailDialogService { get; }
@@ -73,6 +75,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
ICalDavClient calDavClient, ICalDavClient calDavClient,
IMimeStorageService mimeStorageService, IMimeStorageService mimeStorageService,
ICalendarService calendarService, ICalendarService calendarService,
IMailService mailService,
IFolderService folderService,
IAuthenticationProvider authenticationProvider, IAuthenticationProvider authenticationProvider,
IPreferencesService preferencesService) : base(dialogService, navigationService, accountService, providerService, winoAccountProfileService, authenticationProvider, preferencesService) IPreferencesService preferencesService) : base(dialogService, navigationService, accountService, providerService, winoAccountProfileService, authenticationProvider, preferencesService)
{ {
@@ -83,6 +87,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
_calDavClient = calDavClient; _calDavClient = calDavClient;
_mimeStorageService = mimeStorageService; _mimeStorageService = mimeStorageService;
_calendarService = calendarService; _calendarService = calendarService;
_mailService = mailService;
_folderService = folderService;
} }
[ObservableProperty] [ObservableProperty]
@@ -449,6 +455,7 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
var totalStorageBytes = storageSizes.Values.DefaultIfEmpty(0L).Sum(); var totalStorageBytes = storageSizes.Values.DefaultIfEmpty(0L).Sum();
var totalCalendarCount = 0; var totalCalendarCount = 0;
var uniqueMessageIds = new HashSet<Guid>();
foreach (var account in accounts) foreach (var account in accounts)
{ {
@@ -461,11 +468,30 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel
{ {
// Keep partial summary data if a specific account calendar lookup fails. // Keep partial summary data if a specific account calendar lookup fails.
} }
try
{
var folders = await _folderService.GetFoldersAsync(account.Id).ConfigureAwait(false);
foreach (var folder in folders)
{
var mails = await _mailService.GetMailsByFolderIdAsync(folder.Id).ConfigureAwait(false);
foreach (var mail in mails)
{
uniqueMessageIds.Add(mail.UniqueId);
}
}
}
catch
{
// Keep partial summary data if a specific account mail lookup fails.
}
} }
await ExecuteUIThread(() => await ExecuteUIThread(() =>
{ {
SummaryEmailCountText = SummaryUnavailable; SummaryEmailCountText = uniqueMessageIds.Count > 0
? uniqueMessageIds.Count.ToString("N0", CultureInfo.CurrentCulture)
: "0";
SummaryStorageText = totalStorageBytes > 0 SummaryStorageText = totalStorageBytes > 0
? totalStorageBytes.GetBytesReadable() ? totalStorageBytes.GetBytesReadable()
: "0 B"; : "0 B";

View File

@@ -118,10 +118,11 @@
<winuiControls:SettingsCard <winuiControls:SettingsCard
Grid.Column="1" Grid.Column="1"
Margin="0,12,0,0" Margin="0,12,0,0"
MinHeight="200"
Description="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionDescription}" Description="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionDescription}"
Header="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionTitle}"> Header="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionTitle}">
<StackPanel Spacing="12"> <StackPanel Spacing="10">
<Grid ColumnSpacing="12" RowSpacing="12"> <Grid ColumnSpacing="10" RowSpacing="10">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@@ -134,48 +135,48 @@
<Border <Border
Grid.Row="0" Grid.Row="0"
Grid.Column="0" Grid.Column="0"
Padding="12" Padding="10"
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
CornerRadius="8"> CornerRadius="8">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryAccountsLabel}" /> <TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryAccountsLabel}" />
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryAccountCountText, Mode=OneWay}" /> <TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryAccountCountText, Mode=OneWay}" />
</StackPanel> </StackPanel>
</Border> </Border>
<Border <Border
Grid.Row="0" Grid.Row="0"
Grid.Column="1" Grid.Column="1"
Padding="12" Padding="10"
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
CornerRadius="8"> CornerRadius="8">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryEmailsLabel}" /> <TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryEmailsLabel}" />
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryEmailCountText, Mode=OneWay}" /> <TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryEmailCountText, Mode=OneWay}" />
</StackPanel> </StackPanel>
</Border> </Border>
<Border <Border
Grid.Row="1" Grid.Row="1"
Grid.Column="0" Grid.Column="0"
Padding="12" Padding="10"
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
CornerRadius="8"> CornerRadius="8">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryStorageLabel}" /> <TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryStorageLabel}" />
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryStorageText, Mode=OneWay}" /> <TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryStorageText, Mode=OneWay}" />
</StackPanel> </StackPanel>
</Border> </Border>
<Border <Border
Grid.Row="1" Grid.Row="1"
Grid.Column="1" Grid.Column="1"
Padding="12" Padding="10"
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}" Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
CornerRadius="8"> CornerRadius="8">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryCalendarsLabel}" /> <TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryCalendarsLabel}" />
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryCalendarCountText, Mode=OneWay}" /> <TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryCalendarCountText, Mode=OneWay}" />
</StackPanel> </StackPanel>
</Border> </Border>
</Grid> </Grid>