file scoped namespaces (#565)
This commit is contained in:
@@ -7,213 +7,212 @@ using Wino.Core.Domain.Models.Reader;
|
||||
using Wino.Core.UWP.Controls;
|
||||
using Wino.Helpers;
|
||||
|
||||
namespace Wino.MenuFlyouts
|
||||
namespace Wino.MenuFlyouts;
|
||||
|
||||
public partial class FilterMenuFlyout : MenuFlyout
|
||||
{
|
||||
public partial class FilterMenuFlyout : MenuFlyout
|
||||
public static readonly DependencyProperty SelectedFilterChangedCommandProperty = DependencyProperty.Register(nameof(SelectedFilterChangedCommand), typeof(IRelayCommand<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty FilterOptionsProperty = DependencyProperty.Register(nameof(FilterOptions), typeof(List<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged)));
|
||||
public static readonly DependencyProperty SelectedFilterOptionProperty = DependencyProperty.Register(nameof(SelectedFilterOption), typeof(FilterOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, OnSelectedFilterOptionChanged));
|
||||
public static readonly DependencyProperty SelectedSortingOptionProperty = DependencyProperty.Register(nameof(SelectedSortingOption), typeof(SortingOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnSelectedSortingOptionChanged)));
|
||||
public static readonly DependencyProperty SortingOptionsProperty = DependencyProperty.Register(nameof(SortingOptions), typeof(List<SortingOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged)));
|
||||
public static readonly DependencyProperty SelectedSortingOptionChangedCommandProperty = DependencyProperty.Register(nameof(SelectedSortingOptionChangedCommand), typeof(IRelayCommand<SortingOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null));
|
||||
|
||||
public IRelayCommand<FilterOption> SelectedFilterChangedCommand
|
||||
{
|
||||
public static readonly DependencyProperty SelectedFilterChangedCommandProperty = DependencyProperty.Register(nameof(SelectedFilterChangedCommand), typeof(IRelayCommand<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null));
|
||||
public static readonly DependencyProperty FilterOptionsProperty = DependencyProperty.Register(nameof(FilterOptions), typeof(List<FilterOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged)));
|
||||
public static readonly DependencyProperty SelectedFilterOptionProperty = DependencyProperty.Register(nameof(SelectedFilterOption), typeof(FilterOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, OnSelectedFilterOptionChanged));
|
||||
public static readonly DependencyProperty SelectedSortingOptionProperty = DependencyProperty.Register(nameof(SelectedSortingOption), typeof(SortingOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnSelectedSortingOptionChanged)));
|
||||
public static readonly DependencyProperty SortingOptionsProperty = DependencyProperty.Register(nameof(SortingOptions), typeof(List<SortingOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged)));
|
||||
public static readonly DependencyProperty SelectedSortingOptionChangedCommandProperty = DependencyProperty.Register(nameof(SelectedSortingOptionChangedCommand), typeof(IRelayCommand<SortingOption>), typeof(FilterMenuFlyout), new PropertyMetadata(null));
|
||||
get { return (IRelayCommand<FilterOption>)GetValue(SelectedFilterChangedCommandProperty); }
|
||||
set { SetValue(SelectedFilterChangedCommandProperty, value); }
|
||||
}
|
||||
|
||||
public IRelayCommand<FilterOption> SelectedFilterChangedCommand
|
||||
public IRelayCommand<SortingOption> SelectedSortingOptionChangedCommand
|
||||
{
|
||||
get { return (IRelayCommand<SortingOption>)GetValue(SelectedSortingOptionChangedCommandProperty); }
|
||||
set { SetValue(SelectedSortingOptionChangedCommandProperty, value); }
|
||||
}
|
||||
|
||||
public List<FilterOption> FilterOptions
|
||||
{
|
||||
get { return (List<FilterOption>)GetValue(FilterOptionsProperty); }
|
||||
set { SetValue(FilterOptionsProperty, value); }
|
||||
}
|
||||
|
||||
public List<SortingOption> SortingOptions
|
||||
{
|
||||
get { return (List<SortingOption>)GetValue(SortingOptionsProperty); }
|
||||
set { SetValue(SortingOptionsProperty, value); }
|
||||
}
|
||||
|
||||
public FilterOption SelectedFilterOption
|
||||
{
|
||||
get { return (FilterOption)GetValue(SelectedFilterOptionProperty); }
|
||||
set { SetValue(SelectedFilterOptionProperty, value); }
|
||||
}
|
||||
|
||||
public SortingOption SelectedSortingOption
|
||||
{
|
||||
get { return (SortingOption)GetValue(SelectedSortingOptionProperty); }
|
||||
set { SetValue(SelectedSortingOptionProperty, value); }
|
||||
}
|
||||
|
||||
private static void OnSelectedFilterOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar)
|
||||
{
|
||||
get { return (IRelayCommand<FilterOption>)GetValue(SelectedFilterChangedCommandProperty); }
|
||||
set { SetValue(SelectedFilterChangedCommandProperty, value); }
|
||||
bar.SelectFilterOption(bar.SelectedFilterOption);
|
||||
bar.SelectedFilterChangedCommand?.Execute(bar.SelectedFilterOption);
|
||||
}
|
||||
}
|
||||
|
||||
public IRelayCommand<SortingOption> SelectedSortingOptionChangedCommand
|
||||
private static void OnSelectedSortingOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar)
|
||||
{
|
||||
get { return (IRelayCommand<SortingOption>)GetValue(SelectedSortingOptionChangedCommandProperty); }
|
||||
set { SetValue(SelectedSortingOptionChangedCommandProperty, value); }
|
||||
bar.SelectSortingOption(bar.SelectedSortingOption);
|
||||
bar.SelectedSortingOptionChangedCommand?.Execute(bar.SelectedSortingOption);
|
||||
}
|
||||
}
|
||||
|
||||
public List<FilterOption> FilterOptions
|
||||
private ToggleMenuFlyoutItem CreateFilterToggleButton(FilterOption option)
|
||||
{
|
||||
var button = new ToggleMenuFlyoutItem()
|
||||
{
|
||||
get { return (List<FilterOption>)GetValue(FilterOptionsProperty); }
|
||||
set { SetValue(FilterOptionsProperty, value); }
|
||||
}
|
||||
Text = option.Title,
|
||||
Tag = option,
|
||||
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type) },
|
||||
IsChecked = option == SelectedFilterOption
|
||||
};
|
||||
|
||||
public List<SortingOption> SortingOptions
|
||||
button.Click += FilterToggleChecked;
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
private ToggleMenuFlyoutItem CreateSortingToggleButton(SortingOption option)
|
||||
{
|
||||
var button = new ToggleMenuFlyoutItem()
|
||||
{
|
||||
get { return (List<SortingOption>)GetValue(SortingOptionsProperty); }
|
||||
set { SetValue(SortingOptionsProperty, value); }
|
||||
}
|
||||
Text = option.Title,
|
||||
Tag = option,
|
||||
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type)},
|
||||
IsChecked = option == SelectedSortingOption
|
||||
};
|
||||
|
||||
public FilterOption SelectedFilterOption
|
||||
button.Click += SortingOptionChecked;
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
private void SortingOptionChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is ToggleMenuFlyoutItem button)
|
||||
{
|
||||
get { return (FilterOption)GetValue(SelectedFilterOptionProperty); }
|
||||
set { SetValue(SelectedFilterOptionProperty, value); }
|
||||
}
|
||||
button.IsHitTestVisible = false;
|
||||
|
||||
public SortingOption SelectedSortingOption
|
||||
var optionModel = button.Tag as SortingOption;
|
||||
|
||||
SelectSortingOption(optionModel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void FilterToggleChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is ToggleMenuFlyoutItem button)
|
||||
{
|
||||
get { return (SortingOption)GetValue(SelectedSortingOptionProperty); }
|
||||
set { SetValue(SelectedSortingOptionProperty, value); }
|
||||
button.IsHitTestVisible = false;
|
||||
|
||||
var optionModel = button.Tag as FilterOption;
|
||||
|
||||
SelectFilterOption(optionModel);
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnSelectedFilterOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar)
|
||||
{
|
||||
bar.SelectFilterOption(bar.SelectedFilterOption);
|
||||
bar.SelectedFilterChangedCommand?.Execute(bar.SelectedFilterOption);
|
||||
}
|
||||
}
|
||||
private void SelectFilterOption(FilterOption option)
|
||||
{
|
||||
SelectedFilterOption = option;
|
||||
|
||||
private static void OnSelectedSortingOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar)
|
||||
{
|
||||
bar.SelectSortingOption(bar.SelectedSortingOption);
|
||||
bar.SelectedSortingOptionChangedCommand?.Execute(bar.SelectedSortingOption);
|
||||
}
|
||||
}
|
||||
UncheckOtherFilterOptions();
|
||||
}
|
||||
|
||||
private ToggleMenuFlyoutItem CreateFilterToggleButton(FilterOption option)
|
||||
{
|
||||
var button = new ToggleMenuFlyoutItem()
|
||||
{
|
||||
Text = option.Title,
|
||||
Tag = option,
|
||||
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type) },
|
||||
IsChecked = option == SelectedFilterOption
|
||||
};
|
||||
private void SelectSortingOption(SortingOption option)
|
||||
{
|
||||
SelectedSortingOption = option;
|
||||
|
||||
button.Click += FilterToggleChecked;
|
||||
UncheckOtherSortingOptions();
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
private void UnregisterCheckedHandler(ToggleMenuFlyoutItem button)
|
||||
{
|
||||
button.Click -= FilterToggleChecked;
|
||||
}
|
||||
|
||||
private ToggleMenuFlyoutItem CreateSortingToggleButton(SortingOption option)
|
||||
{
|
||||
var button = new ToggleMenuFlyoutItem()
|
||||
{
|
||||
Text = option.Title,
|
||||
Tag = option,
|
||||
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type)},
|
||||
IsChecked = option == SelectedSortingOption
|
||||
};
|
||||
|
||||
button.Click += SortingOptionChecked;
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
private void SortingOptionChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is ToggleMenuFlyoutItem button)
|
||||
{
|
||||
button.IsHitTestVisible = false;
|
||||
|
||||
var optionModel = button.Tag as SortingOption;
|
||||
|
||||
SelectSortingOption(optionModel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void FilterToggleChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is ToggleMenuFlyoutItem button)
|
||||
{
|
||||
button.IsHitTestVisible = false;
|
||||
|
||||
var optionModel = button.Tag as FilterOption;
|
||||
|
||||
SelectFilterOption(optionModel);
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectFilterOption(FilterOption option)
|
||||
{
|
||||
SelectedFilterOption = option;
|
||||
|
||||
UncheckOtherFilterOptions();
|
||||
}
|
||||
|
||||
private void SelectSortingOption(SortingOption option)
|
||||
{
|
||||
SelectedSortingOption = option;
|
||||
|
||||
UncheckOtherSortingOptions();
|
||||
}
|
||||
|
||||
private void UnregisterCheckedHandler(ToggleMenuFlyoutItem button)
|
||||
{
|
||||
button.Click -= FilterToggleChecked;
|
||||
}
|
||||
|
||||
private void UncheckOtherFilterOptions()
|
||||
{
|
||||
if (Items.Any())
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is FilterOption option && option != SelectedFilterOption)
|
||||
{
|
||||
toggleButton.IsChecked = false;
|
||||
toggleButton.IsHitTestVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UncheckOtherSortingOptions()
|
||||
{
|
||||
if (Items.Any())
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is SortingOption option && option != SelectedSortingOption)
|
||||
{
|
||||
toggleButton.IsChecked = false;
|
||||
toggleButton.IsHitTestVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
private void UncheckOtherFilterOptions()
|
||||
{
|
||||
if (Items.Any())
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
if (item is ToggleMenuFlyoutItem toggleButton)
|
||||
if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is FilterOption option && option != SelectedFilterOption)
|
||||
{
|
||||
UnregisterCheckedHandler(toggleButton);
|
||||
toggleButton.IsChecked = false;
|
||||
toggleButton.IsHitTestVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnOptionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
private void UncheckOtherSortingOptions()
|
||||
{
|
||||
if (Items.Any())
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar && bar.SortingOptions != null && bar.FilterOptions != null)
|
||||
foreach (var item in Items)
|
||||
{
|
||||
bar.Dispose();
|
||||
|
||||
bar.Items.Clear();
|
||||
|
||||
if (bar.FilterOptions != null)
|
||||
if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is SortingOption option && option != SelectedSortingOption)
|
||||
{
|
||||
foreach (var item in bar.FilterOptions)
|
||||
{
|
||||
bar.Items.Add(bar.CreateFilterToggleButton(item));
|
||||
}
|
||||
toggleButton.IsChecked = false;
|
||||
toggleButton.IsHitTestVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bar.Items.Add(new MenuFlyoutSeparator());
|
||||
public void Dispose()
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
if (item is ToggleMenuFlyoutItem toggleButton)
|
||||
{
|
||||
UnregisterCheckedHandler(toggleButton);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sorting options.
|
||||
private static void OnOptionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
if (obj is FilterMenuFlyout bar && bar.SortingOptions != null && bar.FilterOptions != null)
|
||||
{
|
||||
bar.Dispose();
|
||||
|
||||
if (bar.SortingOptions != null)
|
||||
bar.Items.Clear();
|
||||
|
||||
if (bar.FilterOptions != null)
|
||||
{
|
||||
foreach (var item in bar.FilterOptions)
|
||||
{
|
||||
foreach (var item in bar.SortingOptions)
|
||||
{
|
||||
bar.Items.Add(bar.CreateSortingToggleButton(item));
|
||||
}
|
||||
bar.Items.Add(bar.CreateFilterToggleButton(item));
|
||||
}
|
||||
}
|
||||
|
||||
bar.Items.Add(new MenuFlyoutSeparator());
|
||||
|
||||
// Sorting options.
|
||||
|
||||
if (bar.SortingOptions != null)
|
||||
{
|
||||
foreach (var item in bar.SortingOptions)
|
||||
{
|
||||
bar.Items.Add(bar.CreateSortingToggleButton(item));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user