Event compose implementation.
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:interfaces="using:Wino.Core.Domain.Interfaces"
|
||||
xmlns:local="using:Wino.Views"
|
||||
xmlns:mailViewModels="using:Wino.Mail.ViewModels"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||
xmlns:ui="using:CommunityToolkit.WinUI"
|
||||
@@ -50,7 +51,7 @@
|
||||
VerticalAlignment="Center"
|
||||
Checked="SyncFolderToggled"
|
||||
IsChecked="{x:Bind IsSynchronizationEnabled, Mode=OneWay}"
|
||||
Tag="{Binding}"
|
||||
Tag="{x:Bind}"
|
||||
Unchecked="SyncFolderToggled"
|
||||
Visibility="{x:Bind IsMoveTarget}" />
|
||||
|
||||
@@ -61,7 +62,7 @@
|
||||
VerticalAlignment="Center"
|
||||
Checked="UnreadBadgeCheckboxToggled"
|
||||
IsChecked="{x:Bind ShowUnreadCount, Mode=OneWay}"
|
||||
Tag="{Binding}"
|
||||
Tag="{x:Bind}"
|
||||
Unchecked="UnreadBadgeCheckboxToggled"
|
||||
Visibility="{x:Bind IsMoveTarget}" />
|
||||
</Grid>
|
||||
@@ -296,27 +297,72 @@
|
||||
Visibility="Collapsed">
|
||||
<StackPanel MaxWidth="900" Spacing="12">
|
||||
|
||||
<controls:SettingsCard Description="{x:Bind domain:Translator.CalendarAccountSettings_PrimaryCalendarDescription, Mode=OneTime}" Header="{x:Bind domain:Translator.CalendarAccountSettings_PrimaryCalendar, Mode=OneTime}">
|
||||
<controls:SettingsCard.HeaderIcon>
|
||||
<FontIcon Glyph="" />
|
||||
</controls:SettingsCard.HeaderIcon>
|
||||
<ComboBox ItemsSource="{x:Bind ViewModel.AccountCalendars, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.SelectedPrimaryCalendar, Mode=TwoWay}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate x:DataType="calendar:AccountCalendar">
|
||||
<TextBlock Text="{x:Bind Name}" />
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</controls:SettingsCard>
|
||||
|
||||
<!-- Calendars List -->
|
||||
<ItemsControl ItemsSource="{x:Bind ViewModel.AccountCalendars, Mode=OneWay}">
|
||||
<ItemsControl ItemsSource="{x:Bind ViewModel.AccountCalendarSettingsItems, Mode=OneWay}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate x:DataType="calendar:AccountCalendar">
|
||||
<controls:SettingsCard
|
||||
Margin="0,0,0,4"
|
||||
ActionIcon="{ui:FontIcon Glyph=}"
|
||||
Click="CalendarItemClicked"
|
||||
CommandParameter="{x:Bind}"
|
||||
<DataTemplate x:DataType="mailViewModels:AccountCalendarSettingsItemViewModel">
|
||||
<controls:SettingsExpander
|
||||
Margin="0,0,0,8"
|
||||
Description="{x:Bind TimeZone, Mode=OneWay}"
|
||||
Header="{x:Bind Name, Mode=OneWay}"
|
||||
IsClickEnabled="True">
|
||||
<controls:SettingsCard.HeaderIcon>
|
||||
<FontIcon Glyph="" />
|
||||
</controls:SettingsCard.HeaderIcon>
|
||||
<Border
|
||||
Width="32"
|
||||
Height="32"
|
||||
Background="{x:Bind BackgroundColorHex, Mode=OneWay}"
|
||||
CornerRadius="4" />
|
||||
</controls:SettingsCard>
|
||||
IsExpanded="False">
|
||||
<controls:SettingsExpander.HeaderIcon>
|
||||
<SymbolIcon Foreground="{x:Bind helpers:XamlHelpers.GetSolidColorBrushFromHex(BackgroundColorHex), Mode=OneWay}" Symbol="Calendar" />
|
||||
</controls:SettingsExpander.HeaderIcon>
|
||||
<controls:SettingsExpander.Items>
|
||||
|
||||
<controls:SettingsCard Description="{x:Bind domain:Translator.CalendarAccountSettings_AccountColorDescription, Mode=OneTime}" Header="{x:Bind domain:Translator.CalendarAccountSettings_AccountColor, Mode=OneTime}">
|
||||
<controls:SettingsCard.HeaderIcon>
|
||||
<FontIcon Glyph="" />
|
||||
</controls:SettingsCard.HeaderIcon>
|
||||
<Border
|
||||
Width="32"
|
||||
Height="32"
|
||||
Background="{x:Bind helpers:XamlHelpers.GetSolidColorBrushFromHex(BackgroundColorHex), Mode=OneWay}"
|
||||
CornerRadius="4" />
|
||||
</controls:SettingsCard>
|
||||
|
||||
<controls:SettingsCard Description="{x:Bind domain:Translator.CalendarAccountSettings_SyncEnabledDescription, Mode=OneTime}" Header="{x:Bind domain:Translator.CalendarAccountSettings_SyncEnabled, Mode=OneTime}">
|
||||
<controls:SettingsCard.HeaderIcon>
|
||||
<FontIcon Glyph="" />
|
||||
</controls:SettingsCard.HeaderIcon>
|
||||
<ToggleSwitch
|
||||
IsOn="{x:Bind IsSynchronizationEnabled, Mode=OneWay}"
|
||||
Tag="{x:Bind}"
|
||||
Toggled="CalendarSynchronizationToggled" />
|
||||
</controls:SettingsCard>
|
||||
|
||||
<controls:SettingsCard Description="{x:Bind domain:Translator.CalendarAccountSettings_DefaultShowAsDescription, Mode=OneTime}" Header="{x:Bind domain:Translator.CalendarAccountSettings_DefaultShowAs, Mode=OneTime}">
|
||||
<controls:SettingsCard.HeaderIcon>
|
||||
<FontIcon Glyph="" />
|
||||
</controls:SettingsCard.HeaderIcon>
|
||||
<ComboBox
|
||||
ItemsSource="{x:Bind ShowAsOptions, Mode=OneWay}"
|
||||
SelectedItem="{x:Bind SelectedShowAsOption, Mode=OneWay}"
|
||||
SelectionChanged="CalendarShowAsSelectionChanged"
|
||||
Tag="{x:Bind}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate x:DataType="mailViewModels:AccountCalendarShowAsOption">
|
||||
<TextBlock Text="{x:Bind DisplayText}" />
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</controls:SettingsCard>
|
||||
</controls:SettingsExpander.Items>
|
||||
</controls:SettingsExpander>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Navigation;
|
||||
using Wino.Core.Domain.Entities.Calendar;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Mail.ViewModels;
|
||||
using Wino.Views.Abstract;
|
||||
|
||||
namespace Wino.Views;
|
||||
@@ -37,11 +37,21 @@ public sealed partial class AccountDetailsPage : AccountDetailsPageAbstract
|
||||
}
|
||||
}
|
||||
|
||||
private void CalendarItemClicked(object sender, RoutedEventArgs e)
|
||||
private async void CalendarSynchronizationToggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is CommunityToolkit.WinUI.Controls.SettingsCard settingsCard && settingsCard.CommandParameter is AccountCalendar calendar)
|
||||
if (sender is ToggleSwitch { Tag: AccountCalendarSettingsItemViewModel calendarItem } toggleSwitch)
|
||||
{
|
||||
ViewModel.CalendarItemClickedCommand?.Execute(calendar);
|
||||
calendarItem.IsSynchronizationEnabled = toggleSwitch.IsOn;
|
||||
await ViewModel.UpdateCalendarSynchronizationAsync(calendarItem.Calendar, toggleSwitch.IsOn);
|
||||
}
|
||||
}
|
||||
|
||||
private async void CalendarShowAsSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (sender is ComboBox { Tag: AccountCalendarSettingsItemViewModel calendarItem, SelectedItem: AccountCalendarShowAsOption option })
|
||||
{
|
||||
calendarItem.SelectedShowAsOption = option;
|
||||
await ViewModel.UpdateCalendarDefaultShowAsAsync(calendarItem.Calendar, option);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user