Added: MachineListPage

This commit is contained in:
TheJoKlLa 2021-02-09 15:25:22 +01:00
parent 9bee54f312
commit 6b38fc9d89
19 changed files with 339 additions and 362 deletions

View File

@ -50,9 +50,9 @@ namespace Borepin
// Register Navigation
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage, MainPagePageModel>();
containerRegistry.RegisterForNavigation<MachinesPage, MachinesPageModel>();
containerRegistry.RegisterForNavigation<SettingsPage>();
containerRegistry.RegisterForNavigation<MachinePage, MachinePageModel>();
containerRegistry.RegisterForNavigation<SettingsPage>();
containerRegistry.RegisterForNavigation<MachineListPage, MachineListPageModel>();
containerRegistry.RegisterForNavigation<LoginPasswordPage, LoginPasswordPageModel>();
containerRegistry.RegisterForNavigation<HostSelectPage, HostSelectPageModel>();
containerRegistry.RegisterForNavigation<LoginChoosePage, LoginChoosePageModel>();

View File

@ -28,8 +28,8 @@
<PackageReference Include="Xamarin.Forms.EntryAutoComplete" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<Compile Update="Page\MachinesPage.xaml.cs">
<DependentUpon>MachinesPage.xaml</DependentUpon>
<Compile Update="Page\MachineListPage.xaml.cs">
<DependentUpon>MachineListPage.xaml</DependentUpon>
</Compile>
<Compile Update="Page\SettingsPage.xaml.cs">
<DependentUpon>SettingsPage.xaml</DependentUpon>
@ -47,6 +47,9 @@
<Compile Update="Styles\LightTheme.xaml.cs">
<DependentUpon>LightTheme.xaml</DependentUpon>
</Compile>
<Compile Update="View\MachineListItemView.xaml.cs">
<DependentUpon>MachineListItemView.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Dialog\ConfirmDialog.xaml">
@ -67,9 +70,6 @@
<EmbeddedResource Update="Page\MachinePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Page\MachinesPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Page\MainPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>

View File

