mirror of
https://github.com/jwetzell/QControlKit.git
synced 2026-08-16 12:53:29 +00:00
* QControlKit.csproj:
* MainPage.xaml.cs: * AppDelegate.cs: * QControlKitXamDemo.csproj: * QCueViewModel.cs: * QControlKitXamDemo.iOS.csproj: * QControlKitXamDemo.Android.csproj: Update Packages * QServer.cs: * QBrowser.cs: * QWorkspace.cs: * QEventArgs.cs: * QEventHandlers.cs: Refine Server Found/Lost and Workspace Added/Removed
This commit is contained in:
@@ -4,8 +4,9 @@ using Xamarin.Forms;
|
||||
using QControlKit;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Linq;
|
||||
using QControlKit.Events;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace QControlKitXamDemo
|
||||
{
|
||||
@@ -20,9 +21,91 @@ namespace QControlKitXamDemo
|
||||
InitializeComponent();
|
||||
serverListView.ItemsSource = servers;
|
||||
QBrowser browser = new QBrowser();
|
||||
browser.ServerUpdatedWorkspaces += Browser_ServerUpdatedWorkspaces;
|
||||
browser.ServerLost += Browser_ServerLost;
|
||||
browser.ServerFound += Browser_ServerFound;
|
||||
serverListView.ItemSelected += ServerListView_ItemSelected;
|
||||
|
||||
Device.StartTimer(TimeSpan.FromSeconds(5), () =>
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
browser.ProbeForQLabInstances();
|
||||
});
|
||||
return true;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void Browser_ServerFound(object source, QServerFoundArgs args)
|
||||
{
|
||||
List<ServerGroup> serverGroups = servers.ToList();
|
||||
|
||||
bool serverFound = false;
|
||||
foreach (var serverGroup in serverGroups)
|
||||
{
|
||||
|
||||
if (serverGroup.host == args.server.host)
|
||||
{
|
||||
serverFound = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!serverFound)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
ServerGroup serverGroup = new ServerGroup(args.server.name);
|
||||
args.server.WorkspaceAdded += Server_WorkspaceAdded;
|
||||
args.server.WorkspaceRemoved += Server_WorkspaceRemoved;
|
||||
serverGroup.host = args.server.host;
|
||||
servers.Add(serverGroup);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void Server_WorkspaceRemoved(object source, QServerWorkspaceChangedArgs args)
|
||||
{
|
||||
foreach (var server in servers)
|
||||
{
|
||||
if (server.host == args.server.host)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
server.Remove(args.workspace);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Server_WorkspaceAdded(object source, QServerWorkspaceChangedArgs args)
|
||||
{
|
||||
foreach(var server in servers)
|
||||
{
|
||||
if(server.host == args.server.host)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
server.Add(args.workspace);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Browser_ServerLost(object source, QServerLostArgs args)
|
||||
{
|
||||
|
||||
List<ServerGroup> serverGroups = servers.ToList();
|
||||
foreach(var serverGroup in serverGroups)
|
||||
{
|
||||
if(serverGroup.host == args.server.host)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
servers.Remove(serverGroup);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async void ServerListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
|
||||
@@ -48,26 +131,16 @@ namespace QControlKitXamDemo
|
||||
serverListView.SelectedItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void Browser_ServerUpdatedWorkspaces(object source, QServerUpdatedArgs args)
|
||||
{
|
||||
ServerGroup serverGroup = new ServerGroup(args.server.name);
|
||||
serverGroup.AddRange(args.server.workspaces);
|
||||
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
servers.Add(serverGroup);
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public class ServerGroup : List<QWorkspace>{
|
||||
public class ServerGroup : ObservableCollection<QWorkspace>{
|
||||
public string name { get; set; }
|
||||
|
||||
public string host { get; set; }
|
||||
public ServerGroup(string name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Serilog" Version="2.10.0" />
|
||||
<PackageReference Include="Xamarin.Forms" Version="4.8.0.1560" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.1874" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.6.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Xamarin.Forms;
|
||||
|
||||
using Serilog;
|
||||
using QControlKit.Events;
|
||||
using QControlKit.Constants;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace QControlKitXamDemo.ViewModels
|
||||
{
|
||||
foreach(var property in args.properties)
|
||||
{
|
||||
//Log.Debug($"[cueviewmodel] property <{property}> has been updated.");
|
||||
Log.Debug($"[cueviewmodel] property <{property}> has been updated.");
|
||||
if (property.Equals(QOSCKey.Name) || property.Equals(QOSCKey.ListName))
|
||||
{
|
||||
OnPropertyChanged("name");
|
||||
|
||||
Reference in New Issue
Block a user