Separation of messages. Introducing Wino.Messages library.
This commit is contained in:
54
Wino.Core.Domain/Interfaces/IBaseSynchronizer.cs
Normal file
54
Wino.Core.Domain/Interfaces/IBaseSynchronizer.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MailKit;
|
||||
using Wino.Core.Domain.Entities;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces
|
||||
{
|
||||
public interface IBaseSynchronizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Account that is assigned for this synchronizer.
|
||||
/// </summary>
|
||||
MailAccount Account { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Synchronizer state.
|
||||
/// </summary>
|
||||
AccountSynchronizerState State { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Queues a single request to be executed in the next synchronization.
|
||||
/// </summary>
|
||||
/// <param name="request">Request to queue.</param>
|
||||
void QueueRequest(IRequestBase request);
|
||||
|
||||
/// <summary>
|
||||
/// TODO
|
||||
/// </summary>
|
||||
/// <returns>Whether active synchronization is stopped or not.</returns>
|
||||
bool CancelActiveSynchronization();
|
||||
|
||||
/// <summary>
|
||||
/// Performs a full synchronization with the server with given options.
|
||||
/// This will also prepares batch requests for execution.
|
||||
/// Requests are executed in the order they are queued and happens before the synchronization.
|
||||
/// Result of the execution queue is processed during the synchronization.
|
||||
/// </summary>
|
||||
/// <param name="options">Options for synchronization.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
/// <returns>Result summary of synchronization.</returns>
|
||||
Task<SynchronizationResult> SynchronizeAsync(SynchronizationOptions options, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Downloads a single MIME message from the server and saves it to disk.
|
||||
/// </summary>
|
||||
/// <param name="mailItem">Mail item to download from server.</param>
|
||||
/// <param name="transferProgress">Optional progress reporting for download operation.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
Task DownloadMissingMimeMessageAsync(IMailItem mailItem, ITransferProgress transferProgress, CancellationToken cancellationToken = default);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Wino.Core.Domain.Models.Requests
|
||||
namespace Wino.Core.Domain.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Interface for all messages to report UI changes from synchronizers to UI.
|
||||
12
Wino.Core.Domain/Interfaces/IWinoSynchronizerFactory.cs
Normal file
12
Wino.Core.Domain/Interfaces/IWinoSynchronizerFactory.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Entities;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces
|
||||
{
|
||||
public interface IWinoSynchronizerFactory : IInitializeAsync
|
||||
{
|
||||
IBaseSynchronizer GetAccountSynchronizer(Guid accountId);
|
||||
IBaseSynchronizer CreateNewSynchronizer(MailAccount account);
|
||||
void DeleteSynchronizer(MailAccount account);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Requests
|
||||
namespace Wino.Core.Domain.Models.MailItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines a single rule for toggling user actions if needed.
|
||||
16
Wino.Core.Domain/Models/Reader/WebViewMessage.cs
Normal file
16
Wino.Core.Domain/Models/Reader/WebViewMessage.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Reader
|
||||
{
|
||||
/// <summary>
|
||||
/// Used to pass messages from the webview to the app.
|
||||
/// </summary>
|
||||
public class WebViewMessage
|
||||
{
|
||||
[JsonProperty("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonProperty("value")]
|
||||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Wino.Core.Domain.Models.Requests
|
||||
{
|
||||
// Used to pass messages from the webview to the app.
|
||||
public class WebViewMessage
|
||||
{
|
||||
public string type { get; set; }
|
||||
public string value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,8 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MimeKit" Version="4.4.0" />
|
||||
<PackageReference Include="MimeKit" Version="4.7.1" />
|
||||
<PackageReference Include="MailKit" Version="4.7.1.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Synchronizers;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
|
||||
namespace Wino.Core.Messages.Synchronization
|
||||
{
|
||||
|
||||
@@ -10,9 +10,9 @@ using SqlKata;
|
||||
using Wino.Core.Domain.Entities;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Extensions;
|
||||
using Wino.Core.Messages.Accounts;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Core.Services
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using SQLite;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
|
||||
namespace Wino.Core.Services
|
||||
{
|
||||
|
||||
@@ -13,10 +13,10 @@ using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
using Wino.Core.Extensions;
|
||||
using Wino.Core.MenuItems;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Core.Services
|
||||
{
|
||||
|
||||
@@ -13,8 +13,8 @@ using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Comparers;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Extensions;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Core.Services
|
||||
{
|
||||
|
||||
@@ -9,7 +9,6 @@ using Wino.Core.Domain.Exceptions;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Core.Services
|
||||
|
||||
@@ -21,50 +21,6 @@ using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Core.Synchronizers
|
||||
{
|
||||
public interface IBaseSynchronizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Account that is assigned for this synchronizer.
|
||||
/// </summary>
|
||||
MailAccount Account { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Synchronizer state.
|
||||
/// </summary>
|
||||
AccountSynchronizerState State { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Queues a single request to be executed in the next synchronization.
|
||||
/// </summary>
|
||||
/// <param name="request">Request to queue.</param>
|
||||
void QueueRequest(IRequestBase request);
|
||||
|
||||
/// <summary>
|
||||
/// TODO
|
||||
/// </summary>
|
||||
/// <returns>Whether active synchronization is stopped or not.</returns>
|
||||
bool CancelActiveSynchronization();
|
||||
|
||||
/// <summary>
|
||||
/// Performs a full synchronization with the server with given options.
|
||||
/// This will also prepares batch requests for execution.
|
||||
/// Requests are executed in the order they are queued and happens before the synchronization.
|
||||
/// Result of the execution queue is processed during the synchronization.
|
||||
/// </summary>
|
||||
/// <param name="options">Options for synchronization.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
/// <returns>Result summary of synchronization.</returns>
|
||||
Task<SynchronizationResult> SynchronizeAsync(SynchronizationOptions options, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Downloads a single MIME message from the server and saves it to disk.
|
||||
/// </summary>
|
||||
/// <param name="mailItem">Mail item to download from server.</param>
|
||||
/// <param name="transferProgress">Optional progress reporting for download operation.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
Task DownloadMissingMimeMessageAsync(IMailItem mailItem, ITransferProgress transferProgress, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
public abstract class BaseSynchronizer<TBaseRequest, TMessageType> : BaseMailIntegrator<TBaseRequest>, IBaseSynchronizer
|
||||
{
|
||||
private SemaphoreSlim synchronizationSemaphore = new(1);
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MailKit" Version="4.6.0" />
|
||||
<PackageReference Include="MailKit" Version="4.7.1.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Graph" Version="5.55.0" />
|
||||
<PackageReference Include="Microsoft.Identity.Client" Version="4.47.2" />
|
||||
<PackageReference Include="MimeKit" Version="4.6.0" />
|
||||
<PackageReference Include="MimeKit" Version="4.7.1" />
|
||||
<PackageReference Include="morelinq" Version="4.1.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="Nito.AsyncEx.Tasks" Version="5.1.2" />
|
||||
@@ -37,5 +37,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Wino.Core.Domain\Wino.Core.Domain.csproj" />
|
||||
<ProjectReference Include="..\Wino.Messages\Wino.Messages.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -10,13 +10,6 @@ using Wino.Core.Synchronizers;
|
||||
|
||||
namespace Wino.Core
|
||||
{
|
||||
public interface IWinoSynchronizerFactory : IInitializeAsync
|
||||
{
|
||||
IBaseSynchronizer GetAccountSynchronizer(Guid accountId);
|
||||
IBaseSynchronizer CreateNewSynchronizer(MailAccount account);
|
||||
void DeleteSynchronizer(MailAccount account);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Factory that keeps track of all integrator with associated mail accounts.
|
||||
/// Synchronizer per-account makes sense because re-generating synchronizers are not ideal.
|
||||
@@ -82,7 +75,6 @@ namespace Wino.Core
|
||||
return new OutlookSynchronizer(mailAccount, outlookAuthenticator, _outlookChangeProcessor);
|
||||
case Domain.Enums.MailProviderType.Gmail:
|
||||
var gmailAuthenticator = new GmailAuthenticator(_tokenService, _nativeAppService);
|
||||
|
||||
return new GmailSynchronizer(mailAccount, gmailAuthenticator, _gmailChangeProcessor);
|
||||
case Domain.Enums.MailProviderType.Office365:
|
||||
break;
|
||||
|
||||
@@ -12,8 +12,8 @@ using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Messages.Navigation;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Mail.ViewModels
|
||||
{
|
||||
|
||||
@@ -15,11 +15,11 @@ using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Exceptions;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Store;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
using Wino.Core.Messages.Authorization;
|
||||
using Wino.Core.Messages.Navigation;
|
||||
using Wino.Core.Requests;
|
||||
using Wino.Mail.ViewModels.Data;
|
||||
|
||||
namespace Wino.Mail.ViewModels
|
||||
|
||||
@@ -18,6 +18,7 @@ using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
using Wino.Core.MenuItems;
|
||||
using Wino.Core.Messages.Accounts;
|
||||
@@ -25,7 +26,6 @@ using Wino.Core.Messages.Mails;
|
||||
using Wino.Core.Messages.Navigation;
|
||||
using Wino.Core.Messages.Shell;
|
||||
using Wino.Core.Messages.Synchronization;
|
||||
using Wino.Core.Requests;
|
||||
using Wino.Core.Services;
|
||||
|
||||
namespace Wino.Mail.ViewModels
|
||||
|
||||
@@ -7,7 +7,6 @@ using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Requests;
|
||||
|
||||
namespace Wino.Mail.ViewModels
|
||||
{
|
||||
|
||||
@@ -8,8 +8,8 @@ using CommunityToolkit.Mvvm.Messaging;
|
||||
using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Messages.Navigation;
|
||||
using Wino.Core.Requests;
|
||||
using Wino.Mail.ViewModels.Data;
|
||||
|
||||
namespace Wino.Mail.ViewModels
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Wino.Core.Domain\Wino.Core.Domain.csproj" />
|
||||
<ProjectReference Include="..\Wino.Core\Wino.Core.csproj" />
|
||||
<ProjectReference Include="..\Wino.Messages\Wino.Messages.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -10,7 +10,7 @@ using Windows.UI.Xaml.Controls;
|
||||
using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Entities;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Reader;
|
||||
using Wino.Views.Settings;
|
||||
|
||||
namespace Wino.Dialogs
|
||||
@@ -314,41 +314,41 @@ namespace Wino.Dialogs
|
||||
{
|
||||
var change = JsonConvert.DeserializeObject<WebViewMessage>(args.WebMessageAsJson);
|
||||
|
||||
if (change.type == "bold")
|
||||
if (change.Type == "bold")
|
||||
{
|
||||
BoldButton.IsChecked = change.value == "true";
|
||||
BoldButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "italic")
|
||||
else if (change.Type == "italic")
|
||||
{
|
||||
ItalicButton.IsChecked = change.value == "true";
|
||||
ItalicButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "underline")
|
||||
else if (change.Type == "underline")
|
||||
{
|
||||
UnderlineButton.IsChecked = change.value == "true";
|
||||
UnderlineButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "strikethrough")
|
||||
else if (change.Type == "strikethrough")
|
||||
{
|
||||
StrokeButton.IsChecked = change.value == "true";
|
||||
StrokeButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "ol")
|
||||
else if (change.Type == "ol")
|
||||
{
|
||||
OrderedListButton.IsChecked = change.value == "true";
|
||||
OrderedListButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "ul")
|
||||
else if (change.Type == "ul")
|
||||
{
|
||||
BulletListButton.IsChecked = change.value == "true";
|
||||
BulletListButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "indent")
|
||||
else if (change.Type == "indent")
|
||||
{
|
||||
IncreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true;
|
||||
IncreaseIndentButton.IsEnabled = change.Value == "disabled" ? false : true;
|
||||
}
|
||||
else if (change.type == "outdent")
|
||||
else if (change.Type == "outdent")
|
||||
{
|
||||
DecreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true;
|
||||
DecreaseIndentButton.IsEnabled = change.Value == "disabled" ? false : true;
|
||||
}
|
||||
else if (change.type == "alignment")
|
||||
else if (change.Type == "alignment")
|
||||
{
|
||||
var parsedValue = change.value switch
|
||||
var parsedValue = change.Value switch
|
||||
{
|
||||
"jodit-icon_left" => 0,
|
||||
"jodit-icon_center" => 1,
|
||||
|
||||
@@ -15,10 +15,10 @@ using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
using Wino.Core.Messages.Shell;
|
||||
using Wino.Core.Messages.Synchronization;
|
||||
using Wino.Core.Requests;
|
||||
using Wino.Core.UWP.Extensions;
|
||||
using Wino.Dialogs;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Entities;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Domain.Models.Reader;
|
||||
using Wino.Core.Messages.Mails;
|
||||
using Wino.Core.Messages.Shell;
|
||||
using Wino.Extensions;
|
||||
@@ -478,41 +478,41 @@ namespace Wino.Views
|
||||
{
|
||||
var change = JsonConvert.DeserializeObject<WebViewMessage>(args.WebMessageAsJson);
|
||||
|
||||
if (change.type == "bold")
|
||||
if (change.Type == "bold")
|
||||
{
|
||||
BoldButton.IsChecked = change.value == "true";
|
||||
BoldButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "italic")
|
||||
else if (change.Type == "italic")
|
||||
{
|
||||
ItalicButton.IsChecked = change.value == "true";
|
||||
ItalicButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "underline")
|
||||
else if (change.Type == "underline")
|
||||
{
|
||||
UnderlineButton.IsChecked = change.value == "true";
|
||||
UnderlineButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "strikethrough")
|
||||
else if (change.Type == "strikethrough")
|
||||
{
|
||||
StrokeButton.IsChecked = change.value == "true";
|
||||
StrokeButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "ol")
|
||||
else if (change.Type == "ol")
|
||||
{
|
||||
OrderedListButton.IsChecked = change.value == "true";
|
||||
OrderedListButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "ul")
|
||||
else if (change.Type == "ul")
|
||||
{
|
||||
BulletListButton.IsChecked = change.value == "true";
|
||||
BulletListButton.IsChecked = change.Value == "true";
|
||||
}
|
||||
else if (change.type == "indent")
|
||||
else if (change.Type == "indent")
|
||||
{
|
||||
IncreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true;
|
||||
IncreaseIndentButton.IsEnabled = change.Value == "disabled" ? false : true;
|
||||
}
|
||||
else if (change.type == "outdent")
|
||||
else if (change.Type == "outdent")
|
||||
{
|
||||
DecreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true;
|
||||
DecreaseIndentButton.IsEnabled = change.Value == "disabled" ? false : true;
|
||||
}
|
||||
else if (change.type == "alignment")
|
||||
else if (change.Type == "alignment")
|
||||
{
|
||||
var parsedValue = change.value switch
|
||||
var parsedValue = change.Value switch
|
||||
{
|
||||
"jodit-icon_left" => 0,
|
||||
"jodit-icon_center" => 1,
|
||||
|
||||
@@ -6,8 +6,8 @@ using MoreLinq;
|
||||
using Windows.UI.Xaml.Media.Animation;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
using Wino.Core.Messages.Navigation;
|
||||
using Wino.Core.Requests;
|
||||
using Wino.Mail.ViewModels.Data;
|
||||
using Wino.Views.Abstract;
|
||||
using Wino.Views.Account;
|
||||
|
||||
@@ -802,6 +802,10 @@
|
||||
<Project>{d62f1c03-da57-4709-a640-0283296a8e66}</Project>
|
||||
<Name>Wino.Mail.ViewModels</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Wino.Messages\Wino.Messages.csproj">
|
||||
<Project>{0c307d7e-256f-448c-8265-5622a812fbcc}</Project>
|
||||
<Name>Wino.Messages</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<SDKReference Include="WindowsDesktop, Version=10.0.22621.0">
|
||||
|
||||
14
Wino.Messages/Accounts/AccountMenuItemExtended.cs
Normal file
14
Wino.Messages/Accounts/AccountMenuItemExtended.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Messages.Accounts
|
||||
{
|
||||
/// <summary>
|
||||
/// When menu item for the account is requested to be extended.
|
||||
/// Additional properties are also supported to navigate to correct IMailItem.
|
||||
/// </summary>
|
||||
/// <param name="AutoSelectAccount">Account to extend menu item for.</param>
|
||||
/// <param name="FolderId">Folder to select after expansion.</param>
|
||||
/// <param name="NavigateMailItem">Mail item to select if possible in the expanded folder.</param>
|
||||
public record AccountMenuItemExtended(Guid FolderId, IMailItem NavigateMailItem);
|
||||
}
|
||||
11
Wino.Messages/Accounts/AccountMenuItemsReordered.cs
Normal file
11
Wino.Messages/Accounts/AccountMenuItemsReordered.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wino.Messages.Accounts
|
||||
{
|
||||
/// <summary>
|
||||
/// Emitted when account menu items are reordered.
|
||||
/// </summary>
|
||||
/// <param name="newOrderDictionary">New order info.</param>
|
||||
public record AccountMenuItemsReordered(Dictionary<Guid, int> newOrderDictionary);
|
||||
}
|
||||
7
Wino.Messages/Accounts/AccountsMenuRefreshRequested.cs
Normal file
7
Wino.Messages/Accounts/AccountsMenuRefreshRequested.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Accounts
|
||||
{
|
||||
/// <summary>
|
||||
/// When a full menu refresh for accounts menu is requested.
|
||||
/// </summary>
|
||||
public record AccountsMenuRefreshRequested(bool AutomaticallyNavigateFirstItem = true);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace Wino.Messages.Authorization
|
||||
{
|
||||
/// <summary>
|
||||
/// When Google authentication makes a callback to the app via protocol activation to the app.
|
||||
/// </summary>
|
||||
/// <param name="AuthorizationResponseUri">Callback Uri that Google returned.</param>
|
||||
public record ProtocolAuthorizationCallbackReceived(Uri AuthorizationResponseUri);
|
||||
}
|
||||
7
Wino.Messages/Mails/CancelRenderingContentRequested.cs
Normal file
7
Wino.Messages/Mails/CancelRenderingContentRequested.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When rendered html is requested to cancel.
|
||||
/// </summary>
|
||||
public record CancelRenderingContentRequested;
|
||||
}
|
||||
7
Wino.Messages/Mails/ClearMailSelectionsRequested.cs
Normal file
7
Wino.Messages/Mails/ClearMailSelectionsRequested.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When reset all mail selections requested.
|
||||
/// </summary>
|
||||
public record ClearMailSelectionsRequested;
|
||||
}
|
||||
10
Wino.Messages/Mails/CreateNewComposeMailRequested.cs
Normal file
10
Wino.Messages/Mails/CreateNewComposeMailRequested.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Wino.Core.Domain.Models.Reader;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When a new composing requested.
|
||||
/// </summary>
|
||||
/// <param name="RenderModel"></param>
|
||||
public record CreateNewComposeMailRequested(MailRenderModel RenderModel);
|
||||
}
|
||||
7
Wino.Messages/Mails/DisposeRenderingFrameRequested.cs
Normal file
7
Wino.Messages/Mails/DisposeRenderingFrameRequested.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When rendering frame should be disposed.
|
||||
/// </summary>
|
||||
public class DisposeRenderingFrameRequested { }
|
||||
}
|
||||
8
Wino.Messages/Mails/HtmlRenderingRequested.cs
Normal file
8
Wino.Messages/Mails/HtmlRenderingRequested.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When existing a new html is requested to be rendered due to mail selection or signature.
|
||||
/// </summary>
|
||||
/// <param name="HtmlBody">HTML to render in WebView2.</param>
|
||||
public record HtmlRenderingRequested(string HtmlBody);
|
||||
}
|
||||
12
Wino.Messages/Mails/ImapSetupBackNavigationRequested.cs
Normal file
12
Wino.Messages/Mails/ImapSetupBackNavigationRequested.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When IMAP setup dialog requestes back breadcrumb navigation.
|
||||
/// Not providing PageType will go back to previous page by doing back navigation.
|
||||
/// </summary>
|
||||
/// <param name="PageType">Type to go back.</param>
|
||||
/// <param name="Parameter">Back parameters.</param>
|
||||
public record ImapSetupBackNavigationRequested(Type PageType = null, object Parameter = null);
|
||||
}
|
||||
10
Wino.Messages/Mails/ImapSetupDismissRequested.cs
Normal file
10
Wino.Messages/Mails/ImapSetupDismissRequested.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Wino.Core.Domain.Entities;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When user asked to dismiss IMAP setup dialog.
|
||||
/// </summary>
|
||||
/// <param name="CompletedServerInformation"> Validated server information that is ready to be saved to database. </param>
|
||||
public record ImapSetupDismissRequested(CustomServerInformation CompletedServerInformation = null);
|
||||
}
|
||||
11
Wino.Messages/Mails/ImapSetupNavigationRequested.cs
Normal file
11
Wino.Messages/Mails/ImapSetupNavigationRequested.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When IMAP setup dialog breadcrumb navigation requested.
|
||||
/// </summary>
|
||||
/// <param name="PageType">Page type to navigate.</param>
|
||||
/// <param name="Parameter">Navigation parameters.</param>
|
||||
public record ImapSetupNavigationRequested(Type PageType, object Parameter);
|
||||
}
|
||||
11
Wino.Messages/Mails/MailItemNavigationRequested.cs
Normal file
11
Wino.Messages/Mails/MailItemNavigationRequested.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When a IMailItem needs to be navigated (or selected)
|
||||
/// </summary>
|
||||
/// <param name="UniqueMailId">UniqueId of the mail to navigate.</param>
|
||||
/// <param name="ScrollToItem">Whether navigated item should be scrolled to or not..</param>
|
||||
public record MailItemNavigationRequested(Guid UniqueMailId, bool ScrollToItem = false);
|
||||
}
|
||||
17
Wino.Messages/Mails/NavigateMailFolderEvent.cs
Normal file
17
Wino.Messages/Mails/NavigateMailFolderEvent.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System.Threading.Tasks;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Navigation;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// Selects the given FolderMenuItem in the shell folders list.
|
||||
/// </summary>
|
||||
public class NavigateMailFolderEvent : NavigateMailFolderEventArgs
|
||||
{
|
||||
public NavigateMailFolderEvent(IBaseFolderMenuItem baseFolderMenuItem, TaskCompletionSource<bool> folderInitLoadAwaitTask = null)
|
||||
: base(baseFolderMenuItem, folderInitLoadAwaitTask)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
6
Wino.Messages/Mails/RefreshUnreadCountsMessage.cs
Normal file
6
Wino.Messages/Mails/RefreshUnreadCountsMessage.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
public record RefreshUnreadCountsMessage(Guid AccountId);
|
||||
}
|
||||
11
Wino.Messages/Mails/SaveAsPDFRequested.cs
Normal file
11
Wino.Messages/Mails/SaveAsPDFRequested.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When mail save as PDF requested.
|
||||
/// </summary>
|
||||
public record SaveAsPDFRequested(string FileSavePath);
|
||||
}
|
||||
8
Wino.Messages/Mails/SelectedMailItemsChanged.cs
Normal file
8
Wino.Messages/Mails/SelectedMailItemsChanged.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Wino.Messages.Mails
|
||||
{
|
||||
/// <summary>
|
||||
/// When selected mail count is changed.
|
||||
/// </summary>
|
||||
/// <param name="SelectedItemCount">New selected mail count.</param>
|
||||
public record SelectedMailItemsChanged(int SelectedItemCount);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Navigation
|
||||
{
|
||||
/// <summary>
|
||||
/// When back navigation is requested for breadcrumb pages.
|
||||
/// </summary>
|
||||
public record BackBreadcrumNavigationRequested { }
|
||||
}
|
||||
12
Wino.Messages/Navigation/BreadcrumbNavigationRequested.cs
Normal file
12
Wino.Messages/Navigation/BreadcrumbNavigationRequested.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Messages.Navigation
|
||||
{
|
||||
/// <summary>
|
||||
/// When Breadcrumb control navigation requested.
|
||||
/// </summary>
|
||||
/// <param name="PageTitle">Title to display for the page.</param>
|
||||
/// <param name="PageType">Enum equilavent of the page to navigate.</param>
|
||||
/// <param name="Parameter">Additional parameters to the page.</param>
|
||||
public record BreadcrumbNavigationRequested(string PageTitle, WinoPage PageType, object Parameter = null);
|
||||
}
|
||||
7
Wino.Messages/Navigation/NavigateSettingsRequested.cs
Normal file
7
Wino.Messages/Navigation/NavigateSettingsRequested.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Navigation
|
||||
{
|
||||
/// <summary>
|
||||
/// Navigates to settings page.
|
||||
/// </summary>
|
||||
public record NavigateSettingsRequested;
|
||||
}
|
||||
8
Wino.Messages/Shell/ApplicationThemeChanged.cs
Normal file
8
Wino.Messages/Shell/ApplicationThemeChanged.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// When the application theme changed.
|
||||
/// </summary>
|
||||
/// <param name="IsUnderlyingThemeDark"></param>
|
||||
public record ApplicationThemeChanged(bool IsUnderlyingThemeDark);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
using Wino.Core.Domain.Entities;
|
||||
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// When
|
||||
/// - There is no selection of any folder for any account
|
||||
/// - Multiple accounts exists
|
||||
/// - User clicked 'Create New Mail'
|
||||
///
|
||||
/// flyout must be presented to pick correct account.
|
||||
/// This message will be picked up by UWP Shell.
|
||||
/// </summary>
|
||||
public record CreateNewMailWithMultipleAccountsRequested(IEnumerable<MailAccount> AllAccounts);
|
||||
}
|
||||
17
Wino.Messages/Shell/InfoBarMessageRequested.cs
Normal file
17
Wino.Messages/Shell/InfoBarMessageRequested.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// For displaying right sliding notification message in shell.
|
||||
/// </summary>
|
||||
/// <param name="Severity">Severity of notification.</param>
|
||||
/// <param name="Title">Title of the message.</param>
|
||||
/// <param name="Message">Message content.</param>
|
||||
public record InfoBarMessageRequested(InfoBarMessageType Severity,
|
||||
string Title,
|
||||
string Message,
|
||||
string ActionButtonTitle = "",
|
||||
Action Action = null);
|
||||
}
|
||||
7
Wino.Messages/Shell/LanguageChanged.cs
Normal file
7
Wino.Messages/Shell/LanguageChanged.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// When application language is updated.
|
||||
/// </summary>
|
||||
public record LanguageChanged;
|
||||
}
|
||||
4
Wino.Messages/Shell/MailtoProtocolMessageRequested.cs
Normal file
4
Wino.Messages/Shell/MailtoProtocolMessageRequested.cs
Normal file
@@ -0,0 +1,4 @@
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
public class MailtoProtocolMessageRequested { }
|
||||
}
|
||||
10
Wino.Messages/Shell/NavigationPaneModeChanged.cs
Normal file
10
Wino.Messages/Shell/NavigationPaneModeChanged.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// When navigation pane mode is changed.
|
||||
/// </summary>
|
||||
/// <param name="NewMode">New navigation mode.</param>
|
||||
public record NavigationPaneModeChanged(MenuPaneMode NewMode);
|
||||
}
|
||||
7
Wino.Messages/Shell/ShellStateUpdated.cs
Normal file
7
Wino.Messages/Shell/ShellStateUpdated.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Messages.Shell
|
||||
{
|
||||
/// <summary>
|
||||
/// When reading mail state or reader pane narrowed state is changed.
|
||||
/// </summary>
|
||||
public record ShellStateUpdated;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Messages.Synchronization
|
||||
{
|
||||
public record AccountSynchronizationCompleted(Guid AccountId, SynchronizationCompletedState Result, Guid? SynchronizationTrackingId);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
|
||||
namespace Wino.Messages.Synchronization
|
||||
{
|
||||
/// <summary>
|
||||
/// Emitted when synchronizer state is updated.
|
||||
/// </summary>
|
||||
/// <param name="synchronizer">Account Synchronizer</param>
|
||||
/// <param name="newState">New state.</param>
|
||||
public record AccountSynchronizerStateChanged(IBaseSynchronizer Synchronizer, AccountSynchronizerState NewState);
|
||||
}
|
||||
10
Wino.Messages/Synchronization/NewSynchronizationRequested.cs
Normal file
10
Wino.Messages/Synchronization/NewSynchronizationRequested.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
|
||||
namespace Wino.Messages.Synchronization
|
||||
{
|
||||
/// <summary>
|
||||
/// Triggers a new synchronization if possible.
|
||||
/// </summary>
|
||||
/// <param name="Options">Options for synchronization.</param>
|
||||
public record NewSynchronizationRequested(SynchronizationOptions Options);
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Entities;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.Requests;
|
||||
|
||||
namespace Wino.Core.Requests
|
||||
namespace Wino.Core.Domain.Models.Requests
|
||||
{
|
||||
public record MailAddedMessage(MailCopy AddedMail) : IUIMessage;
|
||||
public record MailRemovedMessage(MailCopy RemovedMail) : IUIMessage;
|
||||
19
Wino.Messages/Wino.Messages.csproj
Normal file
19
Wino.Messages/Wino.Messages.csproj
Normal file
@@ -0,0 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<LangVersion>12</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Wino.Core.Domain\Wino.Core.Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IsExternalInit" Version="1.0.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
50
Wino.sln
50
Wino.sln
@@ -15,18 +15,25 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.BackgroundTasks", "Win
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wino.Mail.ViewModels", "Wino.Mail.ViewModels\Wino.Mail.ViewModels.csproj", "{D62F1C03-DA57-4709-A640-0283296A8E66}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wino.Messages", "Wino.Messages\Wino.Messages.csproj", "{0C307D7E-256F-448C-8265-5622A812FBCC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|ARM.ActiveCfg = Debug .NET Native|ARM
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|ARM.Build.0 = Debug .NET Native|ARM
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|ARM.Deploy.0 = Debug .NET Native|ARM
|
||||
@@ -39,6 +46,9 @@ Global
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|x86.Build.0 = Debug|x86
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|ARM.Build.0 = Release|ARM
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|ARM.Deploy.0 = Release|ARM
|
||||
@@ -51,6 +61,8 @@ Global
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|x86.ActiveCfg = Release|x86
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|x86.Build.0 = Release|x86
|
||||
{68A432B8-C1B7-494C-8D6D-230788EA683E}.Release|x86.Deploy.0 = Release|x86
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||
@@ -59,6 +71,8 @@ Global
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||
@@ -67,6 +81,8 @@ Global
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|x64.Build.0 = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E6B1632A-8901-41E8-9DDF-6793C7698B0B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
@@ -75,6 +91,8 @@ Global
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|x64.Build.0 = Debug|x64
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Debug|x86.Build.0 = Debug|x86
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|ARM.Build.0 = Release|ARM
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
@@ -83,6 +101,8 @@ Global
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|x64.Build.0 = Release|x64
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|x86.ActiveCfg = Release|x86
|
||||
{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}.Release|x86.Build.0 = Release|x86
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||
@@ -91,6 +111,8 @@ Global
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||
@@ -99,6 +121,8 @@ Global
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CF3312E5-5DA0-4867-9945-49EA7598AF1F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
@@ -107,6 +131,8 @@ Global
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|x64.Build.0 = Debug|x64
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Debug|x86.Build.0 = Debug|x86
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|ARM.Build.0 = Release|ARM
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
@@ -115,6 +141,8 @@ Global
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|x64.Build.0 = Release|x64
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|x86.ActiveCfg = Release|x86
|
||||
{D9EF0F59-F5F2-4D6C-A5BA-84043D8F3E08}.Release|x86.Build.0 = Release|x86
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||
@@ -123,6 +151,8 @@ Global
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||
@@ -131,6 +161,26 @@ Global
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D62F1C03-DA57-4709-A640-0283296A8E66}.Release|x86.Build.0 = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|ARM64.Build.0 = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0C307D7E-256F-448C-8265-5622A812FBCC}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user