@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Borepin.Model;
using Xamarin.Forms;
namespace Borepin.Converter
@ -11,9 +8,9 @@ namespace Borepin.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
switch((MachineStates)value)
switch((FabAccessAPI.Schema.State)value)
{
case (MachineStates.Free):
case (FabAccessAPI.Schema.State.free):
return (Color)Application.Current.Resources["FirstColor"];
default:
return (Color)Application.Current.Resources["SixthColor"];

View File

@ -0,0 +1,35 @@
using System;
using System.Globalization;
using Xamarin.Forms;
namespace Borepin.Converter
{
public class MachineStateStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
switch((FabAccessAPI.Schema.State)value)
{
case (FabAccessAPI.Schema.State.free):
return "Free";
case (FabAccessAPI.Schema.State.inUse):
return "In Use";
case (FabAccessAPI.Schema.State.toCheck):
return "To Check";
case (FabAccessAPI.Schema.State.reserved):
return "Reserved";
case (FabAccessAPI.Schema.State.blocked):
return "Blocked";
case (FabAccessAPI.Schema.State.disabled):
return "Disabled";
default:
return "Unknown";
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -1,54 +1,8 @@
using Prism.Mvvm;
namespace Borepin.Model
namespace Borepin.Model
{
public enum MachineStates
public class Machine
{
Free,
InUse,
ToCheck,
Blocked,
Disabled,
Reserved
}
public class Machine : BindableBase
{
private string _ID;
public string ID
{
get => _ID;
set => SetProperty(ref _ID, value);
}
private MachineStates _State;
public MachineStates State
{
get => _State;
set => SetProperty(ref _State, value);
}
private string _Description;
public string Description
{
get => _Description;
set => SetProperty(ref _Description, value);
}
private User _User;
public User User
{
get => _User;
set => SetProperty(ref _User, value);
}
}
public class User
{
public string ID { get; set; }
public string Name { get; set; }
public string OriginalWorkshop { get; set; }
public FabAccessAPI.Machine Instance { get; set; }
public FabAccessAPI.Schema.Machine.MInfo MInfo { get; set; }
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:Borepin.View"
x:Class="Borepin.Page.MachineListPage">
<NavigationPage.TitleView>
<Label Text="Machines" HorizontalOptions="End" Margin="0, 0, 10, 0" VerticalOptions="CenterAndExpand" FontSize="Medium" TextColor="{StaticResource FirstColor}"/>
</NavigationPage.TitleView>
<ContentPage.Content>
<StackLayout>
<ListView ItemsSource="{Binding MachineListItemViewModel_List}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<views:MachineListItemView />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>

View File

@ -10,9 +10,9 @@ using Xamarin.Forms.Xaml;
namespace Borepin.Page
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MachinesPage : ContentPage
public partial class MachineListPage : ContentPage
{
public MachinesPage()
public MachineListPage()
{
InitializeComponent();
}

View File

@ -14,23 +14,10 @@
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="20">
<Label Text="{Binding Machine.ID}" Style="{StaticResource LabelStyle_Title}"/>
<Label Text="Current User" IsVisible="{Binding Machine.User, Converter={StaticResource IsNotNullBoolConverter}}" Style="{StaticResource LabelStyle_PropertyTitle}"></Label>
<Label Text="{Binding Machine.User.Name}" IsVisible="{Binding Machine.User, Converter={StaticResource IsNotNullBoolConverter}}" Style="{StaticResource LabelStyle_PropertyText}"/>
<Label Text="Description" Style="{StaticResource LabelStyle_PropertyTitle}"></Label>
<Label Text="{Binding Machine.Description}" Style="{StaticResource LabelStyle_PropertyText}"/>
<Button Text="Reserve" Command="{Binding ReserveMachineCommand}" IsVisible="{Binding CanReserve}" Style="{StaticResource ButtonStyle_Primary}"/>
<Label Text="{Binding Name}" Style="{StaticResource LabelStyle_Title}"/>
<Button Text="Use" Command="{Binding UseMachineCommand}" IsVisible="{Binding CanUse}" Style="{StaticResource ButtonStyle_Primary}"/>
<Button Text="GiveBack" Command="{Binding GiveBackMachineCommand}" IsVisible="{Binding CanGiveBack}" Style="{StaticResource ButtonStyle_Primary}"/>
<Grid>
<Button Grid.Column="0" Text="Disable" Command="{Binding DisableMachineCommand}" IsVisible="{Binding IsAdmin}" Style="{StaticResource ButtonStyle_Admin}"/>
<Button Grid.Column="1" Text="Block" Command="{Binding BlockMachineCommand}" IsVisible="{Binding IsAdmin}" Style="{StaticResource ButtonStyle_Admin}"/>
</Grid>
</StackLayout>
</ContentPage.Content>
</ContentPage>

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Borepin.Page.MachinesPage"
xmlns:converters="clr-namespace:Borepin.Converter">
<NavigationPage.TitleView>
<Label Text="Machines" HorizontalOptions="End" Margin="0, 0, 10, 0" VerticalOptions="CenterAndExpand" FontSize="Medium" TextColor="{StaticResource FirstColor}"/>
</NavigationPage.TitleView>
<ContentPage.Resources>
<ResourceDictionary>
<converters:MachineStateColorConverter x:Key="MachineStateColorConverter"/>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0, 10, 0, 10">
<ListView x:Name="MachineList" ItemsSource="{Binding MachineList}" SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid RowSpacing="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5" />
<ColumnDefinition Width="7*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="1"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding ID, StringFormat='{0}'}" Style="{StaticResource LabelStyle_Primary}"/>
<Label Grid.Row="0" Grid.Column="2" Text="{Binding State, StringFormat='{0}'}" Style="{StaticResource LabelStyle_Second}" HorizontalTextAlignment="End" TextColor="{Binding State, Converter={StaticResource MachineStateColorConverter}}" />
<Button Grid.Row="0" Grid.Column="3" Margin="0, 3, 0, 3" Text="->" Command="{Binding BindingContext.GoToMachineCommand, Source={x:Reference MachineList}}" CommandParameter="{Binding .}" Style="{StaticResource ButtonStyle_Primary}"/>
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>

View File

@ -7,7 +7,7 @@
<MasterDetailPage.Master>
<ContentPage Title="FabAccess">
<StackLayout>
<Button Text="Machines" Command="{Binding NavigateCommand}" CommandParameter="MachinesPage" />
<Button Text="Machines" Command="{Binding NavigateCommand}" CommandParameter="MachineListPage" />
<Button Text="Settings" Command="{Binding NavigateCommand}" CommandParameter="SettingsPage" />
<Button Text="Servers" Command="{Binding NavigateCommand}" CommandParameter="ServerListPage" />
</StackLayout>

View File

@ -0,0 +1,102 @@
using Borepin.ViewModel;
using Prism.Mvvm;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Input;
using Prism.Commands;
using Prism.Navigation;
using Borepin.Service.Connections;
using Borepin.Service.BFFH;
using Borepin.Model;
namespace Borepin.PageModel
{
public class MachineListPageModel : BindableBase, INavigationAware
{
private readonly INavigationService _NavigationService;
private readonly IConnectionService _ConnectionService;
private readonly IBFFHService _BFFHService;
public MachineListPageModel(INavigationService navigationService, IConnectionService connectionService, IBFFHService bffhService)
{
_NavigationService = navigationService;
_ConnectionService = connectionService;
_BFFHService = bffhService;
SelectInstanceCommand = new DelegateCommand<object>(SelectInstanceCommandExecuted);
}
private async Task<bool> LoadData()
{
if(_BFFHService.ActiveConnection == null)
{
return await Task.FromResult(true);
}
FabAccessAPI.Machines machineInterface = await _BFFHService.GetMachineInterface();
List<Machine> list = new List<Machine>();
IReadOnlyList<FabAccessAPI.Machine> machine_list = await machineInterface.ListMachines();
foreach(FabAccessAPI.Machine machine in machine_list)
{
list.Add(new Machine() { Instance = machine, MInfo = await machine.GetMInfo() });
}
List<MachineListItemViewModel> viewmodel_list = new List<MachineListItemViewModel>();
foreach(Machine machine in list)
{
viewmodel_list.Add(new MachineListItemViewModel(machine));
}
MachineListItemViewModel_List = viewmodel_list;
return await Task.FromResult(true);
}
#region Properties
private List<MachineListItemViewModel> _MachineListItemViewModel_List;
public List<MachineListItemViewModel> MachineListItemViewModel_List
{
get => _MachineListItemViewModel_List;
set => SetProperty(ref _MachineListItemViewModel_List, value);
}
#endregion
#region Commands
private ICommand _SelectInstanceCommand;
public ICommand SelectInstanceCommand
{
get => _SelectInstanceCommand;
set => SetProperty(ref _SelectInstanceCommand, value);
}
private async void SelectInstanceCommandExecuted(object obj)
{
MachineListItemViewModel viewmodel = obj as MachineListItemViewModel;
NavigationParameters parameters = new NavigationParameters
{
{ "instance", viewmodel.Instance }
};
INavigationResult result = await _NavigationService.NavigateAsync($"MachinePage", parameters);
if (!result.Success)
{
System.Diagnostics.Debugger.Break();
}
}
#endregion
#region INavigationAware
public void OnNavigatedFrom(INavigationParameters parameters)
{
}
public void OnNavigatedTo(INavigationParameters parameters)
{
Task.Run(LoadData);
}
#endregion
}
}

View File

@ -1,57 +1,67 @@
using Borepin.Model;
using Borepin.Service.BFFH;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Navigation;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
using static FabAccessAPI.Schema.Machine.WriteInterface;
namespace Borepin.PageModel
{
public class MachinePageModel : BindableBase, INavigationAware
{
private readonly INavigationService _NavigationService;
private readonly IBFFHService _BFFHService;
public MachinePageModel(INavigationService navigationService, IBFFHService bffhService)
public MachinePageModel(INavigationService navigationService)
{
_NavigationService = navigationService;
_BFFHService = bffhService;
ReserveMachineCommand = new Command(ReserveMachineCommandExecuted);
UseMachineCommand = new Command(UseMachineCommandExecuted);
GiveBackMachineCommand = new Command(GiveBackMachineCommandExecuted);
BlockMachineCommand = new Command(BlockMachineCommandExecuted);
DisableMachineCommand = new Command(DisableMachineCommandExecuted);
UseMachineCommand = new DelegateCommand(UseMachineCommandExecuted);
GiveBackMachineCommand = new DelegateCommand(GiveBackMachineCommandExecuted);
}
private Machine _Machine;
public Machine Machine
#region Properties
private Machine _MachineItem;
public Machine MachineItem
{
get => _Machine;
set => SetProperty(ref _Machine, value);
get => _MachineItem;
set => SetProperty(ref _MachineItem, value);
}
private bool _IsValid = false;
public bool IsValid
private string _Name;
public string Name
{
get => _IsValid;
set => SetProperty(ref _IsValid, value);
get => _Name;
set => SetProperty(ref _Name, value);
}
private ICommand _ReserveMachineCommand;
public ICommand ReserveMachineCommand
private IGiveBack _GiveBack;
//public IGiveBack GiveBack
//{
// get => _GiveBack;
// set => SetProperty(ref _GiveBack, value);
//}
private bool _CanUse;
public bool CanUse
{
get => _ReserveMachineCommand;
set => SetProperty(ref _ReserveMachineCommand, value);
get => _CanUse;
set => SetProperty(ref _CanUse, value);
}
private void ReserveMachineCommandExecuted()
private bool _CanGiveBack;
public bool CanGiveBack
{
//_BFFHInterface.ReserveMachine(Machine.ID);
//UpdateMachine();
get => _CanGiveBack;
set => SetProperty(ref _CanGiveBack, value);
}
#endregion
#region Commands
private ICommand _UseMachineCommand;
public ICommand UseMachineCommand
{
@ -59,10 +69,14 @@ namespace Borepin.PageModel
set => SetProperty(ref _UseMachineCommand, value);
}
private void UseMachineCommandExecuted()
private async void UseMachineCommandExecuted()
{
//_BFFHInterface.UseMachine(Machine.ID);
//UpdateMachine();
_GiveBack = await MachineItem.Instance.Use();
CanGiveBack = _GiveBack != null;
MachineItem.MInfo = await MachineItem.Instance.GetMInfo();
CanUse = MachineItem.MInfo.State == FabAccessAPI.Schema.State.free;
}
private ICommand _GiveBackMachineCommand;
@ -72,147 +86,21 @@ namespace Borepin.PageModel
set => SetProperty(ref _GiveBackMachineCommand, value);
}
private void GiveBackMachineCommandExecuted()
private async void GiveBackMachineCommandExecuted()
{
//_BFFHInterface.GiveBackMachine(Machine.ID);
//UpdateMachine();
await _GiveBack.Ret();
_GiveBack = null;
CanGiveBack = _GiveBack != null;
MachineItem.MInfo = await MachineItem.Instance.GetMInfo();
CanUse = MachineItem.MInfo.State == FabAccessAPI.Schema.State.free;
}
private ICommand _DisableMachineCommand;
public ICommand DisableMachineCommand
{
get => _DisableMachineCommand;
set => SetProperty(ref _DisableMachineCommand, value);
}
private void DisableMachineCommandExecuted()
{
//if(Machine.State == MachineStates.Disabled)
//{
// _BFFHInterface.SetStateForce(Machine.ID, MachineStates.Free);
//}
//else
//{
// _BFFHInterface.SetStateForce(Machine.ID, MachineStates.Disabled);
//}
//UpdateMachine();
}
private ICommand _BlockMachineCommand;
public ICommand BlockMachineCommand
{
get => _BlockMachineCommand;
set => SetProperty(ref _BlockMachineCommand, value);
}
private void BlockMachineCommandExecuted()
{
//if (Machine.State == MachineStates.Blocked)
//{
// _BFFHInterface.SetStateForce(Machine.ID, MachineStates.Free);
//}
//else
//{
// _BFFHInterface.SetStateForce(Machine.ID, MachineStates.Blocked);
//}
//UpdateMachine();
}
public bool CanUse
{
get
{
//if(Machine == null)
//{
// return false;
//}
//if(Machine.State == MachineStates.Free)
//{
// return true;
//}
//if(Machine.State == MachineStates.Reserved)
//{
// if(Machine.User == _BFFHInterface.ActiveUser)
// {
// return true;
// }
// else if(_BFFHInterface.IsAdmin())
// {
// return true;
// }
//}
return false;
}
}
public bool CanReserve
{
get
{
//if (Machine == null)
//{
// return false;
//}
//if (Machine.State == MachineStates.Free)
//{
// return true;
//}
return false;
}
}
public bool CanGiveBack
{
get
{
//if (Machine == null)
//{
// return false;
//}
//if (Machine.State == MachineStates.InUse && Machine.User == _BFFHInterface.ActiveUser)
//{
// return true;
//}
return false;
}
}
public bool IsAdmin
{
get
{
//if (_BFFHInterface == null)
//{
// return false;
//}
//if (_BFFHInterface.IsAdmin())
//{
// return true;
//}
return false;
}
}
public void UpdateMachine()
{
//Machine = BFFHService_OLD.GetMachine(Machine.ID);
//OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("CanUse"));
//OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("CanReserve"));
//OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("CanGiveBack"));
}
#endregion
#region INavigationAware
public void OnNavigatedFrom(INavigationParameters parameters)
{
@ -220,25 +108,13 @@ namespace Borepin.PageModel
public void OnNavigatedTo(INavigationParameters parameters)
{
//string machineID = parameters["machineID"] as string;
MachineItem = parameters["instance"] as Machine;
Name = MachineItem.MInfo.Name;
//if(machineID == null)
//{
// _IsValid = false;
// return;
//}
//try
//{
// Machine = BFFHService_OLD.GetMachine(machineID);
// IsValid = true;
// UpdateMachine();
//}
//catch
//{
// _IsValid = false;
//}
CanUse = MachineItem.MInfo.State == FabAccessAPI.Schema.State.free;
CanGiveBack = _GiveBack != null;
}
#endregion
}
}

View File

@ -1,50 +0,0 @@
using Borepin.Model;
using Prism.Mvvm;
using Prism.Navigation;
using System.Collections.ObjectModel;
using System.Windows.Input;
using Xamarin.Forms;
namespace Borepin.PageModel
{
public class MachinesPageModel : BindableBase
{
private readonly INavigationService _NavigationService;
public MachinesPageModel(INavigationService navigationService)
{
_NavigationService = navigationService;
GoToMachineCommand = new Command<object>(GoToMachineCommandExecuted);
}
private ICommand _GoToMachineCommand;
public ICommand GoToMachineCommand
{
get => _GoToMachineCommand;
set => SetProperty(ref _GoToMachineCommand, value);
}
private async void GoToMachineCommandExecuted(object obj)
{
Machine machine = obj as Machine;
NavigationParameters navigationParams = new NavigationParameters
{
{ "machineID", machine.ID }
};
INavigationResult result = await _NavigationService.NavigateAsync($"MachinePage", navigationParams);
if (!result.Success)
{
System.Diagnostics.Debugger.Break();
}
}
private ObservableCollection<Machine> _MachineList;
public ObservableCollection<Machine> MachineList
{
get => _MachineList;
set => SetProperty(ref _MachineList, value);
}
}
}

View File

@ -77,5 +77,10 @@ namespace Borepin.Service.BFFH
return await Task.FromResult(true);
}
public Task<FabAccessAPI.Machines> GetMachineInterface()
{
return _Connection.AccessMachines();
}
}
}

View File

@ -45,5 +45,7 @@ namespace Borepin.Service.BFFH
/// </summary>
/// <param name="connection">address + username</param>
Task<bool> Authenticate(Connection connection, string password);
Task<FabAccessAPI.Machines> GetMachineInterface();
}
}

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Borepin.View.MachineListItemView"
xmlns:pagemodel="clr-namespace:Borepin.PageModel"
xmlns:converters="clr-namespace:Borepin.Converter">
<ContentView.Resources>
<ResourceDictionary>
<converters:MachineStateColorConverter x:Key="MachineStateColorConverter"/>
<converters:MachineStateStringConverter x:Key="MachineStateStringConverter"/>
</ResourceDictionary>
</ContentView.Resources>
<ContentView.Content>
<Grid RowSpacing="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5" />
<ColumnDefinition Width="7*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="1"/>
</Grid.RowDefinitions>
<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" />
<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 ButtonStyle_Primary}"/>
<BoxView Grid.Row="1" Grid.ColumnSpan="5" BackgroundColor="{StaticResource FifthColor}"/>
</Grid>
</ContentView.Content>
</ContentView>

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Borepin.View
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MachineListItemView : ContentView
{
public MachineListItemView()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,28 @@
using Borepin.Model;
using Prism.Mvvm;
namespace Borepin.ViewModel
{
public class ServerListItemViewModel : BindableBase
{
public ServerListItemViewModel(Connection instance)
{
_Instance = instance;
Address = instance.Address.ToString();
}
private Connection _Instance;
public Connection Instance
{
get => _Instance;
set => SetProperty(ref _Instance, value);
}
private string _Address;
public string Address
{
get => _Address;
set => SetProperty(ref _Address, value);
}
}
}

View File

@ -1,28 +1,38 @@
using Borepin.Model;
using FabAccessAPI;
using Prism.Mvvm;
namespace Borepin.ViewModel
{
public class ServerListItemViewModel : BindableBase
public class MachineListItemViewModel : BindableBase
{
public ServerListItemViewModel(Connection instance)
public MachineListItemViewModel(Model.Machine instance)
{
_Instance = instance;
Address = instance.Address.ToString();
Name = instance.MInfo.Name;
State = instance.MInfo.State;
}
private Connection _Instance;
public Connection Instance
private Model.Machine _Instance;
public Model.Machine Instance
{
get => _Instance;
set => SetProperty(ref _Instance, value);
}
private string _Address;
public string Address
private string _Name;
public string Name
{
get => _Address;
set => SetProperty(ref _Address, value);
get => _Name;
set => SetProperty(ref _Name, value);
}
private FabAccessAPI.Schema.State _State;
public FabAccessAPI.Schema.State State
{
get => _State;
set => SetProperty(ref _State, value);
}
}
}