merged
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using Wino.Core.Domain.Models.Updates;
|
||||
|
||||
namespace Wino.Core.Domain;
|
||||
|
||||
@@ -8,4 +9,6 @@ namespace Wino.Core.Domain;
|
||||
[JsonSerializable(typeof(int))]
|
||||
[JsonSerializable(typeof(List<string>))]
|
||||
[JsonSerializable(typeof(bool))]
|
||||
[JsonSerializable(typeof(UpdateNotes))]
|
||||
[JsonSerializable(typeof(List<UpdateNoteSection>))]
|
||||
public partial class BasicTypesJsonContext : JsonSerializerContext;
|
||||
|
||||
@@ -21,7 +21,6 @@ public static class Constants
|
||||
public const string ToastModeKey = nameof(ToastModeKey);
|
||||
public const string ToastModeMail = nameof(ToastModeMail);
|
||||
public const string ToastModeCalendar = nameof(ToastModeCalendar);
|
||||
|
||||
public const string ClientLogFile = "Client_.log";
|
||||
public const string ServerLogFile = "Server_.log";
|
||||
public const string LogArchiveFileName = "WinoLogs.zip";
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Wino.Core.Domain.Enums;
|
||||
|
||||
public enum AccountSetupStepStatus
|
||||
{
|
||||
Pending,
|
||||
InProgress,
|
||||
Succeeded,
|
||||
Failed
|
||||
}
|
||||
@@ -34,5 +34,10 @@ public enum WinoPage
|
||||
CalendarAccountSettingsPage,
|
||||
EventDetailsPage,
|
||||
SignatureAndEncryptionPage,
|
||||
StoragePage
|
||||
StoragePage,
|
||||
WelcomePageV2,
|
||||
WelcomeHostPage,
|
||||
ProviderSelectionPage,
|
||||
AccountSetupProgressPage,
|
||||
SpecialImapCredentialsPage
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
using Wino.Core.Domain.Models.Common;
|
||||
using Wino.Core.Domain.Models.Printing;
|
||||
using Wino.Core.Domain.Models.Updates;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces;
|
||||
|
||||
@@ -30,4 +31,10 @@ public interface IDialogServiceBase
|
||||
Task<List<SharedFile>> PickFilesAsync(params object[] typeFilters);
|
||||
Task<string> PickFilePathAsync(string saveFileName);
|
||||
Task<WebView2PrintSettingsModel> ShowPrintDialogAsync(WebView2PrintSettingsModel initialSettings = null);
|
||||
|
||||
/// <summary>
|
||||
/// Presents the "What's New" dialog for the current version.
|
||||
/// This dialog is undismissable and runs any pending migrations when the user clicks "Get Started".
|
||||
/// </summary>
|
||||
Task ShowWhatIsNewDialogAsync(UpdateNotes notes);
|
||||
}
|
||||
|
||||
@@ -37,4 +37,10 @@ public interface INewThemeService : IInitializeAsync
|
||||
|
||||
// Backdrop management
|
||||
List<BackdropTypeWrapper> GetAvailableBackdropTypes();
|
||||
|
||||
/// <summary>
|
||||
/// Re-applies the current theme (backdrop, root theme, accent, caption colors)
|
||||
/// to the currently active window. Use after a window transition.
|
||||
/// </summary>
|
||||
Task ApplyThemeToActiveWindowAsync();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using System.Threading.Tasks;
|
||||
using Wino.Core.Domain.Models.Updates;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces;
|
||||
|
||||
public interface IUpdateManager
|
||||
{
|
||||
/// <summary>Loads and parses the update notes for the current version from the bundled asset file.</summary>
|
||||
Task<UpdateNotes> GetLatestUpdateNotesAsync();
|
||||
|
||||
/// <summary>Loads and parses the app feature highlights from the bundled asset file.</summary>
|
||||
Task<List<UpdateNoteSection>> GetFeaturesAsync();
|
||||
|
||||
/// <summary>Returns true if the current version's update notes have not yet been shown to the user.</summary>
|
||||
bool ShouldShowUpdateNotes();
|
||||
|
||||
/// <summary>Stores a flag in local settings indicating the update notes for the current version have been seen.</summary>
|
||||
void MarkUpdateNotesAsSeen();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Accounts;
|
||||
|
||||
public partial class AccountSetupStepModel : ObservableObject
|
||||
{
|
||||
public string Title { get; init; }
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(IsPending))]
|
||||
[NotifyPropertyChangedFor(nameof(IsInProgress))]
|
||||
[NotifyPropertyChangedFor(nameof(IsSucceeded))]
|
||||
[NotifyPropertyChangedFor(nameof(IsFailed))]
|
||||
public partial AccountSetupStepStatus Status { get; set; } = AccountSetupStepStatus.Pending;
|
||||
|
||||
[ObservableProperty]
|
||||
public partial string ErrorMessage { get; set; }
|
||||
|
||||
public bool IsPending => Status == AccountSetupStepStatus.Pending;
|
||||
public bool IsInProgress => Status == AccountSetupStepStatus.InProgress;
|
||||
public bool IsSucceeded => Status == AccountSetupStepStatus.Succeeded;
|
||||
public bool IsFailed => Status == AccountSetupStepStatus.Failed;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Updates;
|
||||
|
||||
public class UpdateNoteSection
|
||||
{
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("imageUrl")]
|
||||
public string ImageUrl { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("imageWidth")]
|
||||
public double? ImageWidth { get; set; }
|
||||
|
||||
[JsonPropertyName("imageHeight")]
|
||||
public double? ImageHeight { get; set; }
|
||||
|
||||
/// <summary>Gets the image width for binding, returning NaN for auto-sizing when not specified.</summary>
|
||||
public double ActualImageWidth => ImageWidth ?? double.NaN;
|
||||
|
||||
/// <summary>Gets the image height for binding, returning NaN for auto-sizing when not specified.</summary>
|
||||
public double ActualImageHeight => ImageHeight ?? double.NaN;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
namespace Wino.Core.Domain.Models.Updates;
|
||||
|
||||
public class UpdateNotes
|
||||
{
|
||||
public List<UpdateNoteSection> Sections { get; set; } = [];
|
||||
}
|
||||
@@ -993,5 +993,66 @@
|
||||
"CalendarAccountSettings_DefaultShowAs": "Default Show As Status",
|
||||
"CalendarAccountSettings_DefaultShowAsDescription": "Default availability status for new events created with this account",
|
||||
"CalendarAccountSettings_PrimaryCalendar": "Primary Calendar",
|
||||
"CalendarAccountSettings_PrimaryCalendarDescription": "Mark this calendar as the primary calendar for the account"
|
||||
"CalendarAccountSettings_PrimaryCalendarDescription": "Mark this calendar as the primary calendar for the account",
|
||||
"WhatIsNew_GetStartedButton": "Get Started",
|
||||
"WhatIsNew_ContinueAnywayButton": "Continue anyway",
|
||||
"WhatIsNew_PreparingForNewVersionButton": "Preparing for new version...",
|
||||
"WhatIsNew_MigrationPreparing_Title": "Preparing your data",
|
||||
"WhatIsNew_MigrationPreparing_Description": "Wino is applying update migrations. Please wait while we prepare your account data for this release.",
|
||||
"WhatIsNew_MigrationFailedMessage": "Applying migrations failed with error code {0}. You may continue to use the application. However, if you encounter serious issues please re-install the application.",
|
||||
"WhatIsNew_MigrationNotification_Title": "Wino Mail Updated",
|
||||
"WhatIsNew_MigrationNotification_Message": "Open the app to complete the update and see what's new.",
|
||||
"WelcomeWindow_Title": "Welcome to Wino Mail",
|
||||
"WelcomeWindow_Subtitle": "A native Windows experience for Mail and Calendar.",
|
||||
"WelcomeWindow_WhatsNewTitle": "Latest changes",
|
||||
"WelcomeWindow_FeaturesTitle": "Features",
|
||||
"WelcomeWindow_WhatsNewTab": "What's New",
|
||||
"WelcomeWindow_FeaturesTab": "Features",
|
||||
"WelcomeWindow_GetStartedButton": "Get started by adding an account",
|
||||
"WelcomeWindow_GetStartedDescription": "Add your Outlook, Gmail, or IMAP account to get started with Wino Mail.",
|
||||
"WelcomeWindow_SetupTitle": "Set up your account",
|
||||
"WelcomeWindow_SetupSubtitle": "Choose your email provider to get started",
|
||||
"WelcomeWindow_AddAccountButton": "Add account",
|
||||
"WelcomeWindow_SkipForNow": "Skip for now — I'll set it up later",
|
||||
"WelcomeWindow_AppDescription": "A fast, focused inbox — redesigned for Windows 11",
|
||||
"WelcomeWizard_Step1Title": "Welcome",
|
||||
"WelcomeWizard_Step2Title": "Add Account",
|
||||
"WelcomeWizard_Step3Title": "Finish Setup",
|
||||
"ProviderSelection_Title": "Choose your email provider",
|
||||
"ProviderSelection_Subtitle": "Select a provider below to add your email account to Wino Mail.",
|
||||
"ProviderSelection_AccountNameHeader": "Account Name",
|
||||
"ProviderSelection_AccountNamePlaceholder": "e.g. Personal, Work",
|
||||
"ProviderSelection_DisplayNameHeader": "Display Name",
|
||||
"ProviderSelection_DisplayNamePlaceholder": "e.g. John Doe",
|
||||
"ProviderSelection_EmailHeader": "E-mail Address",
|
||||
"ProviderSelection_EmailPlaceholder": "e.g. johndoe@example.com",
|
||||
"ProviderSelection_AppPasswordHeader": "App-Specific Password",
|
||||
"ProviderSelection_AppPasswordHelp": "How do I get an app-specific password?",
|
||||
"ProviderSelection_CalendarModeHeader": "Calendar Integration",
|
||||
"ProviderSelection_CalendarMode_DisabledTitle": "Disabled",
|
||||
"ProviderSelection_CalendarMode_DisabledDescription": "No calendar integration",
|
||||
"ProviderSelection_CalendarMode_CalDavTitle": "CalDAV Synchronization",
|
||||
"ProviderSelection_CalendarMode_CalDavDescription_Apple": "Your calendar events are synced to Apple servers between your devices.",
|
||||
"ProviderSelection_CalendarMode_CalDavDescription_Yahoo": "Your calendar events are synced to Yahoo servers between your devices.",
|
||||
"ProviderSelection_CalendarMode_LocalTitle": "Local calendar",
|
||||
"ProviderSelection_CalendarMode_LocalDescription": "Your events are stored only on your computer. No server connectivity.",
|
||||
"ProviderSelection_ClearColor": "Clear color",
|
||||
"ProviderSelection_ContinueButton": "Continue",
|
||||
"ProviderSelection_SpecialImap_Subtitle": "Enter your account credentials to connect.",
|
||||
"AccountSetup_Title": "Setting up your account",
|
||||
"AccountSetup_Step_Authenticating": "Authenticating with {0}",
|
||||
"AccountSetup_Step_TestingMailAuth": "Testing mail authentication",
|
||||
"AccountSetup_Step_SyncingFolders": "Synchronizing folder metadata",
|
||||
"AccountSetup_Step_FetchingProfile": "Fetching profile information",
|
||||
"AccountSetup_Step_DiscoveringCalDav": "Discovering CalDAV settings",
|
||||
"AccountSetup_Step_TestingCalendarAuth": "Testing calendar authentication",
|
||||
"AccountSetup_Step_SavingAccount": "Saving account information",
|
||||
"AccountSetup_Step_FetchingCalendarMetadata": "Fetching calendar metadata",
|
||||
"AccountSetup_Step_SyncingAliases": "Synchronizing aliases",
|
||||
"AccountSetup_Step_Finalizing": "Finalizing setup",
|
||||
"AccountSetup_FailureMessage": "Setup failed. Go back to fix your settings, or try again later.",
|
||||
"AccountSetup_SuccessMessage": "Your account has been set up successfully!",
|
||||
"AccountSetup_GoBackButton": "Go Back",
|
||||
"AccountSetup_TryAgainButton": "Try Again",
|
||||
"ImapCalDavSettings_AutoDiscoveryFailed": "Auto-discovery failed. Please enter settings manually in the Advanced tab."
|
||||
}
|
||||
|
||||
@@ -7,4 +7,7 @@ namespace Wino.Core.Domain;
|
||||
/// All translations generated automatically by the source generator.
|
||||
/// </summary>
|
||||
[TranslatorGen]
|
||||
public partial class Translator;
|
||||
public partial class Translator
|
||||
{
|
||||
public static string GetTranslatedString(string key) => Resources.GetTranslatedString(key);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user