Skip to content

Commit

Permalink
feat: 移植 SettingsExpander 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Blinue committed Dec 11, 2023
1 parent c6c43d1 commit 227cc0d
Show file tree
Hide file tree
Showing 31 changed files with 364 additions and 335 deletions.
4 changes: 4 additions & 0 deletions src/Magpie.App/App.idl
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
namespace Magpie.App {
delegate void SignalDelegate();
}

#include "BoolNegationConverter.idl"
#include "BoolToNegativeVisibilityConverter.idl"
#include "ControlSizeTrigger.idl"
Expand Down
90 changes: 41 additions & 49 deletions src/Magpie.App/HomePage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@
</muxc:InfoBar>
<local:SettingsGroup x:Uid="Home_Shortcuts"
Margin="0,-24,0,0">
<local:SettingsCard2 x:Uid="Home_Shortcuts_Scale" IsWrapEnabled="True">
<local:SettingsCard2 x:Uid="Home_Shortcuts_Scale"
IsWrapEnabled="True">
<local:SettingsCard2.HeaderIcon>
<FontIcon Glyph="&#xE740;" />
</local:SettingsCard2.HeaderIcon>
Expand All @@ -46,7 +47,8 @@
</local:ShortcutControl.Action>
</local:ShortcutControl>
</local:SettingsCard2>
<local:SettingsCard2 x:Uid="Home_Shortcuts_Overlay" IsWrapEnabled="True">
<local:SettingsCard2 x:Uid="Home_Shortcuts_Overlay"
IsWrapEnabled="True">
<local:SettingsCard2.HeaderIcon>
<FontIcon Glyph="&#xE9D9;" />
</local:SettingsCard2.HeaderIcon>
Expand All @@ -58,53 +60,43 @@
</local:SettingsCard2>
</local:SettingsGroup>
<local:SettingsGroup x:Uid="Home_Activation">
<muxc:Expander HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
Style="{StaticResource SettingExpanderStyle}">
<muxc:Expander.Header>
<local:SettingsCard x:Uid="Home_Timer"
Style="{StaticResource ExpanderHeaderSettingStyle}">
<local:SettingsCard.Icon>
<FontIcon Glyph="&#xE916;" />
</local:SettingsCard.Icon>
<local:SettingsCard.ActionContent>
<StackPanel Orientation="Horizontal"
Spacing="8">
<Grid Visibility="{x:Bind ViewModel.IsTimerOn, Mode=OneWay}">
<muxc:ProgressRing Width="30"
Height="30"
FlowDirection="RightToLeft"
IsActive="{x:Bind ViewModel.IsTimerOn, Mode=OneWay}"
IsIndeterminate="False"
Maximum="1"
Minimum="0"
Value="{x:Bind ViewModel.TimerProgressRingValue, Mode=OneWay}" />
<TextBlock Margin="0,-1,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{x:Bind ViewModel.TimerLabelText, Mode=OneWay}" />
</Grid>
<Button Click="{x:Bind ViewModel.ToggleTimer}"
Content="{x:Bind ViewModel.TimerButtonText, Mode=OneWay}"
IsEnabled="{x:Bind ViewModel.IsNotRunning, Mode=OneWay}" />
</StackPanel>
</local:SettingsCard.ActionContent>
</local:SettingsCard>
</muxc:Expander.Header>
<muxc:Expander.Content>
<local:SettingsCard x:Uid="Home_Timer_Delay"
Style="{StaticResource ExpanderContentSettingStyle}">
<local:SettingsCard.ActionContent>
<Slider Width="150"
Loaded="TimerSlider_Loaded"
Maximum="5"
Minimum="1"
TickFrequency="1"
Value="{x:Bind ViewModel.Delay, Mode=TwoWay}" />
</local:SettingsCard.ActionContent>
</local:SettingsCard>
</muxc:Expander.Content>
</muxc:Expander>
<local:SettingsExpander x:Uid="Home_Timer">
<local:SettingsExpander.HeaderIcon>
<FontIcon Glyph="&#xE916;" />
</local:SettingsExpander.HeaderIcon>
<local:SettingsExpander.Content>
<StackPanel Orientation="Horizontal"
Spacing="8">
<Grid Visibility="{x:Bind ViewModel.IsTimerOn, Mode=OneWay}">
<muxc:ProgressRing Width="30"
Height="30"
FlowDirection="RightToLeft"
IsActive="{x:Bind ViewModel.IsTimerOn, Mode=OneWay}"
IsIndeterminate="False"
Maximum="1"
Minimum="0"
Value="{x:Bind ViewModel.TimerProgressRingValue, Mode=OneWay}" />
<TextBlock Margin="0,-1,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{x:Bind ViewModel.TimerLabelText, Mode=OneWay}" />
</Grid>
<Button Click="{x:Bind ViewModel.ToggleTimer}"
Content="{x:Bind ViewModel.TimerButtonText, Mode=OneWay}"
IsEnabled="{x:Bind ViewModel.IsNotRunning, Mode=OneWay}" />
</StackPanel>
</local:SettingsExpander.Content>
<local:SettingsExpander.Items>
<local:SettingsCard2 x:Uid="Home_Timer_Delay">
<Slider Width="150"
Loaded="TimerSlider_Loaded"
Maximum="5"
Minimum="1"
TickFrequency="1"
Value="{x:Bind ViewModel.Delay, Mode=TwoWay}" />
</local:SettingsCard2>
</local:SettingsExpander.Items>
</local:SettingsExpander>
<StackPanel Orientation="Vertical">
<local:SettingsCard x:Uid="Home_AutoRestore"
Visibility="{x:Bind ViewModel.IsWndToRestore, Mode=OneWay, Converter={StaticResource NegativeVisibilityConverter}}">
Expand Down
13 changes: 7 additions & 6 deletions src/Magpie.App/KeyVisual.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,21 @@ namespace winrt::Magpie::App::implementation {
const DependencyProperty KeyVisual::_keyProperty = DependencyProperty::Register(
L"Key",
xaml_typename<int>(),
xaml_typename<Magpie::App::KeyVisual>(),
xaml_typename<class_type>(),
PropertyMetadata(box_value<int>(0), &KeyVisual::_OnPropertyChanged)
);

const DependencyProperty KeyVisual::_visualTypeProperty = DependencyProperty::Register(
L"VisualTypeProperty",
xaml_typename<IInspectable>(),
xaml_typename<Magpie::App::KeyVisual>(),
xaml_typename<class_type>(),
PropertyMetadata(box_value(Magpie::App::VisualType{}), &KeyVisual::_OnPropertyChanged)
);

const DependencyProperty KeyVisual::_isErrorProperty = DependencyProperty::Register(
L"IsError",
xaml_typename<bool>(),
xaml_typename<Magpie::App::KeyVisual>(),
xaml_typename<class_type>(),
PropertyMetadata(box_value(false), &KeyVisual::_OnIsErrorChanged)
);

Expand All @@ -40,6 +40,8 @@ KeyVisual::KeyVisual() {
}

void KeyVisual::OnApplyTemplate() {
base_type::OnApplyTemplate();

_isEnabledChangedRevoker.revoke();

_keyPresenter = GetTemplateChild(L"KeyPresenter").as<ContentPresenter>();
Expand All @@ -49,15 +51,14 @@ void KeyVisual::OnApplyTemplate() {
_SetErrorState();

_isEnabledChangedRevoker = IsEnabledChanged(auto_revoke, { this, &KeyVisual::_IsEnabledChanged });
KeyVisual_base<KeyVisual>::OnApplyTemplate();
}

void KeyVisual::_OnPropertyChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
get_self<KeyVisual>(sender.as<Magpie::App::KeyVisual>())->_Update();
get_self<KeyVisual>(sender.as<class_type>())->_Update();
}

void KeyVisual::_OnIsErrorChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
get_self<KeyVisual>(sender.as<Magpie::App::KeyVisual>())->_SetErrorState();
get_self<KeyVisual>(sender.as<class_type>())->_SetErrorState();
}

