Merged feature/vNext. Initial commit for Wino Mail 2.0

This commit is contained in:
Burak Kaan Köse
2026-04-05 16:30:26 +02:00
1513 changed files with 93788 additions and 26896 deletions
@@ -1,4 +1,4 @@
using System;
using System;
using System.ComponentModel;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Calendar;
@@ -6,7 +6,7 @@ using Wino.Core.Domain.Models.Reader;
namespace Wino.Core.Domain.Interfaces;
public interface IPreferencesService: INotifyPropertyChanged
public interface IPreferencesService : INotifyPropertyChanged
{
/// <summary>
/// When any of the preferences are changed.
@@ -30,11 +30,6 @@ public interface IPreferencesService: INotifyPropertyChanged
/// </summary>
bool IsNavigationPaneOpened { get; set; }
/// <summary>
/// Setting: Gets or sets what should happen to server app when the client is terminated.
/// </summary>
ServerBackgroundMode ServerTerminationBehavior { get; set; }
/// <summary>
/// Setting: Preferred time format for mail or calendar header display.
/// </summary>
@@ -57,6 +52,47 @@ public interface IPreferencesService: INotifyPropertyChanged
/// </summary>
int EmailSyncIntervalMinutes { get; set; }
/// <summary>
/// Setting: Default application mode to open when activation does not specify one.
/// </summary>
WinoApplicationMode DefaultApplicationMode { get; set; }
/// <summary>
/// Setting: Whether Microsoft Store update notifications should be shown.
/// </summary>
bool IsStoreUpdateNotificationsEnabled { get; set; }
/// <summary>
/// Setting: Whether the Wino account profile button in the shell title bar should be hidden.
/// </summary>
bool IsWinoAccountButtonHidden { get; set; }
/// <summary>
/// Setting: Default target language code used for AI translation actions.
/// </summary>
string AiDefaultTranslationLanguageCode { get; set; }
/// <summary>
/// Setting: Preferred target language code for AI summarize actions.
/// </summary>
string AiSummarizeLanguageCode { get; set; }
/// <summary>
/// Setting: Preferred folder path used when saving AI summaries.
/// </summary>
string AiSummarySavePath { get; set; }
/// <summary>
/// Serializes the current syncable preferences snapshot.
/// </summary>
string ExportPreferences();
/// <summary>
/// Deserializes and applies a preferences snapshot.
/// Returns the applied and failed property counts.
/// </summary>
(int appliedCount, int failedCount) ImportPreferences(string settingsJson);
#endregion
#region Mail
@@ -96,11 +132,6 @@ public interface IPreferencesService: INotifyPropertyChanged
/// </summary>
bool IsShowPreviewEnabled { get; set; }
/// <summary>
/// Setting: Enable/disable semantic zoom on clicking date headers.
/// </summary>
bool IsSemanticZoomEnabled { get; set; }
/// <summary>
/// Setting: Set whether 'img' tags in rendered HTMLs should be removed.
/// </summary>
@@ -151,11 +182,6 @@ public interface IPreferencesService: INotifyPropertyChanged
/// </summary>
MailOperation RightHoverAction { get; set; }
/// <summary>
/// Setting: Whether Mailkit Protocol Logger is enabled for ImapTestService or not.
/// </summary>
bool IsMailkitProtocolLoggerEnabled { get; set; }
/// <summary>
/// Setting: Which entity id (merged account or folder) should be expanded automatically on startup.
/// </summary>
@@ -215,12 +241,34 @@ public interface IPreferencesService: INotifyPropertyChanged
#region Calendar
DayOfWeek FirstDayOfWeek { get; set; }
bool IsWorkingHoursEnabled { get; set; }
TimeSpan WorkingHourStart { get; set; }
TimeSpan WorkingHourEnd { get; set; }
DayOfWeek WorkingDayStart { get; set; }
DayOfWeek WorkingDayEnd { get; set; }
double HourHeight { get; set; }
string CalendarTimedDayHeaderDateFormat { get; set; }
/// <summary>
/// Setting: Default reminder duration in seconds for new calendar events.
/// Set to 0 to disable default reminders.
/// </summary>
long DefaultReminderDurationInSeconds { get; set; }
/// <summary>
/// Setting: Default snooze duration in minutes for calendar reminder notifications.
/// </summary>
int DefaultSnoozeDurationInMinutes { get; set; }
/// <summary>
/// Setting: How the New Event button chooses a calendar.
/// </summary>
NewEventButtonBehavior NewEventButtonBehavior { get; set; }
/// <summary>
/// Setting: Default calendar used when New Event is configured to always use a specific calendar.
/// </summary>
Guid? DefaultNewEventCalendarId { get; set; }
CalendarSettings GetCurrentCalendarSettings();