mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-12 23:01:52 +01:00
Merge branch 'feature/MachineList' into 'main'
Machine List Closes #32, #33, #34, and #35 See merge request fabinfra/fabaccess/borepin!37
This commit is contained in:
commit
f54382f5c3
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@ -78,6 +78,7 @@
|
|||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\PreferenceStorageService.cs" />
|
<Compile Include="Services\PreferenceStorageService.cs" />
|
||||||
<Compile Include="Services\SecretStorage.cs" />
|
<Compile Include="Services\SecretStorage.cs" />
|
||||||
|
<Compile Include="Services\VersioningService.cs" />
|
||||||
<Compile Include="SplashActivity.cs" />
|
<Compile Include="SplashActivity.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -188,4 +189,4 @@
|
|||||||
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionCode" Value="$(CI_PIPELINE_ID)" />
|
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionCode" Value="$(CI_PIPELINE_ID)" />
|
||||||
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionName" Value="$(CI_COMMIT_TAG.SubString(1))" />
|
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionName" Value="$(CI_COMMIT_TAG.SubString(1))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
@ -1,5 +1,6 @@
|
|||||||
using Borepin.Droid.Services;
|
using Borepin.Droid.Services;
|
||||||
using Borepin.Service.Storage;
|
using Borepin.Service.Storage;
|
||||||
|
using Borepin.Service.Versioning;
|
||||||
using Prism;
|
using Prism;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
|
|
||||||
@ -11,6 +12,7 @@ namespace Borepin.Droid
|
|||||||
{
|
{
|
||||||
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
||||||
containerRegistry.Register<ISecretStorageService, SecretStorage>();
|
containerRegistry.Register<ISecretStorageService, SecretStorage>();
|
||||||
|
containerRegistry.Register<IVersioningService, VersioningService>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
30
Borepin/Borepin.Android/Services/VersioningService.cs
Normal file
30
Borepin/Borepin.Android/Services/VersioningService.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Borepin.Service.Versioning;
|
||||||
|
using Xamarin.Essentials;
|
||||||
|
|
||||||
|
namespace Borepin.Droid.Services
|
||||||
|
{
|
||||||
|
public class VersioningService : IVersioningService
|
||||||
|
{
|
||||||
|
#region Constructors
|
||||||
|
public VersioningService()
|
||||||
|
{
|
||||||
|
VersionTracking.Track();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
public string CurrentBuild
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentBuild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CurrentVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -100,6 +100,7 @@
|
|||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\PreferenceStorageService.cs" />
|
<Compile Include="Services\PreferenceStorageService.cs" />
|
||||||
<Compile Include="Services\SecretStorageService.cs" />
|
<Compile Include="Services\SecretStorageService.cs" />
|
||||||
|
<Compile Include="Services\VersioningService.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AppxManifest Include="Package.appxmanifest">
|
<AppxManifest Include="Package.appxmanifest">
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using Prism;
|
using Prism;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
using Borepin.Service.Storage;
|
using Borepin.Service.Storage;
|
||||||
|
using Borepin.Service.Versioning;
|
||||||
|
|
||||||
namespace Borepin.UWP
|
namespace Borepin.UWP
|
||||||
{
|
{
|
||||||
@ -11,6 +12,7 @@ namespace Borepin.UWP
|
|||||||
{
|
{
|
||||||
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
||||||
containerRegistry.Register<ISecretStorageService, SecretStorageService>();
|
containerRegistry.Register<ISecretStorageService, SecretStorageService>();
|
||||||
|
containerRegistry.Register<IVersioningService, VersioningService>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
30
Borepin/Borepin.UWP/Services/VersioningService.cs
Normal file
30
Borepin/Borepin.UWP/Services/VersioningService.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Borepin.Service.Versioning;
|
||||||
|
using Xamarin.Essentials;
|
||||||
|
|
||||||
|
namespace Borepin.UWP.Services
|
||||||
|
{
|
||||||
|
public class VersioningService : IVersioningService
|
||||||
|
{
|
||||||
|
#region Constructors
|
||||||
|
public VersioningService()
|
||||||
|
{
|
||||||
|
VersionTracking.Track();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
public string CurrentBuild
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentBuild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CurrentVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
@ -52,11 +52,13 @@
|
|||||||
<MtouchArch>ARM64</MtouchArch>
|
<MtouchArch>ARM64</MtouchArch>
|
||||||
<MtouchDebug>true</MtouchDebug>
|
<MtouchDebug>true</MtouchDebug>
|
||||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
||||||
<MtouchLink>SdkOnly</MtouchLink>
|
<MtouchLink>None</MtouchLink>
|
||||||
<MtouchInterpreter>-all</MtouchInterpreter>
|
<MtouchInterpreter>
|
||||||
|
</MtouchInterpreter>
|
||||||
<MtouchExtraArgs>--optimize=experimental-xforms-product-type</MtouchExtraArgs>
|
<MtouchExtraArgs>--optimize=experimental-xforms-product-type</MtouchExtraArgs>
|
||||||
<MtouchSdkVersion />
|
<MtouchSdkVersion />
|
||||||
<CodesignKey>iPhone Developer</CodesignKey>
|
<CodesignKey>iPhone Developer</CodesignKey>
|
||||||
|
<MtouchEnableSGenConc>false</MtouchEnableSGenConc>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
|
||||||
<DebugType>none</DebugType>
|
<DebugType>none</DebugType>
|
||||||
@ -69,6 +71,9 @@
|
|||||||
<MtouchExtraArgs>--optimize=experimental-xforms-product-type</MtouchExtraArgs>
|
<MtouchExtraArgs>--optimize=experimental-xforms-product-type</MtouchExtraArgs>
|
||||||
<MtouchLink>SdkOnly</MtouchLink>
|
<MtouchLink>SdkOnly</MtouchLink>
|
||||||
<CodesignKey>iPhone Distribution</CodesignKey>
|
<CodesignKey>iPhone Distribution</CodesignKey>
|
||||||
|
<MtouchSdkVersion />
|
||||||
|
<MtouchEnableSGenConc>false</MtouchEnableSGenConc>
|
||||||
|
<MtouchInterpreter>-all</MtouchInterpreter>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
|
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
|
||||||
<AppExtensionDebugBundleId />
|
<AppExtensionDebugBundleId />
|
||||||
@ -78,6 +83,7 @@
|
|||||||
<Compile Include="AppDelegate.cs" />
|
<Compile Include="AppDelegate.cs" />
|
||||||
<Compile Include="Services\PreferenceStorageService.cs" />
|
<Compile Include="Services\PreferenceStorageService.cs" />
|
||||||
<Compile Include="Services\SecretStorageService.cs" />
|
<Compile Include="Services\SecretStorageService.cs" />
|
||||||
|
<Compile Include="Services\VersioningService.cs" />
|
||||||
<None Include="Entitlements.plist" />
|
<None Include="Entitlements.plist" />
|
||||||
<None Include="Info.plist" />
|
<None Include="Info.plist" />
|
||||||
<Compile Include="PlatformInitializer.cs" />
|
<Compile Include="PlatformInitializer.cs" />
|
||||||
@ -198,4 +204,4 @@
|
|||||||
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(CI_PIPELINE_ID)" />
|
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(CI_PIPELINE_ID)" />
|
||||||
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(CI_COMMIT_TAG.SubString(1))" />
|
<XmlPoke XmlInputPath="Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(CI_COMMIT_TAG.SubString(1))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
@ -1,5 +1,6 @@
|
|||||||
using Borepin.iOS.Services;
|
using Borepin.iOS.Services;
|
||||||
using Borepin.Service.Storage;
|
using Borepin.Service.Storage;
|
||||||
|
using Borepin.Service.Versioning;
|
||||||
using Prism;
|
using Prism;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
|
|
||||||
@ -11,6 +12,7 @@ namespace Borepin.iOS
|
|||||||
{
|
{
|
||||||
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
containerRegistry.Register<IPreferenceStorageService, PreferenceStorageService>();
|
||||||
containerRegistry.Register<ISecretStorageService, SecretStorageService>();
|
containerRegistry.Register<ISecretStorageService, SecretStorageService>();
|
||||||
|
containerRegistry.Register<IVersioningService, VersioningService>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
30
Borepin/Borepin.iOS/Services/VersioningService.cs
Normal file
30
Borepin/Borepin.iOS/Services/VersioningService.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Borepin.Service.Versioning;
|
||||||
|
using Xamarin.Essentials;
|
||||||
|
|
||||||
|
namespace Borepin.iOS.Services
|
||||||
|
{
|
||||||
|
public class VersioningService : IVersioningService
|
||||||
|
{
|
||||||
|
#region Constructors
|
||||||
|
public VersioningService()
|
||||||
|
{
|
||||||
|
VersionTracking.Track();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
public string CurrentBuild
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentBuild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CurrentVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return VersionTracking.CurrentVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -29,6 +29,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="NaturalSort.Extension" Version="3.2.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="Plugin.Multilingual" Version="1.0.2" />
|
<PackageReference Include="Plugin.Multilingual" Version="1.0.2" />
|
||||||
<PackageReference Include="Prism.DryIoc.Forms" Version="8.1.97" />
|
<PackageReference Include="Prism.DryIoc.Forms" Version="8.1.97" />
|
||||||
|
25
Borepin/Borepin/Converter/ListNotEmptyConverter.cs
Normal file
25
Borepin/Borepin/Converter/ListNotEmptyConverter.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Globalization;
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
|
namespace Borepin.Converter
|
||||||
|
{
|
||||||
|
public class ListNotEmptyConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if(value != null && value is IList)
|
||||||
|
{
|
||||||
|
ICollection collection = value as ICollection;
|
||||||
|
return collection.Count > 0;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,11 +4,11 @@
|
|||||||
x:Class="Borepin.Dialog.ConfirmDialog"
|
x:Class="Borepin.Dialog.ConfirmDialog"
|
||||||
BackgroundColor="White">
|
BackgroundColor="White">
|
||||||
<ContentView.Content>
|
<ContentView.Content>
|
||||||
<StackLayout>
|
<StackLayout Background="{StaticResource EighthColor}" Padding="10">
|
||||||
<Label Text="{Binding Title}"/>
|
<Label Text="{Binding Title}" Style="{StaticResource LabelStyle_Title}"/>
|
||||||
<Label Text="{Binding Message}"/>
|
<Label Text="{Binding Message}" Style="{StaticResource Style_Label_Property_Text}"/>
|
||||||
<Button Text="Confirm" Command="{Binding ConfirmCommand}"/>
|
<Button Text="Confirm" Command="{Binding ConfirmCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
<Button Text="Abort" Command="{Binding AbortCommand}"/>
|
<Button Text="Abort" Command="{Binding AbortCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ContentView.Content>
|
</ContentView.Content>
|
||||||
</ContentView>
|
</ContentView>
|
@ -16,7 +16,7 @@
|
|||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
||||||
<Label Text="Username" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
<Label Text="Username" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
||||||
<Entry Text="{Binding Username}"/>
|
<Entry Text="{Binding Username}" IsSpellCheckEnabled="false"/>
|
||||||
|
|
||||||
<Label Text="Password" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
<Label Text="Password" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
||||||
<Entry Text="{Binding Password}" IsPassword="True"/>
|
<Entry Text="{Binding Password}" IsPassword="True"/>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
||||||
<Label Text="Host" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
<Label Text="Host" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
||||||
<Entry Text="{Binding Server}"/>
|
<Entry Text="{Binding Server}" Keyboard="Url" IsSpellCheckEnabled="false"/>
|
||||||
<Button Text="Connect to Server" Command="{Binding ConnectToServerCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
<Button Text="Connect to Server" Command="{Binding ConnectToServerCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
<Button Text="Scan QR-Code" Command="{Binding ScanCodeCommand}" Style="{StaticResource Style_Button_Primary}">
|
<Button Text="Scan QR-Code" Command="{Binding ScanCodeCommand}" Style="{StaticResource Style_Button_Primary}">
|
||||||
<Button.IsVisible>
|
<Button.IsVisible>
|
||||||
|
@ -5,9 +5,13 @@
|
|||||||
x:Class="Borepin.Page.MachineListPage"
|
x:Class="Borepin.Page.MachineListPage"
|
||||||
xmlns:converters="clr-namespace:Borepin.Converter"
|
xmlns:converters="clr-namespace:Borepin.Converter"
|
||||||
Title="Machines">
|
Title="Machines">
|
||||||
|
<NavigationPage.TitleView>
|
||||||
|
<Button Text="Refresh" HorizontalOptions="End" BackgroundColor="{StaticResource SecondColor}" TextColor="{StaticResource FirstColor}" Command="{Binding RefreshCommand}"/>
|
||||||
|
</NavigationPage.TitleView>
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<converters:InvertBoolConverter x:Key="InvertBoolConverter"/>
|
<converters:InvertBoolConverter x:Key="InvertBoolConverter"/>
|
||||||
|
<converters:ListNotEmptyConverter x:Key="ListNotEmptyConverter"/>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
@ -20,21 +24,19 @@
|
|||||||
<Button Text="Scan QR-Code" Command="{Binding ScanCodeCommand}" Style="{StaticResource Style_Button_Primary}">
|
<Button Text="Scan QR-Code" Command="{Binding ScanCodeCommand}" Style="{StaticResource Style_Button_Primary}">
|
||||||
<Button.IsVisible>
|
<Button.IsVisible>
|
||||||
<OnPlatform x:TypeArguments="x:Boolean"
|
<OnPlatform x:TypeArguments="x:Boolean"
|
||||||
iOS="false"
|
iOS="False"
|
||||||
Android="true"/>
|
Android="True"/>
|
||||||
</Button.IsVisible>
|
</Button.IsVisible>
|
||||||
</Button>
|
</Button>
|
||||||
<RefreshView Command="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}">
|
<ListView ItemsSource="{Binding MachineListItemViewModel_List}" SelectionMode="None" SeparatorColor="Transparent">
|
||||||
<ListView ItemsSource="{Binding MachineListItemViewModel_List}" IsVisible="{Binding IsConnected}" SelectionMode="None">
|
<ListView.ItemTemplate>
|
||||||
<ListView.ItemTemplate>
|
<DataTemplate>
|
||||||
<DataTemplate>
|
<ViewCell>
|
||||||
<ViewCell>
|
<views:MachineListItemView />
|
||||||
<views:MachineListItemView />
|
</ViewCell>
|
||||||
</ViewCell>
|
</DataTemplate>
|
||||||
</DataTemplate>
|
</ListView.ItemTemplate>
|
||||||
</ListView.ItemTemplate>
|
</ListView>
|
||||||
</ListView>
|
|
||||||
</RefreshView>
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsConnected, Converter={StaticResource InvertBoolConverter}}">
|
<StackLayout IsVisible="{Binding IsConnected, Converter={StaticResource InvertBoolConverter}}">
|
||||||
<Label Text="Please connect to Server" ></Label>
|
<Label Text="Please connect to Server" ></Label>
|
||||||
|
@ -4,10 +4,16 @@
|
|||||||
x:Class="Borepin.Page.MainPage"
|
x:Class="Borepin.Page.MainPage"
|
||||||
Title="MainPage">
|
Title="MainPage">
|
||||||
<FlyoutPage.Flyout>
|
<FlyoutPage.Flyout>
|
||||||
<ContentPage Title="FabAccess">
|
<ContentPage Title="FabAccess" BackgroundColor="{StaticResource SecondColor}">
|
||||||
<StackLayout Margin="0,50,0,0">
|
<StackLayout>
|
||||||
<Button Text="Machines" Command="{Binding NavigateCommand}" CommandParameter="MachineListPage" />
|
<StackLayout Margin="0,50,0,0" VerticalOptions="FillAndExpand">
|
||||||
<Button Text="Servers" Command="{Binding NavigateCommand}" CommandParameter="ServerListPage" />
|
<Button Text="Machines" Command="{Binding NavigateCommand}" CommandParameter="MachineListPage" VerticalOptions="Start" BackgroundColor="{StaticResource SecondColor}" TextColor="{StaticResource FirstColor}"/>
|
||||||
|
<Button Text="Servers" Command="{Binding NavigateCommand}" CommandParameter="ServerListPage" VerticalOptions="Start" BackgroundColor="{StaticResource SecondColor}" TextColor="{StaticResource FirstColor}"/>
|
||||||
|
</StackLayout>
|
||||||
|
<StackLayout Margin="0,0,0,10">
|
||||||
|
<Label Text="{Binding CurrentVersion, StringFormat='Version: {0}'}" VerticalOptions="End" Margin="10,0,0,0" TextColor="{StaticResource FirstColor}"/>
|
||||||
|
<Label Text="{Binding CurrentBuild, StringFormat='Build: {0}'}" VerticalOptions="End" Margin="10,0,0,0" TextColor="{StaticResource FirstColor}"/>
|
||||||
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
</FlyoutPage.Flyout>
|
</FlyoutPage.Flyout>
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<converters:InvertBoolConverter x:Key="InvertBoolConverter"/>
|
<converters:InvertBoolConverter x:Key="InvertBoolConverter"/>
|
||||||
|
<converters:ListNotEmptyConverter x:Key="ListNotEmptyConverter"/>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
@ -15,28 +16,22 @@
|
|||||||
<StackLayout IsVisible="{Binding IsBusy}">
|
<StackLayout IsVisible="{Binding IsBusy}">
|
||||||
<ActivityIndicator IsRunning="{Binding IsBusy}"></ActivityIndicator>
|
<ActivityIndicator IsRunning="{Binding IsBusy}"></ActivityIndicator>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}" VerticalOptions="FillAndExpand">
|
||||||
<Label Text="Active Connection" IsVisible="{Binding HasActiveConnection}"/>
|
<Label Text="Active Connection" IsVisible="{Binding HasActiveConnection}"/>
|
||||||
<ListView ItemsSource="{Binding ActiveConnection}" IsVisible="{Binding HasActiveConnection}" SelectionMode="None">
|
<StackLayout IsVisible="{Binding HasActiveConnection}">
|
||||||
|
<views:ServerListItemView BindingContext="{Binding ActiveConnection}" MinimumHeightRequest="50"/>
|
||||||
|
</StackLayout>
|
||||||
|
<Label Text="Last Connections" IsVisible="{Binding ServerListItemViewModel_List, Converter={StaticResource ListNotEmptyConverter}}"/>
|
||||||
|
<ListView ItemsSource="{Binding ServerListItemViewModel_List}" SelectionMode="None" SeparatorColor="Transparent" VerticalOptions="StartAndExpand">
|
||||||
<ListView.ItemTemplate>
|
<ListView.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<ViewCell>
|
<ViewCell>
|
||||||
<views:ServerListItemView />
|
<views:ServerListItemView/>
|
||||||
</ViewCell>
|
</ViewCell>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListView.ItemTemplate>
|
</ListView.ItemTemplate>
|
||||||
</ListView>
|
</ListView>
|
||||||
<Label Text="Last Connections"/>
|
<Button Text="Connect to new Server" Command="{Binding AddInstancesCommand}" Style="{StaticResource Style_Button_Primary}" VerticalOptions="End"/>
|
||||||
<ListView ItemsSource="{Binding ServerListItemViewModel_List}" SelectionMode="None">
|
|
||||||
<ListView.ItemTemplate>
|
|
||||||
<DataTemplate>
|
|
||||||
<ViewCell>
|
|
||||||
<views:ServerListItemView />
|
|
||||||
</ViewCell>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListView.ItemTemplate>
|
|
||||||
</ListView>
|
|
||||||
<Button Text="Connect to new Server" Command="{Binding AddInstancesCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
|
@ -14,12 +14,19 @@
|
|||||||
<StackLayout IsVisible="{Binding IsBusy}">
|
<StackLayout IsVisible="{Binding IsBusy}">
|
||||||
<ActivityIndicator IsRunning="{Binding IsBusy}"></ActivityIndicator>
|
<ActivityIndicator IsRunning="{Binding IsBusy}"></ActivityIndicator>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
<Grid IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}" VerticalOptions="FillAndExpand">
|
||||||
<Label Text="{Binding Connection_Item.Address}"/>
|
<Grid.RowDefinitions>
|
||||||
<Button IsVisible="{Binding InstanceIsActiveConnection, Converter={StaticResource InvertBoolConverter}}" Text="Connect" Command="{Binding ConnectCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
<RowDefinition Height="*"/>
|
||||||
<Button IsVisible="{Binding InstanceIsActiveConnection}" Text="Disconnect" Command="{Binding DisconnectCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
<RowDefinition Height="50"/>
|
||||||
<Button Text="Delete" Command="{Binding DeleteCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
</Grid.RowDefinitions>
|
||||||
</StackLayout>
|
<StackLayout Grid.Row="0">
|
||||||
|
<Label Text="{Binding DisplayAddress}" Style="{StaticResource LabelStyle_Title}"/>
|
||||||
|
<Label Text="{Binding Connection_Item.Username}" Style="{StaticResource Style_Label_Text_Center}"/>
|
||||||
|
<Button IsVisible="{Binding InstanceIsActiveConnection, Converter={StaticResource InvertBoolConverter}}" Text="Connect" Margin="0,10,0,0" Command="{Binding ConnectCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
|
<Button IsVisible="{Binding InstanceIsActiveConnection}" Text="Disconnect" Margin="0,10,0,0" Command="{Binding DisconnectCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
||||||
|
</StackLayout>
|
||||||
|
<Button Grid.Row="1" Text="Delete" Command="{Binding DeleteCommand}" Style="{StaticResource Style_Button_Admin}" VerticalOptions="End"/>
|
||||||
|
</Grid>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
</ContentPage>
|
</ContentPage>
|
@ -10,6 +10,10 @@ using FabAccessAPI.Schema;
|
|||||||
using Prism.Services.Dialogs;
|
using Prism.Services.Dialogs;
|
||||||
using Prism.Services;
|
using Prism.Services;
|
||||||
using Prism.AppModel;
|
using Prism.AppModel;
|
||||||
|
using static FabAccessAPI.Schema.Machine;
|
||||||
|
using System;
|
||||||
|
using NaturalSort.Extension;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Borepin.PageModel
|
namespace Borepin.PageModel
|
||||||
{
|
{
|
||||||
@ -45,19 +49,37 @@ namespace Borepin.PageModel
|
|||||||
|
|
||||||
IsConnected = true;
|
IsConnected = true;
|
||||||
|
|
||||||
IMachineSystem machineInterface = await _BFFHService.GetMachineSystemInterface().ConfigureAwait(false);
|
IMachineSystem machineSystem = await _BFFHService.GetMachineSystemInterface().ConfigureAwait(false);
|
||||||
|
MachineSystem.IInfoInterface machine_infoInterface = await machineSystem.Info().ConfigureAwait(false);
|
||||||
|
|
||||||
MachineSystem.IInfoInterface infoInterface = await machineInterface.Info().ConfigureAwait(false);
|
IUserSystem userSystem = await _BFFHService.GetUserSystemInterface().ConfigureAwait(false);
|
||||||
|
UserSystem.IInfoInterface user_infoInterface = await userSystem.Info().ConfigureAwait(false);
|
||||||
|
User user_self = (await user_infoInterface.GetUserSelf().ConfigureAwait(false)).Item1;
|
||||||
|
|
||||||
IReadOnlyList<Machine> machine_list = await infoInterface.GetMachineList().ConfigureAwait(false);
|
IReadOnlyList<Machine> machine_list = await machine_infoInterface.GetMachineList().ConfigureAwait(false);
|
||||||
|
|
||||||
List<MachineListItemViewModel> viewmodel_list = new List<MachineListItemViewModel>();
|
List<MachineListItemViewModel> viewmodel_list_user_assigned = new List<MachineListItemViewModel>();
|
||||||
|
List<MachineListItemViewModel> viewmodel_list_not_user_assigned = new List<MachineListItemViewModel>();
|
||||||
foreach (Machine machine in machine_list)
|
foreach (Machine machine in machine_list)
|
||||||
{
|
{
|
||||||
viewmodel_list.Add(new MachineListItemViewModel(machine));
|
if(!((InUseInterface_Proxy)machine.Inuse).IsNull)
|
||||||
|
{
|
||||||
|
MachineListItemViewModel new_viewmodel = new MachineListItemViewModel(machine)
|
||||||
|
{
|
||||||
|
IsUserAssigned = true
|
||||||
|
};
|
||||||
|
viewmodel_list_user_assigned.Add(new_viewmodel);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
viewmodel_list_not_user_assigned.Add(new MachineListItemViewModel(machine));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MachineListItemViewModel_List = viewmodel_list;
|
List<MachineListItemViewModel> viewmodel_list_sorted = new List<MachineListItemViewModel>();
|
||||||
|
viewmodel_list_sorted.AddRange(viewmodel_list_user_assigned.OrderBy(x => x.Name, StringComparison.OrdinalIgnoreCase.WithNaturalSort()));
|
||||||
|
viewmodel_list_sorted.AddRange(viewmodel_list_not_user_assigned.OrderBy(x => x.Name, StringComparison.OrdinalIgnoreCase.WithNaturalSort()));
|
||||||
|
MachineListItemViewModel_List = viewmodel_list_sorted;
|
||||||
|
|
||||||
IsBusy = false;
|
IsBusy = false;
|
||||||
}
|
}
|
||||||
@ -181,6 +203,7 @@ namespace Borepin.PageModel
|
|||||||
|
|
||||||
public override async void OnNavigatedTo(INavigationParameters parameters)
|
public override async void OnNavigatedTo(INavigationParameters parameters)
|
||||||
{
|
{
|
||||||
|
IsBusy = true;
|
||||||
await LoadData().ConfigureAwait(false);
|
await LoadData().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using Borepin.Base;
|
using Borepin.Base;
|
||||||
|
using Borepin.Service.Versioning;
|
||||||
using Prism.Navigation;
|
using Prism.Navigation;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
@ -9,9 +10,15 @@ namespace Borepin.PageModel
|
|||||||
{
|
{
|
||||||
public class MainPageModel : PageModelBase
|
public class MainPageModel : PageModelBase
|
||||||
{
|
{
|
||||||
|
#region Private Members
|
||||||
|
private readonly IVersioningService _VersioningService;
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
public MainPageModel(INavigationService navigationService) : base(navigationService)
|
public MainPageModel(INavigationService navigationService, IVersioningService versioningService) : base(navigationService)
|
||||||
{
|
{
|
||||||
|
_VersioningService = versioningService;
|
||||||
|
|
||||||
NavigateCommand = new Command<string>(NavigateCommandExecute);
|
NavigateCommand = new Command<string>(NavigateCommandExecute);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -19,10 +26,29 @@ namespace Borepin.PageModel
|
|||||||
#region LoadData
|
#region LoadData
|
||||||
public override Task LoadData()
|
public override Task LoadData()
|
||||||
{
|
{
|
||||||
|
CurrentVersion = _VersioningService.CurrentVersion;
|
||||||
|
CurrentBuild = _VersioningService.CurrentBuild;
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
private string _CurrentVersion;
|
||||||
|
public string CurrentVersion
|
||||||
|
{
|
||||||
|
get => _CurrentVersion;
|
||||||
|
set => SetProperty(ref _CurrentVersion, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _CurrentBuild;
|
||||||
|
public string CurrentBuild
|
||||||
|
{
|
||||||
|
get => _CurrentBuild;
|
||||||
|
set => SetProperty(ref _CurrentBuild, value);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Commands
|
#region Commands
|
||||||
private ICommand _NavigationCommand;
|
private ICommand _NavigationCommand;
|
||||||
public ICommand NavigateCommand
|
public ICommand NavigateCommand
|
||||||
@ -42,9 +68,9 @@ namespace Borepin.PageModel
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNavigatedTo(INavigationParameters parameters)
|
public override async void OnNavigatedTo(INavigationParameters parameters)
|
||||||
{
|
{
|
||||||
|
await LoadData().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ using Prism.Commands;
|
|||||||
using Prism.Navigation;
|
using Prism.Navigation;
|
||||||
using Borepin.Service.BFFH;
|
using Borepin.Service.BFFH;
|
||||||
using Borepin.Base;
|
using Borepin.Base;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Borepin.PageModel
|
namespace Borepin.PageModel
|
||||||
{
|
{
|
||||||
@ -34,10 +33,7 @@ namespace Borepin.PageModel
|
|||||||
IList<Connection> list = await _BFFHService.GetConnections().ConfigureAwait(false);
|
IList<Connection> list = await _BFFHService.GetConnections().ConfigureAwait(false);
|
||||||
if (_BFFHService.IsConnected)
|
if (_BFFHService.IsConnected)
|
||||||
{
|
{
|
||||||
ActiveConnection = new List<ServerListItemViewModel>
|
ActiveConnection = new ServerListItemViewModel(_BFFHService.CurrentConnection);
|
||||||
{
|
|
||||||
new ServerListItemViewModel(_BFFHService.CurrentConnection),
|
|
||||||
};
|
|
||||||
|
|
||||||
list.Remove(_BFFHService.CurrentConnection);
|
list.Remove(_BFFHService.CurrentConnection);
|
||||||
|
|
||||||
@ -62,8 +58,8 @@ namespace Borepin.PageModel
|
|||||||
set => SetProperty(ref _ServerListItemViewModel_List, value);
|
set => SetProperty(ref _ServerListItemViewModel_List, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IList<ServerListItemViewModel> _ActiveConnection;
|
private ServerListItemViewModel _ActiveConnection;
|
||||||
public IList<ServerListItemViewModel> ActiveConnection
|
public ServerListItemViewModel ActiveConnection
|
||||||
{
|
{
|
||||||
get => _ActiveConnection;
|
get => _ActiveConnection;
|
||||||
set => SetProperty(ref _ActiveConnection, value);
|
set => SetProperty(ref _ActiveConnection, value);
|
||||||
|
@ -7,6 +7,7 @@ using Prism.Navigation;
|
|||||||
using Prism.Services;
|
using Prism.Services;
|
||||||
using Prism.Services.Dialogs;
|
using Prism.Services.Dialogs;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|
||||||
@ -46,6 +47,11 @@ namespace Borepin.PageModel
|
|||||||
InstanceIsActiveConnection = false;
|
InstanceIsActiveConnection = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_Connection_Item != null && _Connection_Item.Address != null)
|
||||||
|
{
|
||||||
|
DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Address.Host, _Connection_Item.Address.Port);
|
||||||
|
}
|
||||||
|
|
||||||
IsBusy = false;
|
IsBusy = false;
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
@ -59,6 +65,13 @@ namespace Borepin.PageModel
|
|||||||
set => SetProperty(ref _Connection_Item, value);
|
set => SetProperty(ref _Connection_Item, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string _DisplayAddress;
|
||||||
|
public string DisplayAddress
|
||||||
|
{
|
||||||
|
get => _DisplayAddress;
|
||||||
|
set => SetProperty(ref _DisplayAddress, value);
|
||||||
|
}
|
||||||
|
|
||||||
private bool _InstanceIsActiveConnection;
|
private bool _InstanceIsActiveConnection;
|
||||||
public bool InstanceIsActiveConnection
|
public bool InstanceIsActiveConnection
|
||||||
{
|
{
|
||||||
@ -78,6 +91,11 @@ namespace Borepin.PageModel
|
|||||||
{
|
{
|
||||||
IsBusy = true;
|
IsBusy = true;
|
||||||
|
|
||||||
|
if(_BFFHService.IsConnected)
|
||||||
|
{
|
||||||
|
await _BFFHService.Disconnect().ConfigureAwait(true);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _BFFHService.Connect(Connection_Item).ConfigureAwait(true);
|
await _BFFHService.Connect(Connection_Item).ConfigureAwait(true);
|
||||||
@ -159,13 +177,13 @@ namespace Borepin.PageModel
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNavigatedTo(INavigationParameters parameters)
|
public override async void OnNavigatedTo(INavigationParameters parameters)
|
||||||
{
|
{
|
||||||
if(Connection_Item == null)
|
if(Connection_Item == null)
|
||||||
{
|
{
|
||||||
Connection_Item = parameters["instance"] as Connection;
|
Connection_Item = parameters["instance"] as Connection;
|
||||||
|
|
||||||
LoadData();
|
await LoadData().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -157,6 +157,7 @@ namespace Borepin.Service.BFFH
|
|||||||
|
|
||||||
if (! await _AuthenticatePlainAsync(connection.Username, password).ConfigureAwait(false))
|
if (! await _AuthenticatePlainAsync(connection.Username, password).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
|
await Disconnect().ConfigureAwait(false);
|
||||||
throw new AuthenticatingFailedException();
|
throw new AuthenticatingFailedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,6 +196,7 @@ namespace Borepin.Service.BFFH
|
|||||||
|
|
||||||
if (!await _AuthenticatePlainAsync(connection.Username, password).ConfigureAwait(false))
|
if (!await _AuthenticatePlainAsync(connection.Username, password).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
|
await Disconnect().ConfigureAwait(false);
|
||||||
throw new AuthenticatingFailedException();
|
throw new AuthenticatingFailedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
Borepin/Borepin/Service/Versioning/IVersioningService.cs
Normal file
8
Borepin/Borepin/Service/Versioning/IVersioningService.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace Borepin.Service.Versioning
|
||||||
|
{
|
||||||
|
public interface IVersioningService
|
||||||
|
{
|
||||||
|
string CurrentBuild { get; }
|
||||||
|
string CurrentVersion { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -15,7 +15,7 @@
|
|||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="5" />
|
<ColumnDefinition Width="5" />
|
||||||
<ColumnDefinition Width="6*" />
|
<ColumnDefinition Width="6*" />
|
||||||
<ColumnDefinition Width="2*" />
|
<ColumnDefinition Width="3*" />
|
||||||
<ColumnDefinition Width="2*" />
|
<ColumnDefinition Width="2*" />
|
||||||
<ColumnDefinition Width="1" />
|
<ColumnDefinition Width="1" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
@ -24,8 +24,11 @@
|
|||||||
<RowDefinition Height="1"/>
|
<RowDefinition Height="1"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" Style="{StaticResource LabelStyle_Primary}"/>
|
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" Style="{StaticResource LabelStyle_Primary}"/>
|
||||||
<Label Grid.Row="0" Grid.Column="2" Text="{Binding State, Converter={StaticResource MachineStateStringConverter}}" TextColor="{Binding State, Converter={StaticResource MachineStateColorConverter}}" Style="{StaticResource LabelStyle_Second}" HorizontalTextAlignment="End" />
|
<StackLayout Grid.Row="0" Grid.Column="2" Orientation="Horizontal" HorizontalOptions="End">
|
||||||
<Button Grid.Row="0" Grid.Column="3" Margin="0, 3, 0, 3" Text="->" Command="{Binding Source={RelativeSource AncestorType={x:Type pagemodel:MachineListPageModel}}, Path=SelectInstanceCommand}" CommandParameter="{Binding .}" Style="{StaticResource Style_Button_Primary}"/>
|
<Label Text="{Binding State, Converter={StaticResource MachineStateStringConverter}}" TextColor="{Binding State, Converter={StaticResource MachineStateColorConverter}}" Style="{StaticResource LabelStyle_Second}"/>
|
||||||
|
<Label Text="by Me" IsVisible="{Binding IsUserAssigned}" Style="{StaticResource LabelStyle_Second}"/>
|
||||||
|
</StackLayout>
|
||||||
|
<Button Grid.Row="0" Grid.Column="3" Margin="0, 3, 0, 3" Text="➔" Command="{Binding Source={RelativeSource AncestorType={x:Type pagemodel:MachineListPageModel}}, Path=SelectInstanceCommand}" CommandParameter="{Binding .}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
|
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ContentView.Content>
|
</ContentView.Content>
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="*"/>
|
||||||
<RowDefinition Height="1"/>
|
<RowDefinition Height="1"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Address, StringFormat='{0}'}" Style="{StaticResource LabelStyle_Primary}"/>
|
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Address, StringFormat='{0}'}" Style="{StaticResource LabelStyle_Primary}" VerticalOptions="Center"/>
|
||||||
<Label Grid.Row="0" Grid.Column="2" Text="{Binding Username}" Style="{StaticResource LabelStyle_Second}" HorizontalTextAlignment="End" />
|
<Label Grid.Row="0" Grid.Column="2" Text="{Binding Username}" Style="{StaticResource LabelStyle_Second}" HorizontalTextAlignment="End" VerticalOptions="Center"/>
|
||||||
<Button Grid.Row="0" Grid.Column="3" Margin="0, 3, 0, 3" Text="->" Command="{Binding Source={RelativeSource AncestorType={x:Type pagemodel:ServerListPageModel}}, Path=SelectInstanceCommand}" CommandParameter="{Binding .}" Style="{StaticResource Style_Button_Primary}"/>
|
<Button Grid.Row="0" Grid.Column="3" Margin="0, 3, 0, 3" Text="➔" Command="{Binding Source={RelativeSource AncestorType={x:Type pagemodel:ServerListPageModel}}, Path=SelectInstanceCommand}" CommandParameter="{Binding .}" Style="{StaticResource Style_Button_Primary}" VerticalOptions="Center"/>
|
||||||
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
|
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ContentView.Content>
|
</ContentView.Content>
|
||||||
|
@ -33,5 +33,12 @@ namespace Borepin.ViewModel
|
|||||||
get => _State;
|
get => _State;
|
||||||
set => SetProperty(ref _State, value);
|
set => SetProperty(ref _State, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _IsUserAssigned = false;
|
||||||
|
public bool IsUserAssigned
|
||||||
|
{
|
||||||
|
get => _IsUserAssigned;
|
||||||
|
set => SetProperty(ref _IsUserAssigned, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using Borepin.Model;
|
using Borepin.Model;
|
||||||
using Prism.Mvvm;
|
using Prism.Mvvm;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Borepin.ViewModel
|
namespace Borepin.ViewModel
|
||||||
{
|
{
|
||||||
@ -32,8 +31,5 @@ namespace Borepin.ViewModel
|
|||||||
set => SetProperty(ref _Username, value);
|
set => SetProperty(ref _Username, value);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user