void KeyVisual::_IsEnabledChanged(IInspectable const&, DependencyPropertyChangedEventArgs const&) {
Expand Down
16 changes: 8 additions & 8 deletions src/Magpie.App/PageFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,28 @@ namespace winrt::Magpie::App::implementation {
const DependencyProperty PageFrame::TitleProperty = DependencyProperty::Register(
L"Title",
xaml_typename<hstring>(),
xaml_typename<Magpie::App::PageFrame>(),
xaml_typename<class_type>(),
PropertyMetadata(box_value(L""), &PageFrame::_OnTitleChanged)
);

const DependencyProperty PageFrame::IconProperty = DependencyProperty::Register(
L"Icon",
xaml_typename<IconElement>(),
xaml_typename<Magpie::App::PageFrame>(),
xaml_typename<class_type>(),
PropertyMetadata(nullptr, &PageFrame::_OnIconChanged)
);

const DependencyProperty PageFrame::HeaderActionProperty = DependencyProperty::Register(
L"HeaderAction",
xaml_typename<FrameworkElement>(),
xaml_typename<Magpie::App::PageFrame>(),
xaml_typename<class_type>(),
PropertyMetadata(nullptr, &PageFrame::_OnHeaderActionChanged)
);

const DependencyProperty PageFrame::MainContentProperty = DependencyProperty::Register(
L"MainContent",
xaml_typename<IInspectable>(),
xaml_typename<Magpie::App::PageFrame>(),
xaml_typename<class_type>(),
PropertyMetadata(nullptr, &PageFrame::_OnMainContentChanged)
);

Expand Down Expand Up @@ -107,25 +107,25 @@ void PageFrame::_Update() {
}

void PageFrame::_OnTitleChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
PageFrame* that = get_self<PageFrame>(sender.as<Magpie::App::PageFrame>());
PageFrame* that = get_self<PageFrame>(sender.as<class_type>());
that->_Update();
that->_propertyChangedEvent(*that, PropertyChangedEventArgs{ L"Title" });
}

void PageFrame::_OnIconChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
PageFrame* that = get_self<PageFrame>(sender.as<Magpie::App::PageFrame>());
PageFrame* that = get_self<PageFrame>(sender.as<class_type>());
that->_Update();
that->_propertyChangedEvent(*that, PropertyChangedEventArgs{ L"Icon" });
}

