diff --git a/Borepin/Borepin/Page/AddServerProcess/HostSelectPage.xaml b/Borepin/Borepin/Page/AddServerProcess/HostSelectPage.xaml
index 3916250..d7e9fb1 100644
--- a/Borepin/Borepin/Page/AddServerProcess/HostSelectPage.xaml
+++ b/Borepin/Borepin/Page/AddServerProcess/HostSelectPage.xaml
@@ -1,16 +1,27 @@
+ x:Class="Borepin.Page.AddServerProcess.HostSelectPage"
+ xmlns:converters="clr-namespace:Borepin.Converter">
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Borepin/Borepin/Page/AddServerProcess/LoginChoosePage.xaml b/Borepin/Borepin/Page/AddServerProcess/LoginChoosePage.xaml
index 9009235..6b85364 100644
--- a/Borepin/Borepin/Page/AddServerProcess/LoginChoosePage.xaml
+++ b/Borepin/Borepin/Page/AddServerProcess/LoginChoosePage.xaml
@@ -1,19 +1,30 @@
+ x:Class="Borepin.Page.AddServerProcess.LoginChoosePage"
+ xmlns:converters="clr-namespace:Borepin.Converter">
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
+
\ No newline at end of file
diff --git a/Borepin/Borepin/Page/AddServerProcess/LoginPasswordPage.xaml b/Borepin/Borepin/Page/AddServerProcess/LoginPasswordPage.xaml
index 45278fb..f54def5 100644
--- a/Borepin/Borepin/Page/AddServerProcess/LoginPasswordPage.xaml
+++ b/Borepin/Borepin/Page/AddServerProcess/LoginPasswordPage.xaml
@@ -1,19 +1,30 @@
+ x:Class="Borepin.Page.AddServerProcess.LoginPasswordPage"
+ xmlns:converters="clr-namespace:Borepin.Converter">
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/Borepin/Borepin/PageModel/AddServerProcess/HostSelectPageModel.cs b/Borepin/Borepin/PageModel/AddServerProcess/HostSelectPageModel.cs
index ce0cf38..c664418 100644
--- a/Borepin/Borepin/PageModel/AddServerProcess/HostSelectPageModel.cs
+++ b/Borepin/Borepin/PageModel/AddServerProcess/HostSelectPageModel.cs
@@ -1,6 +1,7 @@
-using Borepin.Service.BFFH;
-using Prism.Mvvm;
+using Borepin.Base;
+using Borepin.Service.BFFH;
using Prism.Navigation;
+using Prism.Services;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
@@ -9,27 +10,36 @@ using Xamarin.Forms;
namespace Borepin.PageModel.AddServerProcess
{
- public class HostSelectPageModel : BindableBase
+ public class HostSelectPageModel : PageModelBase
{
- private readonly INavigationService _NavigationService;
+ #region Private Properties
private readonly IBFFHService _BFFHService;
+ private readonly IPageDialogService _PageDialogService;
+ #endregion
- public HostSelectPageModel(INavigationService navigationService, IBFFHService bffhService)
+ #region Constructors
+ public HostSelectPageModel(INavigationService navigationService, IBFFHService bffhService, IPageDialogService pageDialogService) : base(navigationService)
{
- _NavigationService = navigationService;
_BFFHService = bffhService;
+ _PageDialogService = pageDialogService;
UseHostCommand = new Command(UseHostCommandExecuted);
DetectHostCommand = new Command(DetectHostCommandExecuted);
Task.Run(LoadData);
}
+ #endregion
- private void LoadData()
+ #region LoadData
+ public override Task LoadData()
{
+ IsBusy = false;
+ return Task.CompletedTask;
}
+ #endregion
+ #region Properties
private string _Host;
public string Host
{
@@ -43,7 +53,9 @@ namespace Borepin.PageModel.AddServerProcess
get => _KnownHost_List;
set => SetProperty(ref _KnownHost_List, value);
}
+ #endregion
+ #region Commands
private ICommand _UseHostCommand;
public ICommand UseHostCommand
{
@@ -53,6 +65,8 @@ namespace Borepin.PageModel.AddServerProcess
private async void UseHostCommandExecuted()
{
+ IsBusy = true;
+
UriBuilder builder = new UriBuilder(Host);
if(builder.Port == 80)
{
@@ -68,9 +82,18 @@ namespace Borepin.PageModel.AddServerProcess
{
await _BFFHService.Disconnect();
}
- await _BFFHService.Connect(connection);
-
-
+
+ try
+ {
+ await _BFFHService.Connect(connection);
+ }
+ catch (Capnp.Rpc.RpcException exception) when (exception.Message == "TcpRpcClient is unable to connect")
+ {
+ await _PageDialogService.DisplayAlertAsync("Connection failed", "Unable to connect to server.", "Ok");
+
+ IsBusy = false;
+ return;
+ }
INavigationResult result = await _NavigationService.NavigateAsync("AddServerProcess_LoginChoosePage");
if(!result.Success)
@@ -91,5 +114,18 @@ namespace Borepin.PageModel.AddServerProcess
// Use Demo Host
Host = "127.0.0.1:59661";
}
+ #endregion
+
+ #region INavigationAware
+ public override void OnNavigatedFrom(INavigationParameters parameters)
+ {
+
+ }
+
+ public override void OnNavigatedTo(INavigationParameters parameters)
+ {
+
+ }
+ #endregion
}
}
diff --git a/Borepin/Borepin/PageModel/AddServerProcess/LoginChoosePageModel.cs b/Borepin/Borepin/PageModel/AddServerProcess/LoginChoosePageModel.cs
index c6bea76..982bdc9 100644
--- a/Borepin/Borepin/PageModel/AddServerProcess/LoginChoosePageModel.cs
+++ b/Borepin/Borepin/PageModel/AddServerProcess/LoginChoosePageModel.cs
@@ -1,21 +1,30 @@
-using Prism.Mvvm;
+using Borepin.Base;
using Prism.Navigation;
+using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
namespace Borepin.PageModel.AddServerProcess
{
- public class LoginChoosePageModel : BindableBase
+ public class LoginChoosePageModel : PageModelBase
{
- private INavigationService _NavigationService;
-
- public LoginChoosePageModel(INavigationService navigationService)
+ #region Contructors
+ public LoginChoosePageModel(INavigationService navigationService) : base(navigationService)
{
- _NavigationService = navigationService;
-
LoginPasswordCommand = new Command(LoginPasswordCommandExecuted);
}
+ #endregion
+ #region LoadData
+ public override Task LoadData()
+ {
+ IsBusy = false;
+
+ return Task.CompletedTask;
+ }
+ #endregion
+
+ #region Commands
private ICommand _LoginPasswordCommand;
public ICommand LoginPasswordCommand
{
@@ -31,5 +40,18 @@ namespace Borepin.PageModel.AddServerProcess
System.Diagnostics.Debugger.Break();
}
}
+ #endregion
+
+ #region INavigationAware
+ public override void OnNavigatedFrom(INavigationParameters parameters)
+ {
+
+ }
+
+ public override void OnNavigatedTo(INavigationParameters parameters)
+ {
+
+ }
+ #endregion
}
}
diff --git a/Borepin/Borepin/PageModel/AddServerProcess/LoginPasswordPageModel.cs b/Borepin/Borepin/PageModel/AddServerProcess/LoginPasswordPageModel.cs
index fa1c092..020c706 100644
--- a/Borepin/Borepin/PageModel/AddServerProcess/LoginPasswordPageModel.cs
+++ b/Borepin/Borepin/PageModel/AddServerProcess/LoginPasswordPageModel.cs
@@ -1,8 +1,8 @@
-using Borepin.Model;
+using Borepin.Base;
+using Borepin.Model;
using Borepin.Service.BFFH;
using Borepin.Service.Connections;
using Prism.Commands;
-using Prism.Mvvm;
using Prism.Navigation;
using System;
using System.Threading.Tasks;
@@ -10,15 +10,16 @@ using System.Windows.Input;
namespace Borepin.PageModel.AddServerProcess
{
- public class LoginPasswordPageModel : BindableBase
+ public class LoginPasswordPageModel : PageModelBase
{
- private readonly INavigationService _NavigationService;
+ #region Private Properties
private readonly IBFFHService _BFFHService;
private readonly IConnectionService _ConnectionService;
+ #endregion
- public LoginPasswordPageModel(INavigationService navigationService, IBFFHService bffhService, IConnectionService connectionService)
+ #region Constructors
+ public LoginPasswordPageModel(INavigationService navigationService, IBFFHService bffhService, IConnectionService connectionService) : base(navigationService)
{
- _NavigationService = navigationService;
_BFFHService = bffhService;
_ConnectionService = connectionService;
@@ -26,12 +27,18 @@ namespace Borepin.PageModel.AddServerProcess
Task.Run(LoadData);
}
+ #endregion
- private void LoadData()
+ #region LoadData
+ public override Task LoadData()
{
+ IsBusy = false;
+ return Task.CompletedTask;
}
+ #endregion
+ #region Properties
private string _Username;
public string Username
{
@@ -45,7 +52,9 @@ namespace Borepin.PageModel.AddServerProcess
get => _Password;
set => SetProperty(ref _Password, value);
}
+ #endregion
+ #region Commands
private ICommand _AuthenticateCommand;
public ICommand AuthenticateCommand
{
@@ -79,5 +88,18 @@ namespace Borepin.PageModel.AddServerProcess
System.Diagnostics.Debugger.Break();
}
}
+ #endregion
+
+ #region INavigationAware
+ public override void OnNavigatedFrom(INavigationParameters parameters)
+ {
+
+ }
+
+ public override void OnNavigatedTo(INavigationParameters parameters)
+ {
+
+ }
+ #endregion
}
}
\ No newline at end of file
diff --git a/Borepin/Borepin/PageModel/ServerPageModel.cs b/Borepin/Borepin/PageModel/ServerPageModel.cs
index 47c261e..7fed943 100644
--- a/Borepin/Borepin/PageModel/ServerPageModel.cs
+++ b/Borepin/Borepin/PageModel/ServerPageModel.cs
@@ -5,6 +5,7 @@ using Borepin.Service.Connections;
using Borepin.Service.Credentials;
using Prism.Commands;
using Prism.Navigation;
+using Prism.Services;
using Prism.Services.Dialogs;
using System.Threading.Tasks;
using System.Windows.Input;
@@ -18,16 +19,18 @@ namespace Borepin.PageModel
private readonly IConnectionService _ConnectionService;
private readonly IBFFHService _BFFHService;
private readonly ICredentialService _CredentialService;
+ private readonly IPageDialogService _PageDialogService;
#endregion
#region Constructors
- public ServerPageModel(INavigationService navigationService, IDialogService dialogService, IConnectionService connectionService, IBFFHService bffhService, ICredentialService credentialService) : base(navigationService)
+ public ServerPageModel(INavigationService navigationService, IDialogService dialogService, IConnectionService connectionService, IBFFHService bffhService, ICredentialService credentialService, IPageDialogService pageDialogService) : base(navigationService)
{
_DialogService = dialogService;
_ConnectionService = connectionService;
_BFFHService = bffhService;
_CredentialService = credentialService;
+ _PageDialogService = pageDialogService;
ConnectCommand = new DelegateCommand(async () => await ConnectCommandExecuted());
DeleteCommand = new DelegateCommand(DeleteCommandExecuted);
@@ -77,7 +80,17 @@ namespace Borepin.PageModel
}
else
{
- await _BFFHService.Connect(Connection_Item);
+ try
+ {
+ await _BFFHService.Connect(Connection_Item);
+ }
+ catch(Capnp.Rpc.RpcException exception) when (exception.Message == "TcpRpcClient is unable to connect")
+ {
+ await _PageDialogService.DisplayAlertAsync("Connection failed", "Unable to connect to server.", "Ok");
+
+ IsBusy = false;
+ return;
+ }
await _BFFHService.Authenticate();
IsConnected = true;