polish account summary layout and email count
This commit is contained in:
@@ -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";
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user