void PageFrame::_OnHeaderActionChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
PageFrame* that = get_self<PageFrame>(sender.as<Magpie::App::PageFrame>());
PageFrame* that = get_self<PageFrame>(sender.as<class_type>());
that->_Update();
that->_propertyChangedEvent(*that, PropertyChangedEventArgs{ L"HeaderAction" });
}

void PageFrame::_OnMainContentChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {
PageFrame* that = get_self<PageFrame>(sender.as<Magpie::App::PageFrame>());
PageFrame* that = get_self<PageFrame>(sender.as<class_type>());
that->_propertyChangedEvent(*that, PropertyChangedEventArgs{ L"MainContent" });
}

Expand Down
2 changes: 1 addition & 1 deletion src/Magpie.App/Resources.language-de.resw
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
<data name="Home_AutoRestore.Description" xml:space="preserve">
<value>Automatisch skalieren, sobald das Fenster zum Vordergrund zurück kehrt.</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Verspätetes skalieren</value>
</data>
<data name="Home_Timer_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-en-US.resw
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
<data name="Home_Timer.Description" xml:space="preserve">
<value>Scale the foreground window when timer ends</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Delayed scaling</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
Expand All @@ -156,7 +156,7 @@
<data name="Home_Timer_Cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Delay in seconds</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-es.resw
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@
<data name="Home_Timer.Description" xml:space="preserve">
<value>Escale la ventana de primer plano cuando finalice el temporizador</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Escalado retrasado</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
Expand All @@ -159,7 +159,7 @@
<data name="Home_Timer_Cancel" xml:space="preserve">
<value>Cancelar</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Espera en segundos</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-fr.resw
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@
<data name="About_PageFrame.Title" xml:space="preserve">
<value>A propos</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Délai en secondes</value>
</data>
<data name="Root_About.Content" xml:space="preserve">
Expand All @@ -231,7 +231,7 @@
<data name="Home_AutoRestore_Activate.Content" xml:space="preserve">
<value>Activer</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Mise à l'échelle retardée</value>
</data>
<data name="ShortcutDialog_Description.Text" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-hu.resw
Original file line number Diff line number Diff line change
Expand Up @@ -241,13 +241,13 @@
<data name="About_Version_Version" xml:space="preserve">
<value>Verzió</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Késleltetett méretezés</value>
</data>
<data name="About_PageFrame.Title" xml:space="preserve">
<value>Rólunk</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Késleltetés másodpercben</value>
</data>
<data name="ShortcutDialog_Save" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-id.resw
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@
<data name="Home_PageFrame.Title" xml:space="preserve">
<value>Beranda</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Tunda dalam detik</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down Expand Up @@ -465,7 +465,7 @@
<data name="Home_Timer.Description" xml:space="preserve">
<value>Skalakan window latar depan saat timer berakhir</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Tunda penskalaan</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-it.resw
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,13 @@
<data name="Home_Timer.Description" xml:space="preserve">
<value>Ridimensiona la finestra in primo piano allo scadere del timer</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Ridimensionamento ritardato</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
<value>Ridimensiona dopo {}s</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Ritardo in secondi</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-ja.resw
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,13 @@
<data name="Home_PageFrame.Title" xml:space="preserve">
<value>ホーム</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>タイマー</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
<value>{}秒後にスケーリング</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>カウントダウンタイム</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-ko.resw
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@
<data name="Home_Timer.Description" xml:space="preserve">
<value>타이머가 끝날 때 포그라운드 창을 스케일</value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>타이머</value>
</data>
<data name="Home_Timer_ButtonText" xml:space="preserve">
Expand All @@ -213,7 +213,7 @@
<data name="Home_Timer_Cancel" xml:space="preserve">
<value>취소</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>카운트다운(초)</value>
</data>
<data name="ShortcutDialog_Cancel" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Magpie.App/Resources.language-pt-BR.resw
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@
<data name="Home_AutoRestore_CurWindow" xml:space="preserve">
<value>Janela atual: </value>
</data>
<data name="Home_Timer.Title" xml:space="preserve">
<data name="Home_Timer.Header" xml:space="preserve">
<value>Redimensionamento com atraso</value>
</data>
<data name="Home_Timer_Delay.Title" xml:space="preserve">
<data name="Home_Timer_Delay.Header" xml:space="preserve">
<value>Tempo de atraso em segundos</value>
</data>
<data name="ShortcutDialog_Description.Text" xml:space="preserve">
Expand Down
Loading

0 comments on commit 227cc0d

Please sign in to comment.