diff --git a/Borepin/Borepin.Android/Borepin.Android.csproj b/Borepin/Borepin.Android/Borepin.Android.csproj
index 6f628be..06f1b43 100644
--- a/Borepin/Borepin.Android/Borepin.Android.csproj
+++ b/Borepin/Borepin.Android/Borepin.Android.csproj
@@ -81,6 +81,7 @@
+
diff --git a/Borepin/Borepin.Android/PlatformInitializer.cs b/Borepin/Borepin.Android/PlatformInitializer.cs
index ac5fbc0..540b18b 100644
--- a/Borepin/Borepin.Android/PlatformInitializer.cs
+++ b/Borepin/Borepin.Android/PlatformInitializer.cs
@@ -1,5 +1,6 @@
using Borepin.Droid.Services;
using Borepin.Service;
+using Borepin.Service.Browser;
using Borepin.Service.Storage;
using Borepin.Service.Versioning;
using Prism;
@@ -14,6 +15,7 @@ namespace Borepin.Droid
containerRegistry.Register();
containerRegistry.Register();
containerRegistry.Register();
+ containerRegistry.Register();
containerRegistry.RegisterSingleton();
}
diff --git a/Borepin/Borepin.Android/Services/BrowserService.cs b/Borepin/Borepin.Android/Services/BrowserService.cs
new file mode 100644
index 0000000..c2e836a
--- /dev/null
+++ b/Borepin/Borepin.Android/Services/BrowserService.cs
@@ -0,0 +1,51 @@
+using Borepin.Service.Browser;
+using System;
+using System.Threading.Tasks;
+using Xamarin.Essentials;
+
+namespace Borepin.Droid.Services
+{
+ public class BrowserService : IBrowserService
+ {
+ private Xamarin.Essentials.BrowserLaunchOptions _ConvertBrowserLaunchOptions(Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ return new Xamarin.Essentials.BrowserLaunchOptions()
+ {
+ Flags = (Xamarin.Essentials.BrowserLaunchFlags)browserLaunchOptions.Flags,
+ LaunchMode = (Xamarin.Essentials.BrowserLaunchMode)browserLaunchOptions.LaunchMode,
+ PreferredControlColor = browserLaunchOptions.PreferredControlColor,
+ PreferredToolbarColor = browserLaunchOptions.PreferredToolbarColor,
+ TitleMode = (Xamarin.Essentials.BrowserTitleMode)browserLaunchOptions.TitleMode
+ };
+ }
+ public async Task OpenAsync(string uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+
+ public async Task OpenAsync(Uri uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Borepin/Borepin.UWP/Borepin.UWP.csproj b/Borepin/Borepin.UWP/Borepin.UWP.csproj
index 620bb6d..c3ae35d 100644
--- a/Borepin/Borepin.UWP/Borepin.UWP.csproj
+++ b/Borepin/Borepin.UWP/Borepin.UWP.csproj
@@ -99,6 +99,7 @@
+
diff --git a/Borepin/Borepin.UWP/PlatformInitializer.cs b/Borepin/Borepin.UWP/PlatformInitializer.cs
index 9eacb3c..0818906 100644
--- a/Borepin/Borepin.UWP/PlatformInitializer.cs
+++ b/Borepin/Borepin.UWP/PlatformInitializer.cs
@@ -4,6 +4,7 @@ using Prism.Ioc;
using Borepin.Service.Storage;
using Borepin.Service.Versioning;
using Borepin.Service;
+using Borepin.Service.Browser;
namespace Borepin.UWP
{
@@ -14,6 +15,7 @@ namespace Borepin.UWP
containerRegistry.Register();
containerRegistry.Register();
containerRegistry.Register();
+ containerRegistry.Register();
containerRegistry.RegisterSingleton();
}
diff --git a/Borepin/Borepin.UWP/Services/BrowserService.cs b/Borepin/Borepin.UWP/Services/BrowserService.cs
new file mode 100644
index 0000000..ddffa27
--- /dev/null
+++ b/Borepin/Borepin.UWP/Services/BrowserService.cs
@@ -0,0 +1,51 @@
+using Borepin.Service.Browser;
+using System;
+using System.Threading.Tasks;
+using Xamarin.Essentials;
+
+namespace Borepin.UWP.Services
+{
+ public class BrowserService : IBrowserService
+ {
+ private Xamarin.Essentials.BrowserLaunchOptions _ConvertBrowserLaunchOptions(Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ return new Xamarin.Essentials.BrowserLaunchOptions()
+ {
+ Flags = (Xamarin.Essentials.BrowserLaunchFlags)browserLaunchOptions.Flags,
+ LaunchMode = (Xamarin.Essentials.BrowserLaunchMode)browserLaunchOptions.LaunchMode,
+ PreferredControlColor = browserLaunchOptions.PreferredControlColor,
+ PreferredToolbarColor = browserLaunchOptions.PreferredToolbarColor,
+ TitleMode = (Xamarin.Essentials.BrowserTitleMode)browserLaunchOptions.TitleMode
+ };
+ }
+ public async Task OpenAsync(string uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+
+ public async Task OpenAsync(Uri uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+ }
+}
diff --git a/Borepin/Borepin.iOS/Borepin.iOS.csproj b/Borepin/Borepin.iOS/Borepin.iOS.csproj
index 5a52689..d1110a9 100644
--- a/Borepin/Borepin.iOS/Borepin.iOS.csproj
+++ b/Borepin/Borepin.iOS/Borepin.iOS.csproj
@@ -82,6 +82,7 @@
+
diff --git a/Borepin/Borepin.iOS/PlatformInitializer.cs b/Borepin/Borepin.iOS/PlatformInitializer.cs
index 26a09b8..ade1f95 100644
--- a/Borepin/Borepin.iOS/PlatformInitializer.cs
+++ b/Borepin/Borepin.iOS/PlatformInitializer.cs
@@ -1,5 +1,6 @@
using Borepin.iOS.Services;
using Borepin.Service;
+using Borepin.Service.Browser;
using Borepin.Service.Storage;
using Borepin.Service.Versioning;
using Prism;
@@ -14,6 +15,7 @@ namespace Borepin.iOS
containerRegistry.Register();
containerRegistry.Register();
containerRegistry.Register();
+ containerRegistry.Register();
containerRegistry.RegisterSingleton();
}
diff --git a/Borepin/Borepin.iOS/Services/BrowserService.cs b/Borepin/Borepin.iOS/Services/BrowserService.cs
new file mode 100644
index 0000000..67f2cb4
--- /dev/null
+++ b/Borepin/Borepin.iOS/Services/BrowserService.cs
@@ -0,0 +1,51 @@
+using Borepin.Service.Browser;
+using System;
+using System.Threading.Tasks;
+using Xamarin.Essentials;
+
+namespace Borepin.iOS.Services
+{
+ public class BrowserService : IBrowserService
+ {
+ private Xamarin.Essentials.BrowserLaunchOptions _ConvertBrowserLaunchOptions(Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ return new Xamarin.Essentials.BrowserLaunchOptions()
+ {
+ Flags = (Xamarin.Essentials.BrowserLaunchFlags)browserLaunchOptions.Flags,
+ LaunchMode = (Xamarin.Essentials.BrowserLaunchMode)browserLaunchOptions.LaunchMode,
+ PreferredControlColor = browserLaunchOptions.PreferredControlColor,
+ PreferredToolbarColor = browserLaunchOptions.PreferredToolbarColor,
+ TitleMode = (Xamarin.Essentials.BrowserTitleMode)browserLaunchOptions.TitleMode
+ };
+ }
+ public async Task OpenAsync(string uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(string uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+
+ public async Task OpenAsync(Uri uri)
+ {
+ await Browser.OpenAsync(uri).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchMode browserLaunchMode)
+ {
+ await Browser.OpenAsync(uri, (Xamarin.Essentials.BrowserLaunchMode)browserLaunchMode).ConfigureAwait(false);
+ }
+
+ public async Task OpenAsync(Uri uri, Service.Browser.BrowserLaunchOptions browserLaunchOptions)
+ {
+ await Browser.OpenAsync(uri, _ConvertBrowserLaunchOptions(browserLaunchOptions));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Borepin/Borepin/Base/ConnectionModelBase.cs b/Borepin/Borepin/Base/ConnectionModelBase.cs
index fc69cff..a07360e 100644
--- a/Borepin/Borepin/Base/ConnectionModelBase.cs
+++ b/Borepin/Borepin/Base/ConnectionModelBase.cs
@@ -2,6 +2,7 @@
using FabAccessAPI;
using Prism.Navigation;
using Prism.Services;
+using System;
using System.Threading.Tasks;
namespace Borepin.Base
@@ -109,7 +110,7 @@ namespace Borepin.Base
{
await LoadAPIData().ConfigureAwait(false);
}
- catch
+ catch(Exception ex)
{
IsConnected = false;
await _API.Disconnect().ConfigureAwait(false);
diff --git a/Borepin/Borepin/DialogModel/ConfirmDialogModel.cs b/Borepin/Borepin/DialogModel/ConfirmDialogModel.cs
index 902f751..dbe3bf5 100644
--- a/Borepin/Borepin/DialogModel/ConfirmDialogModel.cs
+++ b/Borepin/Borepin/DialogModel/ConfirmDialogModel.cs
@@ -59,7 +59,7 @@ namespace Borepin.DialogModel
IDialogParameters parameters = new DialogParameters()
{
{ "result", "confirm" },
- { "instance", _Instance }
+ { "instance", _Instance },
};
RequestClose(parameters);
}
@@ -75,7 +75,7 @@ namespace Borepin.DialogModel
IDialogParameters parameters = new DialogParameters()
{
{ "result", "abort" },
- { "instance", _Instance }
+ { "instance", _Instance },
};
RequestClose(parameters);
}
diff --git a/Borepin/Borepin/DialogModel/ScanDialogModel.cs b/Borepin/Borepin/DialogModel/ScanDialogModel.cs
index 5ebd646..0543b8e 100644
--- a/Borepin/Borepin/DialogModel/ScanDialogModel.cs
+++ b/Borepin/Borepin/DialogModel/ScanDialogModel.cs
@@ -71,7 +71,7 @@ namespace Borepin.DialogModel
{
{ "result", "scanned" },
{ "value", ScanResult.Text },
- { "instance", _Instance }
+ { "instance", _Instance },
};
RequestClose(parameters);
}
@@ -90,7 +90,7 @@ namespace Borepin.DialogModel
IDialogParameters parameters = new DialogParameters()
{
{ "result", "abort" },
- { "instance", _Instance }
+ { "instance", _Instance },
};
RequestClose(parameters);
}
diff --git a/Borepin/Borepin/Model/ConnectionDataVisualize.cs b/Borepin/Borepin/Model/ConnectionDataVisualize.cs
index 2654090..01bd41a 100644
--- a/Borepin/Borepin/Model/ConnectionDataVisualize.cs
+++ b/Borepin/Borepin/Model/ConnectionDataVisualize.cs
@@ -13,8 +13,6 @@ namespace Borepin.Model
public ConnectionDataVisualize(ConnectionData connectionData)
{
_ConnectionData = connectionData;
-
- LoadData();
}
#endregion
diff --git a/Borepin/Borepin/Model/MachineViewModelListGroup.cs b/Borepin/Borepin/Model/MachineViewModelListGroup.cs
new file mode 100644
index 0000000..058e47f
--- /dev/null
+++ b/Borepin/Borepin/Model/MachineViewModelListGroup.cs
@@ -0,0 +1,19 @@
+using Borepin.ViewModel;
+using NaturalSort.Extension;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Borepin.Model
+{
+ public class MachineViewModelListGroup : List
+ {
+ public string Category { get; set; }
+ public void Sort_Machines()
+ {
+ List ordered = new List(this.OrderBy(x => x.Machine.Name, StringComparison.OrdinalIgnoreCase.WithNaturalSort()));
+ Clear();
+ AddRange(ordered);
+ }
+ }
+}
diff --git a/Borepin/Borepin/Model/MachineVisualize.cs b/Borepin/Borepin/Model/MachineVisualize.cs
index 2c51d6d..709c7c5 100644
--- a/Borepin/Borepin/Model/MachineVisualize.cs
+++ b/Borepin/Borepin/Model/MachineVisualize.cs
@@ -1,5 +1,6 @@
using FabAccessAPI.Schema;
using Prism.Mvvm;
+using System.Threading.Tasks;
using static FabAccessAPI.Schema.Machine;
namespace Borepin.Model
@@ -14,24 +15,24 @@ namespace Borepin.Model
public MachineVisualize(Machine machine)
{
_Machine = machine;
-
- LoadData();
}
#endregion
#region Methods
- public async void LoadData()
+ public async Task LoadData()
{
//ID = _Machine.Id;
//Space = new SpaceVisualize(_Machine.Space);
Name = _Machine.Name;
Description = _Machine.Description;
+ Wiki = _Machine.Wiki;
State = _Machine.State;
+ Category = _Machine.Category;
if(_Machine.Manager.Just != null)
{
Manager = new UserVisualize(_Machine.Manager.Just);
- Manager.LoadData();
+ await Manager.LoadData().ConfigureAwait(false);
}
else
{
@@ -48,17 +49,17 @@ namespace Borepin.Model
else
{
CurrentUser = new UserVisualize(machineInfoExtended.CurrentUser.Just);
- CurrentUser.LoadData();
+ await CurrentUser.LoadData().ConfigureAwait(false);
}
- if (machineInfoExtended.LastUser .Just== null)
+ if (machineInfoExtended.LastUser.Just == null)
{
LastUser = null;
}
else
{
LastUser = new UserVisualize(machineInfoExtended.LastUser.Just);
- LastUser.LoadData();
+ await LastUser.LoadData().ConfigureAwait(false);
}
}
else
@@ -73,7 +74,7 @@ namespace Borepin.Model
CanCheck = !((CheckInterface_Proxy)_Machine.Check).IsNull;
CanManage = !((ManageInterface_Proxy)_Machine.Manage).IsNull;
CanAdmin = !((AdminInterface_Proxy)_Machine.Admin).IsNull;
- CanNotUseByPermission = State == MachineState.free && CanUse == false;
+ CanNotUseByPermission = State == MachineState.free && !CanUse;
}
#endregion
@@ -99,6 +100,13 @@ namespace Borepin.Model
set => SetProperty(ref _Name, value);
}
+ private string _Category;
+ public string Category
+ {
+ get => _Category;
+ set => SetProperty(ref _Category, value);
+ }
+
private string _Description;
public string Description
{
@@ -106,6 +114,13 @@ namespace Borepin.Model
set => SetProperty(ref _Description, value);
}
+ private string _Wiki;
+ public string Wiki
+ {
+ get => _Wiki;
+ set => SetProperty(ref _Wiki, value);
+ }
+
private MachineState _State;
public MachineState State
{
diff --git a/Borepin/Borepin/Model/SpaceVisualize.cs b/Borepin/Borepin/Model/SpaceVisualize.cs
index e264dfc..addd06f 100644
--- a/Borepin/Borepin/Model/SpaceVisualize.cs
+++ b/Borepin/Borepin/Model/SpaceVisualize.cs
@@ -13,7 +13,6 @@ namespace Borepin.Model
public SpaceVisualize(Space space)
{
_Space = space;
- LoadData();
}
#endregion
diff --git a/Borepin/Borepin/Model/UserVisualize.cs b/Borepin/Borepin/Model/UserVisualize.cs
index 399dc64..8f3d3b5 100644
--- a/Borepin/Borepin/Model/UserVisualize.cs
+++ b/Borepin/Borepin/Model/UserVisualize.cs
@@ -1,5 +1,6 @@
using FabAccessAPI.Schema;
using Prism.Mvvm;
+using System.Threading.Tasks;
namespace Borepin.Model
{
@@ -13,16 +14,17 @@ namespace Borepin.Model
public UserVisualize(User user)
{
_User = user;
- LoadData();
}
#endregion
#region LoadData
- public void LoadData()
+ public Task LoadData()
{
//ID = _User.Id;
Username = _User.Username;
//Space = new SpaceVisualize(_User.Space);
+
+ return Task.CompletedTask;
}
#endregion
diff --git a/Borepin/Borepin/Page/MachineListPage.xaml b/Borepin/Borepin/Page/MachineListPage.xaml
index 679a5df..5b47d51 100644
--- a/Borepin/Borepin/Page/MachineListPage.xaml
+++ b/Borepin/Borepin/Page/MachineListPage.xaml
@@ -29,7 +29,16 @@
Android="True"/>
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Borepin/Borepin/Page/MachinePage.xaml b/Borepin/Borepin/Page/MachinePage.xaml
index fabbc80..5e7d2d9 100644
--- a/Borepin/Borepin/Page/MachinePage.xaml
+++ b/Borepin/Borepin/Page/MachinePage.xaml
@@ -22,31 +22,38 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
diff --git a/Borepin/Borepin/Page/MainPage.xaml b/Borepin/Borepin/Page/MainPage.xaml
index 0608532..a394660 100644
--- a/Borepin/Borepin/Page/MainPage.xaml
+++ b/Borepin/Borepin/Page/MainPage.xaml
@@ -5,22 +5,27 @@
xmlns:resource_text="clr-namespace:Borepin.Resources.Text">
-
-
+
+
+
+
+
+
+
-
-
+
-
+
+
-
-
-
+
+
+
-
+
diff --git a/Borepin/Borepin/Page/ProfilePage.xaml b/Borepin/Borepin/Page/ProfilePage.xaml
index b68591f..2a1d6fb 100644
--- a/Borepin/Borepin/Page/ProfilePage.xaml
+++ b/Borepin/Borepin/Page/ProfilePage.xaml
@@ -17,11 +17,13 @@
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Borepin/Borepin/Page/UserPage.xaml b/Borepin/Borepin/Page/UserPage.xaml
index 250bdc2..4ae7dc4 100644
--- a/Borepin/Borepin/Page/UserPage.xaml
+++ b/Borepin/Borepin/Page/UserPage.xaml
@@ -31,11 +31,13 @@
-
-
-
+
+
+
+
+
-
+
diff --git a/Borepin/Borepin/PageModel/AddServerProcess/AuthPlainPageModel.cs b/Borepin/Borepin/PageModel/AddServerProcess/AuthPlainPageModel.cs
index a2aafbc..edb5d94 100644
--- a/Borepin/Borepin/PageModel/AddServerProcess/AuthPlainPageModel.cs
+++ b/Borepin/Borepin/PageModel/AddServerProcess/AuthPlainPageModel.cs
@@ -6,7 +6,6 @@ using Borepin.Base;
using Borepin.Base.Exceptions;
using Borepin.Service;
using Borepin.Service.Storage;
-using Borepin.Service.Storage.Exceptions;
using FabAccessAPI;
using FabAccessAPI.Exceptions;
using Prism.Commands;
@@ -47,6 +46,11 @@ namespace Borepin.PageModel.AddServerProcess
return Task.CompletedTask;
}
+
+ public override Task