Ground work for Wino Calendar. (#475)

Wino Calendar abstractions.
This commit is contained in:
Burak Kaan Köse
2024-11-10 23:28:25 +01:00
committed by GitHub
parent a979e8430f
commit d1d6f12f05
486 changed files with 7969 additions and 2708 deletions
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
namespace Wino.Core.Domain.Interfaces
{
@@ -1,4 +1,4 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
namespace Wino.Core.Domain.Interfaces
{
@@ -1,7 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Models.Accounts;
namespace Wino.Core.Domain.Interfaces
@@ -7,5 +7,6 @@
bool ContainsResourceKey(string resourceKey);
void ReplaceResource(string resourceKey, object resource);
T GetLastResource();
TReturnType GetResource<TReturnType>(string resourceKey);
}
}
@@ -1,5 +1,5 @@
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Interfaces
@@ -1,7 +1,7 @@
using System.Threading;
using System.Threading.Tasks;
using MailKit;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
@@ -9,7 +9,7 @@ using Wino.Core.Domain.Models.Synchronization;
namespace Wino.Core.Domain.Interfaces
{
public interface IBaseSynchronizer
public interface IBaseMailSynchronizer
{
/// <summary>
/// Account that is assigned for this synchronizer.
@@ -0,0 +1,6 @@
namespace Wino.Core.Domain.Interfaces
{
public interface ICalendarDialogService : IDialogServiceBase
{
}
}
@@ -0,0 +1,14 @@
using System;
using Itenso.TimePeriod;
namespace Wino.Core.Domain.Interfaces
{
public interface ICalendarItem
{
string Name { get; }
Guid Id { get; }
DateTime StartTime { get; }
DateTime EndTime { get; }
TimeRange Period { get; }
}
}
@@ -1,4 +1,4 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
namespace Wino.Core.Domain.Interfaces
{
@@ -1,5 +1,5 @@
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
namespace Wino.Core.Domain.Interfaces
{
@@ -0,0 +1,25 @@
using System;
using System.Threading.Tasks;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Interfaces
{
public interface IDialogServiceBase
{
Task<string> PickWindowsFolderAsync();
Task<byte[]> PickWindowsFileContentAsync(params object[] typeFilters);
Task<bool> ShowConfirmationDialogAsync(string question, string title, string confirmationButtonTitle);
Task ShowMessageAsync(string message, string title, WinoCustomMessageDialogIcon icon);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType, string actionButtonText, Action action);
void ShowNotSupportedMessage();
Task<string> ShowTextInputDialogAsync(string currentInput, string dialogTitle, string dialogDescription, string primaryButtonText);
Task<bool> ShowWinoCustomMessageDialogAsync(string title,
string description,
string approveButtonText,
WinoCustomMessageDialogIcon? icon,
string cancelButtonText = "",
string dontAskAgainConfigurationKey = "");
Task<bool> ShowCustomThemeBuilderDialogAsync();
}
}
@@ -1,5 +1,5 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Folders;
@@ -1,7 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.Folders;
@@ -1,5 +1,5 @@
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Shared;
namespace Wino.Core.Domain.Interfaces
{
@@ -2,33 +2,24 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.Folders;
namespace Wino.Core.Domain.Interfaces
{
public interface IDialogService
public interface IMailDialogService : IDialogServiceBase
{
Task<string> PickWindowsFolderAsync();
Task<byte[]> PickWindowsFileContentAsync(params object[] typeFilters);
Task<bool> ShowConfirmationDialogAsync(string question, string title, string confirmationButtonTitle);
Task<bool> ShowHardDeleteConfirmationAsync();
Task HandleSystemFolderConfigurationDialogAsync(Guid accountId, IFolderService folderService);
Task<bool> ShowCustomThemeBuilderDialogAsync();
Task ShowMessageAsync(string message, string title, WinoCustomMessageDialogIcon icon);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType, string actionButtonText, Action action);
void ShowNotSupportedMessage();
// Custom dialogs
Task<IMailItemFolder> ShowMoveMailFolderDialogAsync(List<IMailItemFolder> availableFolders);
Task<AccountCreationDialogResult> ShowNewAccountMailProviderDialogAsync(List<IProviderDetail> availableProviders);
IAccountCreationDialog GetAccountCreationDialog(MailProviderType type);
Task<string> ShowTextInputDialogAsync(string currentInput, string dialogTitle, string dialogDescription, string primaryButtonText);
Task<MailAccount> ShowEditAccountDialogAsync(MailAccount account);
Task<MailAccount> ShowAccountPickerDialogAsync(List<MailAccount> availableAccounts);
@@ -58,11 +49,6 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
/// <returns>Created alias model if not canceled.</returns>
Task<ICreateAccountAliasDialog> ShowCreateAccountAliasDialogAsync();
Task<bool> ShowWinoCustomMessageDialogAsync(string title,
string description,
string approveButtonText,
WinoCustomMessageDialogIcon? icon,
string cancelButtonText = "",
string dontAskAgainConfigurationKey = "");
}
}
+2 -1
View File
@@ -2,7 +2,8 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Models.MailItem;
namespace Wino.Core.Domain.Interfaces
@@ -1,5 +1,6 @@
using System;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Calendar;
using Wino.Core.Domain.Models.Reader;
namespace Wino.Core.Domain.Interfaces
@@ -11,6 +12,37 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
event EventHandler<string> PreferenceChanged;
#region Common
/// <summary>
/// Setting: Whether logs are enabled or not.
/// </summary>
bool IsLoggingEnabled { get; set; }
/// <summary>
/// Setting: Display language for the application.
/// </summary>
AppLanguage CurrentLanguage { get; set; }
/// <summary>
/// Setting: Whether the navigation pane is opened on the last session or not.
/// </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>
bool Prefer24HourTimeFormat { get; set; }
#endregion
#region Mail
/// <summary>
/// Setting: For changing the mail display container mode.
/// </summary>
@@ -21,11 +53,6 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
MailMarkAsOption MarkAsPreference { get; set; }
/// <summary>
/// Setting: Preferred time format for mail display.
/// </summary>
bool Prefer24HourTimeFormat { get; set; }
/// <summary>
/// Setting: How many seconds should be waited on rendering page to mark item as read.
/// </summary>
@@ -101,11 +128,6 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
MailOperation RightHoverAction { get; set; }
/// <summary>
/// Setting: Whether logs are enabled or not.
/// </summary>
bool IsLoggingEnabled { get; set; }
/// <summary>
/// Setting: Whether Mailkit Protocol Logger is enabled for ImapTestService or not.
/// </summary>
@@ -116,10 +138,7 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
Guid? StartupEntityId { get; set; }
/// <summary>
/// Setting: Display language for the application.
/// </summary>
AppLanguage CurrentLanguage { get; set; }
/// <summary>
/// Setting: Display font for the mail reader.
@@ -141,24 +160,31 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
int ComposerFontSize { get; set; }
/// <summary>
/// Setting: Whether the navigation pane is opened on the last session or not.
/// </summary>
bool IsNavigationPaneOpened { get; set; }
/// <summary>
/// Setting: Whether the next item should be automatically selected once the current item is moved or removed.
/// </summary>
bool AutoSelectNextItem { 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: Whether the mail list action bar is enabled or not.
/// </summary>
bool IsMailListActionBarEnabled { get; set; }
#endregion
#region Calendar
DayOfWeek FirstDayOfWeek { get; set; }
TimeSpan WorkingHourStart { get; set; }
TimeSpan WorkingHourEnd { get; set; }
DayOfWeek WorkingDayStart { get; set; }
DayOfWeek WorkingDayEnd { get; set; }
double HourHeight { get; set; }
CalendarSettings GetCurrentCalendarSettings();
#endregion
}
}
@@ -1,5 +1,5 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Interfaces
@@ -0,0 +1,10 @@
using System.Collections.Generic;
using Wino.Core.Domain.Models.Settings;
namespace Wino.Core.Domain.Interfaces
{
public interface ISettingsBuilderService
{
List<SettingOption> GetSettingItems();
}
}
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
namespace Wino.Core.Domain.Interfaces
{
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Interfaces
{
@@ -43,5 +44,15 @@ namespace Wino.Core.Domain.Interfaces
/// Setting: Mail list pane length for listing mails.
/// </summary>
double MailListPaneLength { get; set; }
/// <summary>
/// Setting: Calendar display type.
/// </summary>
CalendarDisplayType CalendarDisplayType { get; set; }
/// <summary>
/// Setting: Calendar display count for the day view.
/// </summary>
int DayDisplayCount { get; set; }
}
}
@@ -5,7 +5,7 @@ namespace Wino.Core.Domain.Interfaces
{
public interface ISynchronizerFactory
{
Task<IBaseSynchronizer> GetAccountSynchronizerAsync(Guid accountId);
Task<IBaseMailSynchronizer> GetAccountSynchronizerAsync(Guid accountId);
Task InitializeAsync();
}
}
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Models.Folders;
using Wino.Core.Domain.Models.MailItem;
@@ -1,18 +1,16 @@
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.MailItem;
using System;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Navigation;
namespace Wino.Core.Domain.Interfaces
{
public interface IWinoNavigationService
public interface INavigationService
{
bool Navigate(WinoPage page,
object parameter = null,
NavigationReferenceFrame frame = NavigationReferenceFrame.ShellFrame,
NavigationTransitionType transition = NavigationTransitionType.None);
void NavigateCompose(IMailItem mailItem, NavigationTransitionType transition = NavigationTransitionType.None);
void NavigateRendering(IMailItem mailItem, NavigationTransitionType transition = NavigationTransitionType.None);
void NavigateRendering(MimeMessageInformation mimeMessageInformation, NavigationTransitionType transition = NavigationTransitionType.None);
void NavigateFolder(NavigateMailFolderEventArgs args);
Type GetPageType(WinoPage winoPage);
}
}