From a8aea9074abb8241f7652f9ebe8e395f9baadc2b Mon Sep 17 00:00:00 2001 From: Kacper Tryniecki Date: Sat, 4 Jun 2022 04:40:18 +0200 Subject: [PATCH] bump nugets, projects to .net 6.0 and added maui/blazor project --- Api/Data/NotatnikMechanika.Data.csproj | 6 +- .../NotatnikMechanika.Repository.csproj | 6 +- .../Repositories/{ => Base}/RepositoryBase.cs | 0 Api/Server/Controllers/CustomerController.cs | 1 - Api/Server/NotatnikMechanika.Server.csproj | 12 +- Api/Service/NotatnikMechanika.Service.csproj | 4 +- Api/Shared/EndpointsPaths.cs | 9 +- Api/Shared/Models/Customer/CustomerModel.cs | 14 +- Api/Shared/NotatnikMechanika.Shared.csproj | 4 +- Clients/Client/Application.cs | 18 +-- .../Client/NotatnikMechanika.Client.csproj | 63 +++------ Clients/Client/Pages/AddOrder.razor | 8 +- Clients/Client/Pages/Login.razor | 2 +- Clients/Client/Pages/Order.razor | 8 +- Clients/Client/Shared/MainLayout.razor | 34 ++--- Clients/Core/NotatnikMechanika.Core.csproj | 2 +- .../ContentPageModels/CustomerPageModel.cs | 4 +- Clients/Core/Services/HttpRequestService.cs | 14 +- .../NotatnikMechanika.Forms.Android.csproj | 6 - Clients/Forms/NotatnikMechanika.Forms.csproj | 10 +- Clients/WPF/NotatnikMechanika.WPF.csproj | 4 +- MVVMPackage/Blazor/MVVMPackage.Blazor.csproj | 15 +- MVVMPackage/Core/Commands/AsyncCommand.cs | 16 +-- MVVMPackage/Core/Commands/Command.cs | 2 +- MVVMPackage/Core/MvvmPackage.Core.csproj | 4 +- MVVMPackage/Wpf/MvvmPackage.Wpf.csproj | 6 +- .../Xamarin/MvvmPackage.Xamarin.csproj | 4 +- .../NotatnikMechanika.Core.Tests.csproj | 8 +- NotatnikMechanika.Maui/App.xaml | 26 ++++ NotatnikMechanika.Maui/App.xaml.cs | 12 ++ .../Data/WeatherForecast.cs | 13 ++ .../Data/WeatherForecastService.cs | 20 +++ NotatnikMechanika.Maui/Main.razor | 11 ++ NotatnikMechanika.Maui/MainPage.xaml | 14 ++ NotatnikMechanika.Maui/MainPage.xaml.cs | 10 ++ NotatnikMechanika.Maui/MauiProgram.cs | 28 ++++ .../NotatnikMechanika.Maui.csproj | 98 +++++++++++++ NotatnikMechanika.Maui/Pages/Counter.razor | 16 +++ NotatnikMechanika.Maui/Pages/FetchData.razor | 46 +++++++ NotatnikMechanika.Maui/Pages/Index.razor | 7 + .../Platforms/Android/AndroidManifest.xml | 6 + .../Platforms/Android/MainActivity.cs | 11 ++ .../Platforms/Android/MainApplication.cs | 16 +++ .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.cs | 10 ++ .../Platforms/MacCatalyst/Info.plist | 30 ++++ .../Platforms/MacCatalyst/Program.cs | 16 +++ .../Platforms/Tizen/Main.cs | 17 +++ .../Platforms/Tizen/tizen-manifest.xml | 15 ++ .../Platforms/Windows/App.xaml | 8 ++ .../Platforms/Windows/App.xaml.cs | 24 ++++ .../Platforms/Windows/Package.appxmanifest | 43 ++++++ .../Platforms/Windows/app.manifest | 15 ++ .../Platforms/iOS/AppDelegate.cs | 10 ++ .../Platforms/iOS/Info.plist | 32 +++++ .../Platforms/iOS/Program.cs | 16 +++ .../Properties/launchSettings.json | 8 ++ .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 ++ .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107140 bytes .../Resources/Images/dotnet_bot.svg | 93 +++++++++++++ .../Resources/Raw/AboutAssets.txt | 15 ++ .../Resources/Splash/splash.svg | 8 ++ .../Shared/MainLayout.razor | 17 +++ .../Shared/MainLayout.razor.css | 75 ++++++++++ NotatnikMechanika.Maui/Shared/NavMenu.razor | 39 ++++++ .../Shared/NavMenu.razor.css | 62 +++++++++ .../Shared/SurveyPrompt.razor | 16 +++ NotatnikMechanika.Maui/_Imports.razor | 8 ++ NotatnikMechanika.sln | 129 ++++++------------ 70 files changed, 1098 insertions(+), 244 deletions(-) rename Api/Repository/Repositories/{ => Base}/RepositoryBase.cs (100%) create mode 100644 NotatnikMechanika.Maui/App.xaml create mode 100644 NotatnikMechanika.Maui/App.xaml.cs create mode 100644 NotatnikMechanika.Maui/Data/WeatherForecast.cs create mode 100644 NotatnikMechanika.Maui/Data/WeatherForecastService.cs create mode 100644 NotatnikMechanika.Maui/Main.razor create mode 100644 NotatnikMechanika.Maui/MainPage.xaml create mode 100644 NotatnikMechanika.Maui/MainPage.xaml.cs create mode 100644 NotatnikMechanika.Maui/MauiProgram.cs create mode 100644 NotatnikMechanika.Maui/NotatnikMechanika.Maui.csproj create mode 100644 NotatnikMechanika.Maui/Pages/Counter.razor create mode 100644 NotatnikMechanika.Maui/Pages/FetchData.razor create mode 100644 NotatnikMechanika.Maui/Pages/Index.razor create mode 100644 NotatnikMechanika.Maui/Platforms/Android/AndroidManifest.xml create mode 100644 NotatnikMechanika.Maui/Platforms/Android/MainActivity.cs create mode 100644 NotatnikMechanika.Maui/Platforms/Android/MainApplication.cs create mode 100644 NotatnikMechanika.Maui/Platforms/Android/Resources/values/colors.xml create mode 100644 NotatnikMechanika.Maui/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 NotatnikMechanika.Maui/Platforms/MacCatalyst/Info.plist create mode 100644 NotatnikMechanika.Maui/Platforms/MacCatalyst/Program.cs create mode 100644 NotatnikMechanika.Maui/Platforms/Tizen/Main.cs create mode 100644 NotatnikMechanika.Maui/Platforms/Tizen/tizen-manifest.xml create mode 100644 NotatnikMechanika.Maui/Platforms/Windows/App.xaml create mode 100644 NotatnikMechanika.Maui/Platforms/Windows/App.xaml.cs create mode 100644 NotatnikMechanika.Maui/Platforms/Windows/Package.appxmanifest create mode 100644 NotatnikMechanika.Maui/Platforms/Windows/app.manifest create mode 100644 NotatnikMechanika.Maui/Platforms/iOS/AppDelegate.cs create mode 100644 NotatnikMechanika.Maui/Platforms/iOS/Info.plist create mode 100644 NotatnikMechanika.Maui/Platforms/iOS/Program.cs create mode 100644 NotatnikMechanika.Maui/Properties/launchSettings.json create mode 100644 NotatnikMechanika.Maui/Resources/AppIcon/appicon.svg create mode 100644 NotatnikMechanika.Maui/Resources/AppIcon/appiconfg.svg create mode 100644 NotatnikMechanika.Maui/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 NotatnikMechanika.Maui/Resources/Images/dotnet_bot.svg create mode 100644 NotatnikMechanika.Maui/Resources/Raw/AboutAssets.txt create mode 100644 NotatnikMechanika.Maui/Resources/Splash/splash.svg create mode 100644 NotatnikMechanika.Maui/Shared/MainLayout.razor create mode 100644 NotatnikMechanika.Maui/Shared/MainLayout.razor.css create mode 100644 NotatnikMechanika.Maui/Shared/NavMenu.razor create mode 100644 NotatnikMechanika.Maui/Shared/NavMenu.razor.css create mode 100644 NotatnikMechanika.Maui/Shared/SurveyPrompt.razor create mode 100644 NotatnikMechanika.Maui/_Imports.razor diff --git a/Api/Data/NotatnikMechanika.Data.csproj b/Api/Data/NotatnikMechanika.Data.csproj index 9fc441b..0f8898c 100644 --- a/Api/Data/NotatnikMechanika.Data.csproj +++ b/Api/Data/NotatnikMechanika.Data.csproj @@ -1,12 +1,12 @@  - net5.0 + net6.0 latest - - + + diff --git a/Api/Repository/NotatnikMechanika.Repository.csproj b/Api/Repository/NotatnikMechanika.Repository.csproj index a8e243d..f60bd65 100644 --- a/Api/Repository/NotatnikMechanika.Repository.csproj +++ b/Api/Repository/NotatnikMechanika.Repository.csproj @@ -1,13 +1,13 @@  - net5.0 + net6.0 latest - - + + diff --git a/Api/Repository/Repositories/RepositoryBase.cs b/Api/Repository/Repositories/Base/RepositoryBase.cs similarity index 100% rename from Api/Repository/Repositories/RepositoryBase.cs rename to Api/Repository/Repositories/Base/RepositoryBase.cs diff --git a/Api/Server/Controllers/CustomerController.cs b/Api/Server/Controllers/CustomerController.cs index 087feb9..fa84120 100644 --- a/Api/Server/Controllers/CustomerController.cs +++ b/Api/Server/Controllers/CustomerController.cs @@ -11,7 +11,6 @@ namespace NotatnikMechanika.Server.Controllers [Route(CustomerPaths.Name)] public class CustomerController : AbstractControllerBase { - private readonly ICustomerService _customerService; public CustomerController(ICustomerService customerService) : base(customerService) { diff --git a/Api/Server/NotatnikMechanika.Server.csproj b/Api/Server/NotatnikMechanika.Server.csproj index b879277..52bb123 100644 --- a/Api/Server/NotatnikMechanika.Server.csproj +++ b/Api/Server/NotatnikMechanika.Server.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 latest 22098061-cdb5-41d7-a981-80d27bb1b2b6 Linux @@ -9,11 +9,11 @@ - - - - - + + + + + diff --git a/Api/Service/NotatnikMechanika.Service.csproj b/Api/Service/NotatnikMechanika.Service.csproj index 8271ad5..580145c 100644 --- a/Api/Service/NotatnikMechanika.Service.csproj +++ b/Api/Service/NotatnikMechanika.Service.csproj @@ -1,7 +1,7 @@  - net5.0 + net6.0 latest Library @@ -9,7 +9,7 @@ - + diff --git a/Api/Shared/EndpointsPaths.cs b/Api/Shared/EndpointsPaths.cs index b0f31db..9e4a70c 100644 --- a/Api/Shared/EndpointsPaths.cs +++ b/Api/Shared/EndpointsPaths.cs @@ -1,8 +1,9 @@ -namespace NotatnikMechanika.Shared +using System.Reflection; + +namespace NotatnikMechanika.Shared { public static class CrudPaths { - public const string ByIdPath = "{id}"; public const string AllPath = "all"; public const string CreatePath = ""; @@ -56,7 +57,7 @@ public static string Login() public static string Register() { - return Name + "/" + RegisterPath; + return Name + "/" + MethodBase.GetCurrentMethod().Name; } public static string Update() @@ -74,7 +75,7 @@ public static class CarPaths public const string Name = "api/car"; public const string ByCustomerPath = "byCustomer/{customerId}"; - public static string ByCustomer(int customerId) + public static string ByCustomer(int? customerId) { return Name + "/" + ByCustomerPath.Replace("{customerId}", customerId.ToString()); } diff --git a/Api/Shared/Models/Customer/CustomerModel.cs b/Api/Shared/Models/Customer/CustomerModel.cs index d384a4d..d868b21 100644 --- a/Api/Shared/Models/Customer/CustomerModel.cs +++ b/Api/Shared/Models/Customer/CustomerModel.cs @@ -4,19 +4,19 @@ namespace NotatnikMechanika.Shared.Models.Customer { public class CustomerModel : ValidateModelBase { - public int Id { get; set; } + public int? Id { get; set; } [Required(ErrorMessage = "Pole imię jest wymagane")] - public string Name { get; set; } + public string? Name { get; set; } [Required(ErrorMessage = "Pole nazwisko jest wymagane")] - public string Surname { get; set; } - public string CompanyName { get; set; } + public string? Surname { get; set; } + public string? CompanyName { get; set; } /// /// np NIP /// - public string CompanyIdentyficator { get; set; } - public string Phone { get; set; } - public string Address { get; set; } + public string? CompanyIdentyficator { get; set; } + public string? Phone { get; set; } + public string? Address { get; set; } } } diff --git a/Api/Shared/NotatnikMechanika.Shared.csproj b/Api/Shared/NotatnikMechanika.Shared.csproj index 84c6970..bb8e9be 100644 --- a/Api/Shared/NotatnikMechanika.Shared.csproj +++ b/Api/Shared/NotatnikMechanika.Shared.csproj @@ -2,10 +2,10 @@ - + all - + diff --git a/Clients/Client/Application.cs b/Clients/Client/Application.cs index 2a80014..f991b64 100644 --- a/Clients/Client/Application.cs +++ b/Clients/Client/Application.cs @@ -27,7 +27,7 @@ protected override void ConfigureServices(IServiceCollection services) ); services.AddMBServices( - animatedNavigationManagerServiceConfiguration: Utilities.GetDefaultAnimatedNavigationServiceConfiguration(), + // animatedNavigationManagerServiceConfiguration: Utilities.GetDefaultAnimatedNavigationServiceConfiguration(), toastServiceConfiguration: Utilities.GetDefaultToastServiceConfiguration() ); } @@ -41,14 +41,14 @@ protected override void AppStart() public static class Utilities { - public static MBAnimatedNavigationManagerServiceConfiguration GetDefaultAnimatedNavigationServiceConfiguration() - { - return new MBAnimatedNavigationManagerServiceConfiguration() - { - ApplyAnimation = true, - AnimationTime = 300 - }; - } + //public static MBAnimatedNavigationManagerServiceConfiguration GetDefaultAnimatedNavigationServiceConfiguration() + //{ + // return new MBAnimatedNavigationManagerServiceConfiguration() + // { + // ApplyAnimation = true, + // AnimationTime = 300 + // }; + //} public static MBToastServiceConfiguration GetDefaultToastServiceConfiguration() diff --git a/Clients/Client/NotatnikMechanika.Client.csproj b/Clients/Client/NotatnikMechanika.Client.csproj index a784003..baf493f 100644 --- a/Clients/Client/NotatnikMechanika.Client.csproj +++ b/Clients/Client/NotatnikMechanika.Client.csproj @@ -1,27 +1,35 @@  - net5.0 + net6.0 latest + + false + + enable - - - + + True + + + + True + - + - - - - - - - + + + + + + + @@ -38,35 +46,4 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Clients/Client/Pages/AddOrder.razor b/Clients/Client/Pages/AddOrder.razor index 7d1738a..5d5b1bc 100644 --- a/Clients/Client/Pages/AddOrder.razor +++ b/Clients/Client/Pages/AddOrder.razor @@ -73,11 +73,11 @@ else @service.Name @service.Price - +
-
+ } else @@ -101,11 +101,11 @@ else @commodity.Name @commodity.Price - +
-
+ } else diff --git a/Clients/Client/Pages/Login.razor b/Clients/Client/Pages/Login.razor index 1e45c78..ec43a10 100644 --- a/Clients/Client/Pages/Login.razor +++ b/Clients/Client/Pages/Login.razor @@ -9,7 +9,7 @@ diff --git a/Clients/Client/Pages/Order.razor b/Clients/Client/Pages/Order.razor index 484f49d..d04cf5c 100644 --- a/Clients/Client/Pages/Order.razor +++ b/Clients/Client/Pages/Order.razor @@ -48,11 +48,11 @@ else @service.Name @service.Price - +
-
+ } else @@ -76,11 +76,11 @@ else @commodity.Name @commodity.Price - +
-
+ } else diff --git a/Clients/Client/Shared/MainLayout.razor b/Clients/Client/Shared/MainLayout.razor index 5cd0954..edfda9d 100644 --- a/Clients/Client/Shared/MainLayout.razor +++ b/Clients/Client/Shared/MainLayout.razor @@ -5,15 +5,12 @@ @inject IMvNavigationService NavigationService @inject NavigationManager NavigationManager @inject ILogger logger; -@inject IMBAnimatedNavigationManager AnimatedNavigationService - - +@inject NavigationManager NavigationManager -
-
-
- -
-
-
-
- @Body + + + +
+
+
+
+
+
+ @Body +
- -
-
+ + +
@@ -52,6 +53,5 @@
@code{ - private NavMenu NavBar { get; set; } } \ No newline at end of file diff --git a/Clients/Core/NotatnikMechanika.Core.csproj b/Clients/Core/NotatnikMechanika.Core.csproj index 2af8107..d5ec836 100644 --- a/Clients/Core/NotatnikMechanika.Core.csproj +++ b/Clients/Core/NotatnikMechanika.Core.csproj @@ -5,7 +5,7 @@ true - + all
diff --git a/Clients/Core/PageModels/ContentPageModels/CustomerPageModel.cs b/Clients/Core/PageModels/ContentPageModels/CustomerPageModel.cs index 4c298fb..2329c86 100644 --- a/Clients/Core/PageModels/ContentPageModels/CustomerPageModel.cs +++ b/Clients/Core/PageModels/ContentPageModels/CustomerPageModel.cs @@ -32,7 +32,7 @@ public CustomerPageModel(IHttpRequestService httpRequestService, IMvNavigationSe _messageDialogService = messageDialogService; CustomerModel = new CustomerModel(); GoBackCommand = new AsyncCommand(navigationService.NavigateToAsync); - AddCarCommand = new AsyncCommand(() => navigationService.NavigateToAsync(CustomerModel.Id)); + AddCarCommand = new AsyncCommand(() => navigationService.NavigateToAsync(CustomerModel.Id ?? 0)); RemoveCarCommand = new AsyncCommand(RemoveCarAction); Cars = new ObservableCollection(); } @@ -51,7 +51,7 @@ public override async Task Initialize() IsLoading = true; CustomerModel.Id = Parameter ?? 0; - var customer = await _httpRequestService.ById(CustomerModel.Id, "Błąd ładowania klienta"); + var customer = await _httpRequestService.ById(CustomerModel.Id.Value, "Błąd ładowania klienta"); if (customer != null) { CustomerModel = customer; diff --git a/Clients/Core/Services/HttpRequestService.cs b/Clients/Core/Services/HttpRequestService.cs index a6eca67..092b485 100644 --- a/Clients/Core/Services/HttpRequestService.cs +++ b/Clients/Core/Services/HttpRequestService.cs @@ -21,43 +21,43 @@ public HttpRequestService(HttpClient client, IMessageDialogService messageDialog _messageDialogService = messageDialogService; } - public async Task SendGet(string path, string onErrorTitle) where TContent : class + public async Task SendGet(string? path, string? onErrorTitle) where TContent : class { return await HandleResponse(await _client.GetAsync(path), onErrorTitle); } - public async Task SendPost(object model, string path, string onErrorTitle) + public async Task SendPost(object? model, string? path, string? onErrorTitle) { string myContent = JsonConvert.SerializeObject(model); var content = new StringContent(myContent, Encoding.UTF8, "application/json"); return await HandleResponse(await _client.PostAsync(path, content), onErrorTitle); } - public async Task SendPost(object model, string path, string onErrorTitle = null) where TContent : class + public async Task SendPost(object? model, string? path, string? onErrorTitle = null) where TContent : class { string myContent = JsonConvert.SerializeObject(model); var content = new StringContent(myContent, Encoding.UTF8, "application/json"); return await HandleResponse(await _client.PostAsync(path, content), onErrorTitle); } - public async Task SendUpdate(object model, string path, string onErrorTitle) + public async Task SendUpdate(object? model, string? path, string? onErrorTitle) { string myContent = JsonConvert.SerializeObject(model); var content = new StringContent(myContent, Encoding.UTF8, "application/json"); return await HandleResponse(await _client.PutAsync(path, content), onErrorTitle); } - public async Task SendUpdate(string path, string onErrorTitle) + public async Task SendUpdate(string? path, string? onErrorTitle) { return await HandleResponse(await _client.PutAsync(path, null), onErrorTitle); } - public async Task SendDelete(string path, string onErrorTitle) + public async Task SendDelete(string? path, string? onErrorTitle) { return await HandleResponse(await _client.DeleteAsync(path), onErrorTitle); } - private async Task HandleResponse(HttpResponseMessage response, string onErrorTitle) where TContent : class + private async Task? HandleResponse(HttpResponseMessage? response, string? onErrorTitle) where TContent : class { string responseString = await response.Content.ReadAsStringAsync(); diff --git a/Clients/Forms.Android/NotatnikMechanika.Forms.Android.csproj b/Clients/Forms.Android/NotatnikMechanika.Forms.Android.csproj index 495b3c6..0e63b60 100644 --- a/Clients/Forms.Android/NotatnikMechanika.Forms.Android.csproj +++ b/Clients/Forms.Android/NotatnikMechanika.Forms.Android.csproj @@ -152,12 +152,6 @@ - - - {5ffed678-5e44-4bfb-9b4b-4da84e156864} - NotatnikMechanika.Forms - - diff --git a/Clients/Forms/NotatnikMechanika.Forms.csproj b/Clients/Forms/NotatnikMechanika.Forms.csproj index a9ce439..171b744 100644 --- a/Clients/Forms/NotatnikMechanika.Forms.csproj +++ b/Clients/Forms/NotatnikMechanika.Forms.csproj @@ -6,11 +6,11 @@ - - - - - + + + + + true diff --git a/Clients/WPF/NotatnikMechanika.WPF.csproj b/Clients/WPF/NotatnikMechanika.WPF.csproj index ee4e139..b555545 100644 --- a/Clients/WPF/NotatnikMechanika.WPF.csproj +++ b/Clients/WPF/NotatnikMechanika.WPF.csproj @@ -2,7 +2,7 @@ WinExe - net5.0-windows + net6.0-windows latest true false @@ -15,7 +15,7 @@ - + diff --git a/MVVMPackage/Blazor/MVVMPackage.Blazor.csproj b/MVVMPackage/Blazor/MVVMPackage.Blazor.csproj index 695eed4..c01d218 100644 --- a/MVVMPackage/Blazor/MVVMPackage.Blazor.csproj +++ b/MVVMPackage/Blazor/MVVMPackage.Blazor.csproj @@ -1,16 +1,17 @@ - net5.0 + net6.0 - - - - - - + + + + + + + all diff --git a/MVVMPackage/Core/Commands/AsyncCommand.cs b/MVVMPackage/Core/Commands/AsyncCommand.cs index 276f533..2e33eb1 100644 --- a/MVVMPackage/Core/Commands/AsyncCommand.cs +++ b/MVVMPackage/Core/Commands/AsyncCommand.cs @@ -10,8 +10,8 @@ namespace MvvmPackage.Core.Commands public class AsyncCommand : IAsyncCommand { private readonly Func _execute; - private readonly Func _canExecute; - private readonly Action _onException; + private readonly Func? _canExecute; + private readonly Action? _onException; private readonly bool _continueOnCapturedContext; private readonly WeakEventManager _weakEventManager = new(); @@ -23,8 +23,8 @@ public class AsyncCommand : IAsyncCommand /// Action callback when an exception occurs /// If the context should be captured on exception public AsyncCommand(Func execute, - Func canExecute = null, - Action onException = null, + Func? canExecute = null, + Action? onException = null, bool continueOnCapturedContext = false) { _execute = execute ?? throw new ArgumentNullException(nameof(execute)); @@ -82,8 +82,8 @@ void ICommand.Execute(object parameter) public class AsyncCommand : IAsyncCommand { private readonly Func _execute; - private readonly Func _canExecute; - private readonly Action _onException; + private readonly Func? _canExecute; + private readonly Action? _onException; private readonly bool _continueOnCapturedContext; private readonly WeakEventManager _weakEventManager = new(); @@ -95,8 +95,8 @@ public class AsyncCommand : IAsyncCommand /// Action callback when an exception occurs /// If the context should be captured on exception public AsyncCommand(Func execute, - Func canExecute = null, - Action onException = null, + Func? canExecute = null, + Action? onException = null, bool continueOnCapturedContext = false) { _execute = execute ?? throw new ArgumentNullException(nameof(execute)); diff --git a/MVVMPackage/Core/Commands/Command.cs b/MVVMPackage/Core/Commands/Command.cs index 9c3eabb..1d70a5b 100644 --- a/MVVMPackage/Core/Commands/Command.cs +++ b/MVVMPackage/Core/Commands/Command.cs @@ -60,7 +60,7 @@ public Command(Action execute, Func canExecute) /// public class Command : ICommand { - private readonly Func _canExecute; + private readonly Func? _canExecute; private readonly Action _execute; private readonly WeakEventManager _weakEventManager = new(); diff --git a/MVVMPackage/Core/MvvmPackage.Core.csproj b/MVVMPackage/Core/MvvmPackage.Core.csproj index 74e827b..f179eb8 100644 --- a/MVVMPackage/Core/MvvmPackage.Core.csproj +++ b/MVVMPackage/Core/MvvmPackage.Core.csproj @@ -2,8 +2,8 @@ - - + + all diff --git a/MVVMPackage/Wpf/MvvmPackage.Wpf.csproj b/MVVMPackage/Wpf/MvvmPackage.Wpf.csproj index 2aeb860..55dc28e 100644 --- a/MVVMPackage/Wpf/MvvmPackage.Wpf.csproj +++ b/MVVMPackage/Wpf/MvvmPackage.Wpf.csproj @@ -1,13 +1,13 @@  - net5.0-windows + net6.0-windows true - - + + diff --git a/MVVMPackage/Xamarin/MvvmPackage.Xamarin.csproj b/MVVMPackage/Xamarin/MvvmPackage.Xamarin.csproj index 79d969b..bc95d92 100644 --- a/MVVMPackage/Xamarin/MvvmPackage.Xamarin.csproj +++ b/MVVMPackage/Xamarin/MvvmPackage.Xamarin.csproj @@ -2,8 +2,8 @@ - - + + diff --git a/NotatnikMechanika.Core.Tests/NotatnikMechanika.Core.Tests.csproj b/NotatnikMechanika.Core.Tests/NotatnikMechanika.Core.Tests.csproj index 0b4c38f..89e022e 100644 --- a/NotatnikMechanika.Core.Tests/NotatnikMechanika.Core.Tests.csproj +++ b/NotatnikMechanika.Core.Tests/NotatnikMechanika.Core.Tests.csproj @@ -1,15 +1,15 @@ - net5.0 + net6.0 false - - - + + + diff --git a/NotatnikMechanika.Maui/App.xaml b/NotatnikMechanika.Maui/App.xaml new file mode 100644 index 0000000..7241854 --- /dev/null +++ b/NotatnikMechanika.Maui/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/App.xaml.cs b/NotatnikMechanika.Maui/App.xaml.cs new file mode 100644 index 0000000..2fa0fba --- /dev/null +++ b/NotatnikMechanika.Maui/App.xaml.cs @@ -0,0 +1,12 @@ +namespace NotatnikMechanika.Maui +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Data/WeatherForecast.cs b/NotatnikMechanika.Maui/Data/WeatherForecast.cs new file mode 100644 index 0000000..80e6f64 --- /dev/null +++ b/NotatnikMechanika.Maui/Data/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace NotatnikMechanika.Maui.Data +{ + public class WeatherForecast + { + public DateTime Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string Summary { get; set; } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Data/WeatherForecastService.cs b/NotatnikMechanika.Maui/Data/WeatherForecastService.cs new file mode 100644 index 0000000..53de256 --- /dev/null +++ b/NotatnikMechanika.Maui/Data/WeatherForecastService.cs @@ -0,0 +1,20 @@ +namespace NotatnikMechanika.Maui.Data +{ + public class WeatherForecastService + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + public Task GetForecastAsync(DateTime startDate) + { + return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = startDate.AddDays(index), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }).ToArray()); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Main.razor b/NotatnikMechanika.Maui/Main.razor new file mode 100644 index 0000000..024ed16 --- /dev/null +++ b/NotatnikMechanika.Maui/Main.razor @@ -0,0 +1,11 @@ + + + + + + + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/NotatnikMechanika.Maui/MainPage.xaml b/NotatnikMechanika.Maui/MainPage.xaml new file mode 100644 index 0000000..dd5ad5a --- /dev/null +++ b/NotatnikMechanika.Maui/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/MainPage.xaml.cs b/NotatnikMechanika.Maui/MainPage.xaml.cs new file mode 100644 index 0000000..8d7eb78 --- /dev/null +++ b/NotatnikMechanika.Maui/MainPage.xaml.cs @@ -0,0 +1,10 @@ +namespace NotatnikMechanika.Maui +{ + public partial class MainPage : ContentPage + { + public MainPage() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/MauiProgram.cs b/NotatnikMechanika.Maui/MauiProgram.cs new file mode 100644 index 0000000..daef9ff --- /dev/null +++ b/NotatnikMechanika.Maui/MauiProgram.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Components.WebView.Maui; +using NotatnikMechanika.Maui.Data; + +namespace NotatnikMechanika.Maui +{ + public static class MauiProgram + { + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + builder.Services.AddMauiBlazorWebView(); +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); +#endif + + builder.Services.AddSingleton(); + + return builder.Build(); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/NotatnikMechanika.Maui.csproj b/NotatnikMechanika.Maui/NotatnikMechanika.Maui.csproj new file mode 100644 index 0000000..eb86950 --- /dev/null +++ b/NotatnikMechanika.Maui/NotatnikMechanika.Maui.csproj @@ -0,0 +1,98 @@ + + + + net6.0-android;net6.0-ios;net6.0-maccatalyst + $(TargetFrameworks);net6.0-windows10.0.19041.0 + + + Exe + NotatnikMechanika.Maui + true + true + enable + false + + + NotatnikMechanika.Maui + + + com.companyname.notatnikmechanika.maui + 3B3FD607-FF17-4D57-8610-50D348156F6F + + + 1.0 + 1 + + 14.0 + 14.0 + 28.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + False + + + + True + link + + + + True + link + + + + True + link + + + + True + link + + + + True + link + + + + True + link + + + + True + link + + + + True + link + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotatnikMechanika.Maui/Pages/Counter.razor b/NotatnikMechanika.Maui/Pages/Counter.razor new file mode 100644 index 0000000..6324ad0 --- /dev/null +++ b/NotatnikMechanika.Maui/Pages/Counter.razor @@ -0,0 +1,16 @@ +@page "/counter" + +

Counter

+ +

Current count: @currentCount

+ + + +@code { + private int currentCount = 0; + + private void IncrementCount() + { + currentCount++; + } +} diff --git a/NotatnikMechanika.Maui/Pages/FetchData.razor b/NotatnikMechanika.Maui/Pages/FetchData.razor new file mode 100644 index 0000000..4a9de14 --- /dev/null +++ b/NotatnikMechanika.Maui/Pages/FetchData.razor @@ -0,0 +1,46 @@ +@page "/fetchdata" + +@using NotatnikMechanika.Maui.Data +@inject WeatherForecastService ForecastService + +

Weather forecast

+ +

This component demonstrates fetching data from a service.

+ +@if (forecasts == null) +{ +

Loading...

+} +else +{ + + + + + + + + + + + @foreach (var forecast in forecasts) + { + + + + + + + } + +
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
+} + +@code { + private WeatherForecast[] forecasts; + + protected override async Task OnInitializedAsync() + { + forecasts = await ForecastService.GetForecastAsync(DateTime.Now); + } +} diff --git a/NotatnikMechanika.Maui/Pages/Index.razor b/NotatnikMechanika.Maui/Pages/Index.razor new file mode 100644 index 0000000..e54d914 --- /dev/null +++ b/NotatnikMechanika.Maui/Pages/Index.razor @@ -0,0 +1,7 @@ +@page "/" + +

Hello, world!

+ +Welcome to your new app. + + diff --git a/NotatnikMechanika.Maui/Platforms/Android/AndroidManifest.xml b/NotatnikMechanika.Maui/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..e9937ad --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Android/MainActivity.cs b/NotatnikMechanika.Maui/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..dcc06c5 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace NotatnikMechanika.Maui +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] + public class MainActivity : MauiAppCompatActivity + { + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Android/MainApplication.cs b/NotatnikMechanika.Maui/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..26e66f6 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Runtime; + +namespace NotatnikMechanika.Maui +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Android/Resources/values/colors.xml b/NotatnikMechanika.Maui/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/MacCatalyst/AppDelegate.cs b/NotatnikMechanika.Maui/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..6e4df52 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace NotatnikMechanika.Maui +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/MacCatalyst/Info.plist b/NotatnikMechanika.Maui/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..c96dd0a --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/NotatnikMechanika.Maui/Platforms/MacCatalyst/Program.cs b/NotatnikMechanika.Maui/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..5cf8d97 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace NotatnikMechanika.Maui +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Tizen/Main.cs b/NotatnikMechanika.Maui/Platforms/Tizen/Main.cs new file mode 100644 index 0000000..ed2cbfe --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Tizen/Main.cs @@ -0,0 +1,17 @@ +using Microsoft.Maui; +using Microsoft.Maui.Hosting; +using System; + +namespace NotatnikMechanika.Maui +{ + internal class Program : MauiApplication + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Tizen/tizen-manifest.xml b/NotatnikMechanika.Maui/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..6a6580c --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + appicon.xhigh.png + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Windows/App.xaml b/NotatnikMechanika.Maui/Platforms/Windows/App.xaml new file mode 100644 index 0000000..1aa7107 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/NotatnikMechanika.Maui/Platforms/Windows/App.xaml.cs b/NotatnikMechanika.Maui/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..6adb01b --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace NotatnikMechanika.Maui.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/Windows/Package.appxmanifest b/NotatnikMechanika.Maui/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..2bcb11e --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotatnikMechanika.Maui/Platforms/Windows/app.manifest b/NotatnikMechanika.Maui/Platforms/Windows/app.manifest new file mode 100644 index 0000000..51e7b9f --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/NotatnikMechanika.Maui/Platforms/iOS/AppDelegate.cs b/NotatnikMechanika.Maui/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..6e4df52 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace NotatnikMechanika.Maui +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Platforms/iOS/Info.plist b/NotatnikMechanika.Maui/Platforms/iOS/Info.plist new file mode 100644 index 0000000..0004a4f --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/NotatnikMechanika.Maui/Platforms/iOS/Program.cs b/NotatnikMechanika.Maui/Platforms/iOS/Program.cs new file mode 100644 index 0000000..5cf8d97 --- /dev/null +++ b/NotatnikMechanika.Maui/Platforms/iOS/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace NotatnikMechanika.Maui +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Properties/launchSettings.json b/NotatnikMechanika.Maui/Properties/launchSettings.json new file mode 100644 index 0000000..edf8aad --- /dev/null +++ b/NotatnikMechanika.Maui/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Resources/AppIcon/appicon.svg b/NotatnikMechanika.Maui/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..9d63b65 --- /dev/null +++ b/NotatnikMechanika.Maui/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Resources/AppIcon/appiconfg.svg b/NotatnikMechanika.Maui/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/NotatnikMechanika.Maui/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Resources/Fonts/OpenSans-Regular.ttf b/NotatnikMechanika.Maui/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b3d9e692cac490924bad7df03b284f7791c617b8 GIT binary patch literal 107140 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 HclrJgEbk%6 literal 0 HcmV?d00001 diff --git a/NotatnikMechanika.Maui/Resources/Images/dotnet_bot.svg b/NotatnikMechanika.Maui/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..abfaff2 --- /dev/null +++ b/NotatnikMechanika.Maui/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NotatnikMechanika.Maui/Resources/Raw/AboutAssets.txt b/NotatnikMechanika.Maui/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..15d6244 --- /dev/null +++ b/NotatnikMechanika.Maui/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/NotatnikMechanika.Maui/Resources/Splash/splash.svg b/NotatnikMechanika.Maui/Resources/Splash/splash.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/NotatnikMechanika.Maui/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/NotatnikMechanika.Maui/Shared/MainLayout.razor b/NotatnikMechanika.Maui/Shared/MainLayout.razor new file mode 100644 index 0000000..1ba7ad0 --- /dev/null +++ b/NotatnikMechanika.Maui/Shared/MainLayout.razor @@ -0,0 +1,17 @@ +@inherits LayoutComponentBase + + diff --git a/NotatnikMechanika.Maui/Shared/MainLayout.razor.css b/NotatnikMechanika.Maui/Shared/MainLayout.razor.css new file mode 100644 index 0000000..53213f4 --- /dev/null +++ b/NotatnikMechanika.Maui/Shared/MainLayout.razor.css @@ -0,0 +1,75 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} diff --git a/NotatnikMechanika.Maui/Shared/NavMenu.razor b/NotatnikMechanika.Maui/Shared/NavMenu.razor new file mode 100644 index 0000000..4a616b1 --- /dev/null +++ b/NotatnikMechanika.Maui/Shared/NavMenu.razor @@ -0,0 +1,39 @@ + + +
+ +
+ +@code { + private bool collapseNavMenu = true; + + private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } +} diff --git a/NotatnikMechanika.Maui/Shared/NavMenu.razor.css b/NotatnikMechanika.Maui/Shared/NavMenu.razor.css new file mode 100644 index 0000000..acc5f9f --- /dev/null +++ b/NotatnikMechanika.Maui/Shared/NavMenu.razor.css @@ -0,0 +1,62 @@ +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.25); + color: white; +} + +.nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } +} diff --git a/NotatnikMechanika.Maui/Shared/SurveyPrompt.razor b/NotatnikMechanika.Maui/Shared/SurveyPrompt.razor new file mode 100644 index 0000000..fc67435 --- /dev/null +++ b/NotatnikMechanika.Maui/Shared/SurveyPrompt.razor @@ -0,0 +1,16 @@ +
+ + @Title + + + Please take our + brief survey + + and tell us what you think. +
+ +@code { + // Demonstrates how a parent component can supply parameters + [Parameter] + public string Title { get; set; } +} diff --git a/NotatnikMechanika.Maui/_Imports.razor b/NotatnikMechanika.Maui/_Imports.razor new file mode 100644 index 0000000..4c9483a --- /dev/null +++ b/NotatnikMechanika.Maui/_Imports.razor @@ -0,0 +1,8 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using NotatnikMechanika.Maui +@using NotatnikMechanika.Maui.Shared diff --git a/NotatnikMechanika.sln b/NotatnikMechanika.sln index 58a4dcc..cdf2e87 100644 --- a/NotatnikMechanika.sln +++ b/NotatnikMechanika.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30204.135 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32519.111 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Api", "Api", "{535D483F-7F9A-48BE-B700-52FAC05F0EC9}" EndProject @@ -25,12 +25,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MvvmPackage.Xamarin", "Mvvm EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotatnikMechanika.Core", "Clients\Core\NotatnikMechanika.Core.csproj", "{C2E3DD12-8B52-4151-A4B7-F96EFDF10372}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotatnikMechanika.Forms", "Clients\Forms\NotatnikMechanika.Forms.csproj", "{5FFED678-5E44-4BFB-9B4B-4DA84E156864}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotatnikMechanika.Forms.Android", "Clients\Forms.Android\NotatnikMechanika.Forms.Android.csproj", "{8B1912D8-A126-4B13-8D1C-B3CACE821387}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotatnikMechanika.Forms.iOS", "Clients\Forms.iOS\NotatnikMechanika.Forms.iOS.csproj", "{9B661DB8-4B79-4FAC-8C34-20A911166672}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotatnikMechanika.WPF", "Clients\WPF\NotatnikMechanika.WPF.csproj", "{49EF1200-C734-4B59-A042-A4EFAF95D55F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotatnikMechanika.Service", "Api\Service\NotatnikMechanika.Service.csproj", "{6992ACEE-7A62-47B8-8E6E-FC908D118B9F}" @@ -49,6 +43,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Settings.XamlStyler = Settings.XamlStyler EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotatnikMechanika.Maui", "NotatnikMechanika.Maui\NotatnikMechanika.Maui.csproj", "{FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -257,83 +253,6 @@ Global {C2E3DD12-8B52-4151-A4B7-F96EFDF10372}.Release|x64.Build.0 = Release|Any CPU {C2E3DD12-8B52-4151-A4B7-F96EFDF10372}.Release|x86.ActiveCfg = Release|Any CPU {C2E3DD12-8B52-4151-A4B7-F96EFDF10372}.Release|x86.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|ARM.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|ARM.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|iPhone.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|x64.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|x64.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|x86.ActiveCfg = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Debug|x86.Build.0 = Debug|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|Any CPU.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|ARM.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|ARM.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|iPhone.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|iPhone.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|x64.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|x64.Build.0 = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|x86.ActiveCfg = Release|Any CPU - {5FFED678-5E44-4BFB-9B4B-4DA84E156864}.Release|x86.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|ARM.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|ARM.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhone.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhone.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x64.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x64.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x64.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x86.ActiveCfg = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x86.Build.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Debug|x86.Deploy.0 = Debug|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|Any CPU.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|Any CPU.Deploy.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|ARM.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|ARM.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|ARM.Deploy.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhone.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhone.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhone.Deploy.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x64.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x64.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x64.Deploy.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x86.ActiveCfg = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x86.Build.0 = Release|Any CPU - {8B1912D8-A126-4B13-8D1C-B3CACE821387}.Release|x86.Deploy.0 = Release|Any CPU - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|iPhone.ActiveCfg = Debug|iPhone - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|iPhone.Build.0 = Debug|iPhone - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|iPhone.Deploy.0 = Debug|iPhone - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|ARM.ActiveCfg = Release|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|iPhone.ActiveCfg = Release|iPhone - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|iPhone.Build.0 = Release|iPhone - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|x64.ActiveCfg = Release|iPhoneSimulator - {9B661DB8-4B79-4FAC-8C34-20A911166672}.Release|x86.ActiveCfg = Release|iPhoneSimulator {49EF1200-C734-4B59-A042-A4EFAF95D55F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {49EF1200-C734-4B59-A042-A4EFAF95D55F}.Debug|Any CPU.Build.0 = Debug|Any CPU {49EF1200-C734-4B59-A042-A4EFAF95D55F}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -454,6 +373,42 @@ Global {B69F5F0E-6EAB-48DF-BD58-D1F9457C1F2E}.Release|x64.Build.0 = Release|Any CPU {B69F5F0E-6EAB-48DF-BD58-D1F9457C1F2E}.Release|x86.ActiveCfg = Release|Any CPU {B69F5F0E-6EAB-48DF-BD58-D1F9457C1F2E}.Release|x86.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|ARM.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|ARM.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|ARM.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhone.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x64.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x64.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x64.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x86.ActiveCfg = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x86.Build.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Debug|x86.Deploy.0 = Debug|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|Any CPU.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|Any CPU.Deploy.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|ARM.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|ARM.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|ARM.Deploy.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhone.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhone.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhone.Deploy.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x64.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x64.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x64.Deploy.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x86.ActiveCfg = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x86.Build.0 = Release|Any CPU + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472}.Release|x86.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -467,14 +422,12 @@ Global {855D8317-1020-410B-8CC7-6B38E9722847} = {9F4C474A-9C81-48AF-BCA4-A35B8AABF54D} {E0F158DA-4777-4742-A123-F469CDB3427C} = {9F4C474A-9C81-48AF-BCA4-A35B8AABF54D} {C2E3DD12-8B52-4151-A4B7-F96EFDF10372} = {CB020155-2ED3-47A4-9280-16802F94DF68} - {5FFED678-5E44-4BFB-9B4B-4DA84E156864} = {CB020155-2ED3-47A4-9280-16802F94DF68} - {8B1912D8-A126-4B13-8D1C-B3CACE821387} = {CB020155-2ED3-47A4-9280-16802F94DF68} - {9B661DB8-4B79-4FAC-8C34-20A911166672} = {CB020155-2ED3-47A4-9280-16802F94DF68} {49EF1200-C734-4B59-A042-A4EFAF95D55F} = {CB020155-2ED3-47A4-9280-16802F94DF68} {6992ACEE-7A62-47B8-8E6E-FC908D118B9F} = {535D483F-7F9A-48BE-B700-52FAC05F0EC9} {F7A3A1B3-EBD3-4E00-B166-829938ECC60F} = {535D483F-7F9A-48BE-B700-52FAC05F0EC9} {2FA117B8-9E29-4464-911B-9EF966CD81D4} = {535D483F-7F9A-48BE-B700-52FAC05F0EC9} {B69F5F0E-6EAB-48DF-BD58-D1F9457C1F2E} = {78BFE887-2F9A-459C-9001-9CA9F41AD3A1} + {FFBEC13E-5303-4AD0-86BE-A6A59EA7E472} = {CB020155-2ED3-47A4-9280-16802F94DF68} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3DA0B231-74F3-47B7-961B-BE044D60B8CD}
+ + +
+ + +
+ @Body +
+
+