UWP .NET9 (#555)

* Ground work for NET9 UWP switch.

* Add launch settings for Wino.Mail

* Added new test WAP project

* fix platforms in slnx solution

* ManagePackageVersionsCentrally set default

* Fixing assets and couple issues with the new packaging project.

* Add back markdown

* Fix nuget warnings

* FIx error in WAP about build tools

* Add build.props with default language preview

* Some AOT compilation progress.

* More AOT stuff.

* Remove deprecated protocol auth activation handler.

* Fix remaining protocol handler for google auth.

* Even more AOT

* More more AOT fixes

* Fix a few more AOT warnings

* Fix signature editor AOT

* Fix composer and renderer AOT JSON

* Outlook Sync AOT

* Fixing bundle generation and package signing.

---------

Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
This commit is contained in:
Aleh Khantsevich
2025-02-14 01:43:52 +01:00
committed by GitHub
parent e8dd8bff44
commit 2ec05ea7cc
151 changed files with 1170 additions and 1962 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ using Wino.Messaging.Client.Shell;
namespace Wino.Core.UWP
{
public class BasePage : Page, IRecipient<LanguageChanged>
public partial class BasePage : Page, IRecipient<LanguageChanged>
{
public UIElement ShellContent
{
+1 -1
View File
@@ -8,7 +8,7 @@ namespace Wino.Core.UWP.Controls
namespace CustomControls
{
public class CustomWrapPanel : Panel
public partial class CustomWrapPanel : Panel
{
protected override Size MeasureOverride(Size availableSize)
{
+1 -1
View File
@@ -4,7 +4,7 @@ using Windows.UI.Xaml.Controls;
namespace Wino.Core.UWP.Controls
{
public class EqualGridPanel : Panel
public partial class EqualGridPanel : Panel
{
public int Rows
{
+5 -5
View File
@@ -120,14 +120,14 @@
Grid.Column="1"
Margin="4,0,0,0"
HorizontalAlignment="Left"
ToolTipService.ToolTip="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Description, Mode=OneWay}"
ToolTipService.ToolTip="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Description}"
Visibility="Collapsed">
<Button.Flyout>
<Flyout x:Name="ReconnectFlyout" Placement="Bottom">
<StackPanel Spacing="12">
<TextBlock
Width="250"
Text="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Description, Mode=OneWay}"
Text="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Description}"
TextWrapping="Wrap" />
<Button
HorizontalAlignment="Right"
@@ -156,7 +156,7 @@
<TextBlock
x:Name="ConnectionStatusTextBlock"
VerticalAlignment="Center"
Text="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Title, Mode=OneWay}" />
Text="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Title}" />
</StackPanel>
</Button>
</Grid>
@@ -170,7 +170,7 @@
<Setter Target="ReconnectingProgressRing.Visibility" Value="Visible" />
<Setter Target="ConnectionStatusButton.Visibility" Value="Visible" />
<Setter Target="DisconnectedPathIcon.Visibility" Value="Collapsed" />
<Setter Target="ConnectionStatusTextBlock.Text" Value="{x:Bind domain:Translator.TitleBarServerReconnectingButton_Title, Mode=OneWay}" />
<Setter Target="ConnectionStatusTextBlock.Text" Value="{x:Bind domain:Translator.TitleBarServerReconnectingButton_Title}" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind helpers:XamlHelpers.ConnectionStatusEquals(ConnectionStatus, enums:WinoServerConnectionStatus.Connecting), Mode=OneWay}" />
@@ -181,7 +181,7 @@
<Setter Target="ConnectionStatusButton.Visibility" Value="Visible" />
<Setter Target="DisconnectedPathIcon.Visibility" Value="Visible" />
<Setter Target="ReconnectingProgressRing.Visibility" Value="Collapsed" />
<Setter Target="ConnectionStatusTextBlock.Text" Value="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Title, Mode=OneWay}" />
<Setter Target="ConnectionStatusTextBlock.Text" Value="{x:Bind domain:Translator.TitleBarServerDisconnectedButton_Title}" />
</VisualState.Setters>
<VisualState.StateTriggers>
<StateTrigger IsActive="{x:Bind helpers:XamlHelpers.ConnectionStatusEquals(ConnectionStatus, enums:WinoServerConnectionStatus.Disconnected), Mode=OneWay}" />
+1 -1
View File
@@ -102,7 +102,7 @@ namespace Wino.Core.UWP.Controls
ViewMessageSource,
}
public class WinoFontIcon : FontIcon
public partial class WinoFontIcon : FontIcon
{
public WinoIconGlyph Icon
{
+1 -1
View File
@@ -3,7 +3,7 @@ using Wino.Core.UWP.Controls;
namespace Wino.Controls
{
public class WinoFontIconSource : Microsoft.UI.Xaml.Controls.FontIconSource
public partial class WinoFontIconSource : Microsoft.UI.Xaml.Controls.FontIconSource
{
public WinoIconGlyph Icon
{
+1 -1
View File
@@ -7,7 +7,7 @@ using Wino.Core.Domain.Enums;
namespace Wino.Core.UWP.Controls
{
public class WinoInfoBar : InfoBar
public partial class WinoInfoBar : InfoBar
{
public static readonly DependencyProperty AnimationTypeProperty = DependencyProperty.Register(nameof(AnimationType), typeof(InfoBarAnimationType), typeof(WinoInfoBar), new PropertyMetadata(InfoBarAnimationType.SlideFromRightToLeft));
public static readonly DependencyProperty DismissIntervalProperty = DependencyProperty.Register(nameof(DismissInterval), typeof(int), typeof(WinoInfoBar), new PropertyMetadata(5, new PropertyChangedCallback(OnDismissIntervalChanged)));
@@ -5,7 +5,7 @@ using Windows.UI.Xaml.Hosting;
namespace Wino.Core.UWP.Controls
{
public class WinoNavigationViewItem : NavigationViewItem
public partial class WinoNavigationViewItem : NavigationViewItem
{
public bool IsDraggingItemOver
{
@@ -1,10 +1,10 @@
using System;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace Wino.Converters
{
public class GridLengthConverter : IValueConverter
public partial class GridLengthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
@@ -1,13 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Data;
namespace Wino.Converters
{
public class ReverseBooleanConverter : IValueConverter
public partial class ReverseBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
@@ -1,14 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace Wino.Converters
{
public class ReverseBooleanToVisibilityConverter : IValueConverter
public partial class ReverseBooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
@@ -6,7 +6,7 @@ namespace Wino.Dialogs
public partial class CustomMessageDialogInformationContainer : ObservableObject
{
[ObservableProperty]
private bool isDontAskChecked;
public partial bool IsDontAskChecked { get; set; }
public CustomMessageDialogInformationContainer(string title, string description, WinoCustomMessageDialogIcon icon, bool isDontAskAgainEnabled)
{
@@ -1,5 +1,7 @@
using System.Threading.Tasks;
using Microsoft.Toolkit.Uwp.Helpers;
using System;
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
using Wino.Core.Domain.Models.Common;
namespace Wino.Core.UWP.Extensions
@@ -8,9 +10,22 @@ namespace Wino.Core.UWP.Extensions
{
public static async Task<SharedFile> ToSharedFileAsync(this Windows.Storage.StorageFile storageFile)
{
var content = await storageFile.ReadBytesAsync();
var content = await storageFile.ToByteArrayAsync();
return new SharedFile(storageFile.Path, content);
}
public static async Task<byte[]> ToByteArrayAsync(this StorageFile file)
{
if (file == null)
throw new ArgumentNullException(nameof(file));
using (var stream = await file.OpenReadAsync())
using (var memoryStream = new MemoryStream())
{
await stream.AsStreamForRead().CopyToAsync(memoryStream);
return memoryStream.ToArray();
}
}
}
}
+1 -1
View File
@@ -103,6 +103,6 @@ namespace Wino.Extensions
}
public static IEnumerable<T> GetValues<T>() => Enum.GetValues(typeof(T)).Cast<T>();
public static T[] GetValues<T>() where T : struct, Enum => Enum.GetValues<T>();
}
}
@@ -0,0 +1,32 @@
using System;
using System.Threading.Tasks;
namespace Wino.Core.UWP.Extensions;
public static class WebViewExtensions
{
/// <summary>
/// Executes a script function in the WebView2 control.
/// </summary>
/// <param name="isChromiumDisposed">Weird parameter that needed in mailRendering page. TODO: should be reconsidered.</param>
/// <param name="parameters">Parameters should be serialized to json</param>
public static async Task<string> ExecuteScriptFunctionAsync(this Microsoft.UI.Xaml.Controls.WebView2 Chromium, string functionName, bool isChromiumDisposed = false, params string[] parameters)
{
string script = functionName + "(" + string.Join(", ", parameters) + ");";
return isChromiumDisposed ? string.Empty : await Chromium.ExecuteScriptAsync(script);
}
public static async Task<string> ExecuteScriptFunctionSafeAsync(this Microsoft.UI.Xaml.Controls.WebView2 Chromium, string functionName, params string[] parameters)
{
if (Chromium == null) return string.Empty;
try
{
return await Chromium.ExecuteScriptFunctionAsync(functionName, parameters: parameters);
}
catch { }
return string.Empty;
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using System.Globalization;
using System.Linq;
using Microsoft.Toolkit.Uwp.Helpers;
using CommunityToolkit.WinUI.Helpers;
using Microsoft.UI.Xaml.Controls;
using Windows.UI;
using Windows.UI.Text;
-29
View File
@@ -1,29 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Wino.Core.UWP")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Wino.Core.UWP")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: ComVisible(false)]
@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains Runtime Directives, specifications about types your application accesses
through reflection and other dynamic code patterns. Runtime Directives are used to control the
.NET Native optimizer and ensure that it does not remove code accessed by your library. If your
library does not do any reflection, then you generally do not need to edit this file. However,
if your library reflects over types, especially types passed to it or derived from its types,
then you should write Runtime Directives.
The most common use of reflection in libraries is to discover information about types passed
to the library. Runtime Directives have three ways to express requirements on types passed to
your library.
1. Parameter, GenericParameter, TypeParameter, TypeEnumerableParameter
Use these directives to reflect over types passed as a parameter.
2. SubTypes
Use a SubTypes directive to reflect over types derived from another type.
3. AttributeImplies
Use an AttributeImplies directive to indicate that your library needs to reflect over
types or methods decorated with an attribute.
For more information on writing Runtime Directives for libraries, please visit
https://go.microsoft.com/fwlink/?LinkID=391919
-->
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Library Name="Wino.Core.UWP">
<!-- add directives for your library here -->
</Library>
</Directives>
@@ -4,7 +4,7 @@ using Wino.Core.UWP.Models.Personalization;
namespace Wino.Core.UWP.Selectors
{
public class AppThemePreviewTemplateSelector : DataTemplateSelector
public partial class AppThemePreviewTemplateSelector : DataTemplateSelector
{
public DataTemplate SystemThemeTemplate { get; set; }
public DataTemplate PreDefinedThemeTemplate { get; set; }
@@ -5,7 +5,7 @@ using Wino.Core.Domain.Enums;
namespace Wino.Core.UWP.Selectors
{
public class CustomWinoMessageDialogIconSelector : DataTemplateSelector
public partial class CustomWinoMessageDialogIconSelector : DataTemplateSelector
{
public DataTemplate InfoIconTemplate { get; set; }
public DataTemplate WarningIconTemplate { get; set; }
@@ -4,7 +4,7 @@ using Wino.Core.Domain.Enums;
namespace Wino.Core.UWP.Selectors
{
public class FileAttachmentTypeSelector : DataTemplateSelector
public partial class FileAttachmentTypeSelector : DataTemplateSelector
{
public DataTemplate None { get; set; }
public DataTemplate Executable { get; set; }
@@ -4,7 +4,7 @@ using Wino.Core.Domain.MenuItems;
namespace Wino.Core.UWP.Selectors
{
public class NavigationMenuTemplateSelector : DataTemplateSelector
public partial class NavigationMenuTemplateSelector : DataTemplateSelector
{
public DataTemplate MenuItemTemplate { get; set; }
public DataTemplate AccountManagementTemplate { get; set; }
+10 -9
View File
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
using System.Globalization;
using Windows.Foundation.Collections;
using Windows.Storage;
using Wino.Core.Domain.Interfaces;
@@ -20,32 +21,32 @@ namespace Wino.Core.UWP.Services
public void SetRoaming(string key, object value)
=> SetInternal(key, value, ApplicationData.Current.RoamingSettings.Values);
private T GetInternal<T>(string key, IPropertySet collection, T defaultValue = default)
private static T GetInternal<T>(string key, IPropertySet collection, T defaultValue = default)
{
if (collection.ContainsKey(key))
if (collection.TryGetValue(key, out object value))
{
var value = collection[key]?.ToString();
var stringValue = value?.ToString();
if (typeof(T).IsEnum)
return (T)Enum.Parse(typeof(T), value);
return (T)Enum.Parse(typeof(T), stringValue);
if (typeof(T) == typeof(Guid?) && Guid.TryParse(value, out Guid guidResult))
if ((typeof(T) == typeof(Guid?) || typeof(T) == typeof(Guid)) && Guid.TryParse(stringValue, out Guid guidResult))
{
return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(value);
return (T)(object)guidResult;
}
if (typeof(T) == typeof(TimeSpan))
{
return (T)(object)TimeSpan.Parse(value);
return (T)(object)TimeSpan.Parse(stringValue);
}
return (T)Convert.ChangeType(value, typeof(T));
return (T)Convert.ChangeType(stringValue, typeof(T));
}
return defaultValue;
}
private void SetInternal(string key, object value, IPropertySet collection)
private static void SetInternal(string key, object value, IPropertySet collection)
=> collection[key] = value?.ToString();
}
}
+1 -2
View File
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Toolkit.Uwp.Helpers;
using Serilog;
using Windows.Storage;
using Windows.Storage.AccessCache;
@@ -146,7 +145,7 @@ namespace Wino.Core.UWP.Services
if (file == null) return [];
return await file.ReadBytesAsync();
return await file.ToByteArrayAsync();
}
public Task ShowMessageAsync(string message, string title, WinoCustomMessageDialogIcon icon = WinoCustomMessageDialogIcon.Information)
@@ -2,7 +2,6 @@
using System.Threading.Tasks;
using Windows.ApplicationModel;
using Windows.Foundation.Metadata;
using Windows.Security.Authentication.Web;
using Windows.Storage;
using Windows.System;
using Windows.UI.Shell;
@@ -21,7 +20,6 @@ namespace Wino.Services
{
private string _mimeMessagesFolder;
private string _editorBundlePath;
private TaskCompletionSource<Uri> authorizationCompletedTaskSource;
public Func<IntPtr> GetCoreWindowHwnd { get; set; }
@@ -107,13 +105,5 @@ namespace Wino.Services
await taskbarManager.RequestPinCurrentAppAsync();
}
public void ContinueAuthorization(Uri authorizationResponseUri)
{
if (authorizationCompletedTaskSource != null)
{
authorizationCompletedTaskSource.TrySetResult(authorizationResponseUri);
}
}
}
}
+7 -8
View File
@@ -7,7 +7,7 @@ using System.Runtime.InteropServices.WindowsRuntime;
using System.Text.Json;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Toolkit.Uwp.Helpers;
using CommunityToolkit.WinUI.Helpers;
using Windows.Storage;
using Windows.UI;
using Windows.UI.ViewManagement;
@@ -19,6 +19,7 @@ using Wino.Core.Domain;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Exceptions;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models;
using Wino.Core.Domain.Models.Personalization;
using Wino.Core.UWP.Extensions;
using Wino.Core.UWP.Models.Personalization;
@@ -168,9 +169,7 @@ namespace Wino.Services
AccentColor = _configurationService.Get(AccentColorKey, string.Empty);
// Set the current theme id. Default to Mica.
var applicationThemeGuid = _configurationService.Get(CurrentApplicationThemeKey, _micaThemeId);
currentApplicationThemeId = Guid.Parse(applicationThemeGuid);
currentApplicationThemeId = _configurationService.Get(CurrentApplicationThemeKey, Guid.Parse(_micaThemeId));
await ApplyCustomThemeAsync(true);
@@ -235,7 +234,7 @@ namespace Wino.Services
// Change accent color if specified.
if (!string.IsNullOrEmpty(hex))
{
var color = Microsoft.Toolkit.Uwp.Helpers.ColorHelper.ToColor(hex);
var color = CommunityToolkit.WinUI.Helpers.ColorHelper.ToColor(hex);
var brush = new SolidColorBrush(color);
if (_applicationResourceManager.ContainsResourceKey("SystemAccentColor"))
@@ -412,7 +411,7 @@ namespace Wino.Services
{
byte[] bytes = new byte[readerStream.Length];
await readerStream.ReadAsync(bytes, 0, bytes.Length);
await readerStream.ReadExactlyAsync(bytes);
var buffer = bytes.AsBuffer();
@@ -422,7 +421,7 @@ namespace Wino.Services
// Save metadata.
var metadataFile = await themeFolder.CreateFileAsync($"{newTheme.Id}.json", CreationCollisionOption.ReplaceExisting);
var serialized = JsonSerializer.Serialize(newTheme);
var serialized = JsonSerializer.Serialize(newTheme, DomainModelsJsonContext.Default.CustomThemeMetadata);
await FileIO.WriteTextAsync(metadataFile, serialized);
return newTheme;
@@ -454,7 +453,7 @@ namespace Wino.Services
{
var fileContent = await FileIO.ReadTextAsync(file);
return JsonSerializer.Deserialize<CustomThemeMetadata>(fileContent);
return JsonSerializer.Deserialize(fileContent, DomainModelsJsonContext.Default.CustomThemeMetadata);
}
public string GetSystemAccentColorHex()
@@ -200,61 +200,61 @@ namespace Wino.Core.UWP.Services
switch (typeName)
{
case nameof(MailAddedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<MailAddedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.MailAddedMessage));
break;
case nameof(MailDownloadedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<MailDownloadedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.MailDownloadedMessage));
break;
case nameof(MailRemovedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<MailRemovedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.MailRemovedMessage));
break;
case nameof(MailUpdatedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<MailUpdatedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.MailUpdatedMessage));
break;
case nameof(AccountCreatedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountCreatedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountCreatedMessage));
break;
case nameof(AccountRemovedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountRemovedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountRemovedMessage));
break;
case nameof(AccountUpdatedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountUpdatedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountUpdatedMessage));
break;
case nameof(DraftCreated):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<DraftCreated>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.DraftCreated));
break;
case nameof(DraftFailed):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<DraftFailed>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.DraftFailed));
break;
case nameof(DraftMapped):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<DraftMapped>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.DraftMapped));
break;
case nameof(FolderRenamed):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<FolderRenamed>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.FolderRenamed));
break;
case nameof(FolderSynchronizationEnabled):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<FolderSynchronizationEnabled>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.FolderSynchronizationEnabled));
break;
case nameof(MergedInboxRenamed):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<MergedInboxRenamed>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.MergedInboxRenamed));
break;
case nameof(AccountSynchronizationCompleted):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountSynchronizationCompleted>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountSynchronizationCompleted));
break;
case nameof(RefreshUnreadCountsMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<RefreshUnreadCountsMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.RefreshUnreadCountsMessage));
break;
case nameof(AccountSynchronizerStateChanged):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountSynchronizerStateChanged>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountSynchronizerStateChanged));
break;
case nameof(AccountSynchronizationProgressUpdatedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountSynchronizationProgressUpdatedMessage>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountSynchronizationProgressUpdatedMessage));
break;
case nameof(AccountFolderConfigurationUpdated):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountFolderConfigurationUpdated>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.AccountFolderConfigurationUpdated));
break;
case nameof(CopyAuthURLRequested):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<CopyAuthURLRequested>(messageJson));
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize(messageJson, CommunicationMessagesContext.Default.CopyAuthURLRequested));
break;
default:
throw new Exception("Invalid data type name passed to client.");
@@ -4,7 +4,7 @@ using Wino.Core.ViewModels;
namespace Wino.Views.Abstract
{
public class SettingsPageBase<T> : BasePage<T> where T : CoreBaseViewModel
public partial class SettingsPageBase<T> : BasePage<T> where T : CoreBaseViewModel
{
public string Title
{
+1 -1
View File
@@ -11,7 +11,7 @@
xmlns:settings="using:Wino.Core.Domain.Models.Settings"
xmlns:translations="using:Wino.Core.Domain.Models.Translations"
x:Name="root"
Title="{x:Bind domain:Translator.SettingsOptions_Title, Mode=OneWay}"
Title="{x:Bind domain:Translator.SettingsOptions_Title}"
mc:Ignorable="d">
<ScrollViewer VerticalScrollBarVisibility="Hidden">
+107 -432
View File
@@ -1,432 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{395F19BA-1E42-495C-9DB5-1A6F537FCCB8}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Wino.Core.UWP</RootNamespace>
<AssemblyName>Wino.Core.UWP</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.22621.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<PlatformTarget>x86</PlatformTarget>
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<OutputPath>bin\ARM64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<LangVersion>12.0</LangVersion>
</PropertyGroup>
<ItemGroup>
<Compile Include="Activation\ActivationHandler.cs" />
<Compile Include="BasePage.cs" />
<Compile Include="Controls\ControlConstants.cs" />
<Compile Include="Controls\CustomWrapPanel.cs" />
<Compile Include="Controls\EqualGridPanel.cs" />
<Compile Include="Controls\WinoAppTitleBar.xaml.cs">
<DependentUpon>WinoAppTitleBar.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\WinoFontIcon.cs" />
<Compile Include="Controls\WinoFontIconSource.cs" />
<Compile Include="Controls\WinoInfoBar.cs" />
<Compile Include="Controls\WinoNavigationViewItem.cs" />
<Compile Include="Converters\GridLengthConverter.cs" />
<Compile Include="Converters\ReverseBooleanConverter.cs" />
<Compile Include="Converters\ReverseBooleanToVisibilityConverter.cs" />
<Compile Include="CoreUWPContainerSetup.cs" />
<Compile Include="Dialogs\NewAccountDialog.xaml.cs">
<DependentUpon>NewAccountDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Extensions\StorageFileExtensions.cs" />
<Compile Include="Selectors\NavigationMenuTemplateSelector.cs" />
<Compile Include="Services\ApplicationResourceManager.cs" />
<Compile Include="Services\DialogServiceBase.cs" />
<Compile Include="Services\NavigationServiceBase.cs" />
<Compile Include="Dialogs\AccountCreationDialog.xaml.cs">
<DependentUpon>AccountCreationDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\AccountEditDialog.xaml.cs">
<DependentUpon>AccountEditDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\AccountPickerDialog.xaml.cs">
<DependentUpon>AccountPickerDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\BaseAccountCreationDialog.cs" />
<Compile Include="Dialogs\CustomMessageDialogInformationContainer.cs" />
<Compile Include="Dialogs\CustomThemeBuilderDialog.xaml.cs">
<DependentUpon>CustomThemeBuilderDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\TextInputDialog.xaml.cs">
<DependentUpon>TextInputDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dispatcher.cs" />
<Compile Include="Extensions\AnimationExtensions.cs" />
<Compile Include="Extensions\CompositionEnums.cs" />
<Compile Include="Extensions\CompositionExtensions.Implicit.cs" />
<Compile Include="Extensions\CompositionExtensions.Size.cs" />
<Compile Include="Extensions\ElementThemeExtensions.cs" />
<Compile Include="Extensions\StartupTaskStateExtensions.cs" />
<Compile Include="Extensions\UIExtensions.cs" />
<Compile Include="Extensions\UtilExtensions.cs" />
<Compile Include="Helpers\WinoVisualTreeHelper.cs" />
<Compile Include="Helpers\XamlHelpers.cs" />
<Compile Include="Models\Personalization\CustomAppTheme.cs" />
<Compile Include="Models\Personalization\PreDefinedAppTheme.cs" />
<Compile Include="Models\Personalization\SystemAppTheme.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Selectors\AppThemePreviewTemplateSelector.cs" />
<Compile Include="Selectors\CustomWinoMessageDialogIconSelector.cs" />
<Compile Include="Selectors\FileAttachmentTypeSelector.cs" />
<Compile Include="Services\PreferencesService.cs" />
<Compile Include="Services\PrintService.cs" />
<Compile Include="Services\StartupBehaviorService.cs" />
<Compile Include="Services\StatePersistenceService.cs" />
<Compile Include="Services\ThumbnailService.cs" />
<Compile Include="Services\WinoServerConnectionManager.cs" />
<Compile Include="Services\BackgroundTaskService.cs" />
<Compile Include="Services\ClipboardService.cs" />
<Compile Include="Services\ConfigurationService.cs" />
<Compile Include="Services\FileService.cs" />
<Compile Include="Services\KeyPressService.cs" />
<Compile Include="Services\NativeAppService.cs" />
<Compile Include="Services\NotificationBuilder.cs" />
<Compile Include="Services\StoreManagementService.cs" />
<Compile Include="Services\StoreRatingService.cs" />
<Compile Include="Services\ThemeService.cs" />
<Compile Include="Services\UnderlyingThemeService.cs" />
<Compile Include="CoreGeneric.xaml.cs">
<DependentUpon>CoreGeneric.xaml</DependentUpon>
</Compile>
<Compile Include="Styles\CustomMessageDialogStyles.xaml.cs">
<DependentUpon>CustomMessageDialogStyles.xaml</DependentUpon>
</Compile>
<Compile Include="Styles\DataTemplates.xaml.cs">
<DependentUpon>DataTemplates.xaml</DependentUpon>
</Compile>
<Compile Include="Views\Abstract\ManageAccountsPageAbstract.cs" />
<Compile Include="Views\Abstract\SettingOptionsPageAbstract.cs" />
<Compile Include="Views\Abstract\SettingsPageAbstract.cs" />
<Compile Include="Views\Abstract\SettingsPageBase.cs" />
<Compile Include="Views\ManageAccountsPage.xaml.cs">
<DependentUpon>ManageAccountsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingOptionsPage.xaml.cs">
<DependentUpon>SettingOptionsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPage.xaml.cs">
<DependentUpon>SettingsPage.xaml</DependentUpon>
</Compile>
<Compile Include="WinoApplication.cs" />
<EmbeddedResource Include="Properties\Wino.Core.UWP.rd.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Common">
<Version>8.3.2</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Diagnostics">
<Version>8.3.2</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Mvvm">
<Version>8.3.2</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Animations">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Behaviors">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Controls.Segmented">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Controls.SettingsControls">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Controls.Sizers">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.Uwp.Extensions">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="CommunityToolkit.WinUI.Notifications" Version="7.1.2" />
<PackageReference Include="CommunityToolkit.Uwp.Controls.TabbedCommandBar">
<Version>8.1.240916</Version>
</PackageReference>
<PackageReference Include="Microsoft.AppCenter.Analytics">
<Version>5.0.6</Version>
</PackageReference>
<PackageReference Include="Microsoft.Identity.Client">
<Version>4.66.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.14</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Uwp">
<Version>7.1.3</Version>
</PackageReference>
<PackageReference Include="Microsoft.UI.Xaml">
<Version>2.8.6</Version>
</PackageReference>
<PackageReference Include="Win2D.uwp">
<Version>1.28.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Wino.Core.Domain\Wino.Core.Domain.csproj">
<Project>{cf3312e5-5da0-4867-9945-49ea7598af1f}</Project>
<Name>Wino.Core.Domain</Name>
</ProjectReference>
<ProjectReference Include="..\Wino.Core.ViewModels\Wino.Core.ViewModels.csproj">
<Project>{53723ae8-7e7e-4d54-adab-0a6033255cc8}</Project>
<Name>Wino.Core.ViewModels</Name>
</ProjectReference>
<ProjectReference Include="..\Wino.Core\Wino.Core.csproj">
<Project>{e6b1632a-8901-41e8-9ddf-6793c7698b0b}</Project>
<Name>Wino.Core</Name>
</ProjectReference>
<ProjectReference Include="..\Wino.Messages\Wino.Messaging.csproj">
<Project>{0c307d7e-256f-448c-8265-5622a812fbcc}</Project>
<Name>Wino.Messaging</Name>
</ProjectReference>
<ProjectReference Include="..\Wino.Services\Wino.Services.csproj">
<Project>{4000a374-59fe-4400-acf6-d40473becd73}</Project>
<Name>Wino.Services</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<SDKReference Include="WindowsDesktop, Version=10.0.22621.0">
<Name>Windows Desktop Extensions for the UWP</Name>
</SDKReference>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\WinoIcons.ttf" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\FileTypes\type_archive.png" />
<Content Include="Assets\FileTypes\type_audio.png" />
<Content Include="Assets\FileTypes\type_executable.png" />
<Content Include="Assets\FileTypes\type_html.png" />
<Content Include="Assets\FileTypes\type_image.png" />
<Content Include="Assets\FileTypes\type_none.png" />
<Content Include="Assets\FileTypes\type_other.png" />
<Content Include="Assets\FileTypes\type_pdf.png" />
<Content Include="Assets\FileTypes\type_rar.png" />
<Content Include="Assets\FileTypes\type_video.png" />
<Content Include="Assets\Providers\Gmail.png" />
<Content Include="Assets\Providers\IMAP4.png" />
<Content Include="Assets\Providers\Office 365.png" />
<Content Include="Assets\Providers\Outlook.png" />
<Content Include="Assets\Providers\Yahoo.png" />
<Content Include="BackgroundImages\Acrylic.jpg" />
<Content Include="BackgroundImages\Clouds.jpg" />
<Content Include="BackgroundImages\Forest.jpg" />
<Content Include="BackgroundImages\Garden.jpg" />
<Content Include="BackgroundImages\Mica.jpg" />
<Content Include="BackgroundImages\Nighty.jpg" />
<Content Include="BackgroundImages\Snowflake.jpg" />
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Acrylic.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Clouds.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Custom.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Forest.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Garden.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Mica.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Nighty.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Snowflake.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<Page Include="Controls\WinoAppTitleBar.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\AccountCreationDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\AccountEditDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\AccountPickerDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\CustomThemeBuilderDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\NewAccountDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Dialogs\TextInputDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="CoreGeneric.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\Colors.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\ContentPresenters.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\Converters.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\CustomMessageDialogStyles.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\FontIcons.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\IconTemplates.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\DataTemplates.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\SharedStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\WinoInfoBar.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\ManageAccountsPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\SettingOptionsPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\SettingsPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
<Nullable>disable</Nullable>
<UseUwp>true</UseUwp>
<DefaultLanguage>en-US</DefaultLanguage>
<IsAotCompatible>true</IsAotCompatible>
<DisableRuntimeMarshalling>true</DisableRuntimeMarshalling>
<SupportedOSPlatformVersion>10.0.18362.0</SupportedOSPlatformVersion>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<None Remove="Assets\FileTypes\type_archive.png" />
<None Remove="Assets\FileTypes\type_audio.png" />
<None Remove="Assets\FileTypes\type_executable.png" />
<None Remove="Assets\FileTypes\type_html.png" />
<None Remove="Assets\FileTypes\type_image.png" />
<None Remove="Assets\FileTypes\type_none.png" />
<None Remove="Assets\FileTypes\type_other.png" />
<None Remove="Assets\FileTypes\type_pdf.png" />
<None Remove="Assets\FileTypes\type_rar.png" />
<None Remove="Assets\FileTypes\type_video.png" />
<None Remove="Assets\Providers\Gmail.png" />
<None Remove="Assets\Providers\IMAP4.png" />
<None Remove="Assets\Providers\Office 365.png" />
<None Remove="Assets\Providers\Outlook.png" />
<None Remove="Assets\Providers\Yahoo.png" />
<None Remove="Assets\WinoIcons.ttf" />
<None Remove="BackgroundImages\Acrylic.jpg" />
<None Remove="BackgroundImages\Clouds.jpg" />
<None Remove="BackgroundImages\Forest.jpg" />
<None Remove="BackgroundImages\Garden.jpg" />
<None Remove="BackgroundImages\Mica.jpg" />
<None Remove="BackgroundImages\Nighty.jpg" />
<None Remove="BackgroundImages\Snowflake.jpg" />
</ItemGroup>
<ItemGroup>
<Page Remove="AppThemes\Acrylic.xaml" />
<Page Remove="AppThemes\Clouds.xaml" />
<Page Remove="AppThemes\Custom.xaml" />
<Page Remove="AppThemes\Forest.xaml" />
<Page Remove="AppThemes\Garden.xaml" />
<Page Remove="AppThemes\Mica.xaml" />
<Page Remove="AppThemes\Nighty.xaml" />
<Page Remove="AppThemes\Snowflake.xaml" />
<Page Remove="AppThemes\TestTheme.xaml" />
</ItemGroup>
<ItemGroup>
<Content Include="AppThemes\Acrylic.xaml" />
<Content Include="AppThemes\Clouds.xaml" />
<Content Include="AppThemes\Custom.xaml" />
<Content Include="AppThemes\Forest.xaml" />
<Content Include="AppThemes\Garden.xaml" />
<Content Include="AppThemes\Mica.xaml" />
<Content Include="AppThemes\Nighty.xaml" />
<Content Include="AppThemes\Snowflake.xaml" />
<Content Include="AppThemes\TestTheme.xaml" />
<Content Include="Assets\FileTypes\type_archive.png" />
<Content Include="Assets\FileTypes\type_audio.png" />
<Content Include="Assets\FileTypes\type_executable.png" />
<Content Include="Assets\FileTypes\type_html.png" />
<Content Include="Assets\FileTypes\type_image.png" />
<Content Include="Assets\FileTypes\type_none.png" />
<Content Include="Assets\FileTypes\type_other.png" />
<Content Include="Assets\FileTypes\type_pdf.png" />
<Content Include="Assets\FileTypes\type_rar.png" />
<Content Include="Assets\FileTypes\type_video.png" />
<Content Include="Assets\Providers\Gmail.png" />
<Content Include="Assets\Providers\IMAP4.png" />
<Content Include="Assets\Providers\Office 365.png" />
<Content Include="Assets\Providers\Outlook.png" />
<Content Include="Assets\Providers\Yahoo.png" />
<Content Include="Assets\WinoIcons.ttf" />
<Content Include="BackgroundImages\Acrylic.jpg" />
<Content Include="BackgroundImages\Clouds.jpg" />
<Content Include="BackgroundImages\Forest.jpg" />
<Content Include="BackgroundImages\Garden.jpg" />
<Content Include="BackgroundImages\Mica.jpg" />
<Content Include="BackgroundImages\Nighty.jpg" />
<Content Include="BackgroundImages\Snowflake.jpg" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Identity.Client" />
<PackageReference Include="Microsoft.UI.Xaml" />
<PackageReference Include="CommunityToolkit.Common" />
<PackageReference Include="CommunityToolkit.Diagnostics" />
<PackageReference Include="CommunityToolkit.Mvvm" />
<PackageReference Include="CommunityToolkit.Uwp.Animations" />
<PackageReference Include="CommunityToolkit.Uwp.Behaviors" />
<PackageReference Include="CommunityToolkit.Uwp.Controls.Segmented" />
<PackageReference Include="CommunityToolkit.Uwp.Controls.SettingsControls" />
<PackageReference Include="CommunityToolkit.Uwp.Controls.Sizers" />
<PackageReference Include="CommunityToolkit.Uwp.Extensions" />
<PackageReference Include="CommunityToolkit.WinUI.Notifications" />
<PackageReference Include="CommunityToolkit.Uwp.Controls.TabbedCommandBar" />
<PackageReference Include="Microsoft.AppCenter.Analytics" />
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" />
<PackageReference Include="Win2D.uwp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Wino.Core.Domain\Wino.Core.Domain.csproj" />
<ProjectReference Include="..\Wino.Core.ViewModels\Wino.Core.ViewModels.csproj" />
</ItemGroup>
</Project>