Begin work on QBrowserPage

This commit is contained in:
Joel Wetzell
2020-06-21 09:02:00 -05:00
parent 7d9f725029
commit 2afec2bc7e
16 changed files with 5504 additions and 46 deletions
@@ -0,0 +1,34 @@
using QSharp;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace qController.ViewModels
{
public class QBrowserViewModel : INotifyPropertyChanged
{
QBrowser browser;
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<QServerViewModel> ServersGrouped { get; set; }
public QBrowserViewModel(QBrowser browser)
{
this.browser = browser;
ServersGrouped = new ObservableCollection<QServerViewModel>();
this.browser.ServerFound += OnServerFound;
}
private void OnServerFound(object source, QServerFoundArgs args)
{
ServersGrouped.Add(new QServerViewModel(args.server));
}
void OnPropertyChanged([CallerMemberName] string name = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
}
@@ -0,0 +1,43 @@
using qController.Pages;
using QSharp;
using System.Collections.ObjectModel;
namespace qController.ViewModels
{
public class QServerViewModel : ObservableCollection<QWorkspaceViewModel>
{
QServer server;
public string name
{
get
{
return server.name;
}
set
{
server.name = value;
}
}
public QServerViewModel(QServer server)
{
this.server = server;
name = this.server.name;
foreach (var workspace in this.server.workspaces)
{
this.Add(new QWorkspaceViewModel(workspace));
}
this.server.ServerUpdated += OnServerUpdated;
}
private void OnServerUpdated(object source, QServerUpdatedArgs args)
{
foreach (var workspace in this.server.workspaces)
{
QWorkspaceViewModel workspaceViewModel = new QWorkspaceViewModel(workspace);
if (!Contains(workspaceViewModel))
Add(workspaceViewModel);
}
}
}
}
@@ -0,0 +1,40 @@
using qController.QItems;
using System;
using System.Collections.Generic;
using System.Text;
using QSharp;
namespace qController.ViewModels
{
public class QWorkspaceViewModel
{
public QWorkspace workspace;
public QWorkspaceViewModel(QWorkspace workspace)
{
this.workspace = workspace;
}
public string Name
{
get
{
return workspace.name;
}
set
{
}
}
public bool HasPasscode
{
get
{
return workspace.hasPasscode;
}
set
{
}
}
}
}