Add per-account folder customization page (#855)

Introduce a dedicated settings page that lets users reorder, hide,
and pin/unpin folders per account. Folders are organized into Pinned,
Categories (Gmail only), and More sections with drag-to-reorder via
ListView. New Order column on MailItemFolder persists the custom
layout; the default sort falls back to alphabetic when no custom
order is set. A reset action wipes all customization in a single
transaction and restores system-folder stickiness.

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Burak Kaan Köse
2026-04-16 14:07:17 +02:00
committed by GitHub
parent 0b136b3d66
commit 98eed39fe6
17 changed files with 599 additions and 10 deletions
@@ -0,0 +1,38 @@
using System.Collections.ObjectModel;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Wino.Mail.ViewModels.Data;
using Wino.Views.Abstract;
namespace Wino.Views;
public sealed partial class FolderCustomizationPage : FolderCustomizationPageAbstract
{
public FolderCustomizationPage()
{
InitializeComponent();
}
private async void ListView_DropCompleted(UIElement sender, Microsoft.UI.Xaml.Controls.Primitives.DropCompletedEventArgs args)
{
// ListView.CanReorderItems automatically mutates the backing
// ObservableCollection; persist the new order here.
await ViewModel.PersistLayoutAsync();
}
private async void PinToggle_Click(object sender, RoutedEventArgs e)
{
if (sender is FrameworkElement element && element.DataContext is FolderCustomizationItemViewModel item)
{
await ViewModel.TogglePinAsync(item);
}
}
private async void HideToggle_Click(object sender, RoutedEventArgs e)
{
if (sender is FrameworkElement element && element.DataContext is FolderCustomizationItemViewModel item)
{
await ViewModel.ToggleHiddenAsync(item);
}
}
}