mirror of
https://github.com/jwetzell/QControlKit.git
synced 2026-07-26 10:38:54 +00:00
add in status/data and connection event
This commit is contained in:
@@ -289,6 +289,17 @@
|
||||
public const string Error = "error";
|
||||
}
|
||||
|
||||
public static class QConnectionRole
|
||||
{
|
||||
public const string View = "view";
|
||||
public const string ViewEdit = "view|edit";
|
||||
public const string ViewEditControl = "view|edit|control";
|
||||
public const string ViewControl = "view|control";
|
||||
public const string EditControl = "edit|control";
|
||||
public const string Edit = "edit";
|
||||
public const string Control = "control";
|
||||
}
|
||||
|
||||
public static class QColorName
|
||||
{
|
||||
public const string Red = "red";
|
||||
|
||||
@@ -48,7 +48,8 @@ namespace QControlKit.Events
|
||||
|
||||
public class QWorkspaceConnectedArgs : EventArgs
|
||||
{
|
||||
|
||||
public string status { get; set; }
|
||||
public string data { get; set; }
|
||||
}
|
||||
|
||||
public class QWorkspaceDisconnectedArgs : EventArgs
|
||||
@@ -59,6 +60,7 @@ namespace QControlKit.Events
|
||||
public class QWorkspaceConnectionErrorArgs : EventArgs
|
||||
{
|
||||
public string status { get; set; }
|
||||
public string data { get; set; }
|
||||
}
|
||||
public class QQLabPreferencesUpdatedArgs : EventArgs
|
||||
{
|
||||
|
||||
+13
-11
@@ -75,7 +75,7 @@ namespace QControlKit
|
||||
|
||||
if (message.IsReply)
|
||||
{
|
||||
JToken data = message.response;
|
||||
JToken data = message.data;
|
||||
|
||||
//special case, want to update cue properties
|
||||
if (message.IsReplyFromCue)
|
||||
@@ -101,13 +101,13 @@ namespace QControlKit
|
||||
}
|
||||
else
|
||||
{
|
||||
_log.Error($"unhandled reply from cue: Type: {data.Type} value: {message.response}");
|
||||
_log.Error($"unhandled reply from cue: Type: {data.Type} value: {message.data}");
|
||||
}
|
||||
|
||||
}
|
||||
else if (message.IsReplyFromCueLists)
|
||||
{
|
||||
OnCueListsUpdated(message.response);
|
||||
OnCueListsUpdated(message.data);
|
||||
}
|
||||
else if (message.IsWorkspacesInfo)
|
||||
{
|
||||
@@ -115,10 +115,12 @@ namespace QControlKit
|
||||
}
|
||||
else if (message.IsConnect)
|
||||
{
|
||||
if (message.response.ToString().Contains("ok"))
|
||||
OnWorkspaceConnected();
|
||||
_log.Verbose(message.data.ToString());
|
||||
_log.Verbose("Status:" + message.status.ToString());
|
||||
if (message.status.ToString().Equals("ok"))
|
||||
OnWorkspaceConnected(message.status.ToString(),message.data.ToString());
|
||||
else
|
||||
OnWorkspaceConnectionError(message.response.ToString());
|
||||
OnWorkspaceConnectionError(message.status.ToString(), message.data.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -227,14 +229,14 @@ namespace QControlKit
|
||||
WorkspaceDisconnected?.Invoke(this, new QWorkspaceDisconnectedArgs());
|
||||
}
|
||||
|
||||
protected virtual void OnWorkspaceConnected()
|
||||
protected virtual void OnWorkspaceConnected(string status, string data)
|
||||
{
|
||||
WorkspaceConnected?.Invoke(this, new QWorkspaceConnectedArgs());
|
||||
WorkspaceConnected?.Invoke(this, new QWorkspaceConnectedArgs { status = status, data = data });
|
||||
}
|
||||
|
||||
protected virtual void OnWorkspaceConnectionError(string status)
|
||||
protected virtual void OnWorkspaceConnectionError(string status, string data)
|
||||
{
|
||||
WorkspaceConnectionError?.Invoke(this, new QWorkspaceConnectionErrorArgs { status = status });
|
||||
WorkspaceConnectionError?.Invoke(this, new QWorkspaceConnectionErrorArgs { status = status, data = data });
|
||||
}
|
||||
|
||||
protected virtual void OnWorkspacesUpdated(QMessage message)
|
||||
@@ -242,7 +244,7 @@ namespace QControlKit
|
||||
if(WorkspacesUpdated != null)
|
||||
{
|
||||
List<QWorkspaceInfo> workspaces = new List<QWorkspaceInfo>();
|
||||
foreach (var item in message.response)
|
||||
foreach (var item in message.data)
|
||||
{
|
||||
QWorkspaceInfo workspacefound = JsonConvert.DeserializeObject<QWorkspaceInfo>(item.ToString());
|
||||
workspaces.Add(workspacefound);
|
||||
|
||||
+16
-3
@@ -141,12 +141,25 @@ namespace QControlKit
|
||||
|
||||
public string[] AddressParts { get { return address.Split(new char[] { '/' },StringSplitOptions.RemoveEmptyEntries); } }
|
||||
|
||||
public JToken response
|
||||
public JToken data
|
||||
{
|
||||
get
|
||||
{
|
||||
JObject responseObj = JObject.Parse((string)arguments[0]);
|
||||
return responseObj["data"];
|
||||
JObject dataObj = JObject.Parse((string)arguments[0]);
|
||||
return dataObj["data"];
|
||||
}
|
||||
}
|
||||
|
||||
public JToken status
|
||||
{
|
||||
get
|
||||
{
|
||||
if (arguments != null && arguments.Count > 0)
|
||||
{
|
||||
JObject statusObj = JObject.Parse((string)arguments[0]);
|
||||
return statusObj["status"];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -160,6 +160,8 @@ namespace QControlKit
|
||||
|
||||
public string[] versionParts { get { return version.Split('.'); } }
|
||||
public bool connectedToQLab3 { get { return versionParts[0] == "3"; } }
|
||||
public bool connectedToQLab4 { get { return versionParts[0] == "4"; } }
|
||||
public bool connectedToQLab5 { get { return versionParts[0] == "5"; } }
|
||||
|
||||
#region Connection/reconnection
|
||||
|
||||
@@ -170,14 +172,14 @@ namespace QControlKit
|
||||
if(hasPasscode && passcode == null)
|
||||
{
|
||||
_log.Error($"*** workspace <{name}> requires a passcode but none was supplied.");
|
||||
OnWorkspaceConnectionError(this, new QWorkspaceConnectionErrorArgs { status = QConnectionStatus.BadPass });
|
||||
OnWorkspaceConnectionError(this, new QWorkspaceConnectionErrorArgs { status = QConnectionStatus.BadPass, data = "badpass" });
|
||||
return;
|
||||
}
|
||||
|
||||
if (!client.connect())
|
||||
{
|
||||
_log.Error($"*** couldn't connect to server client is not connected.");
|
||||
OnWorkspaceConnectionError(this, new QWorkspaceConnectionErrorArgs { status = QConnectionStatus.Error });
|
||||
OnWorkspaceConnectionError(this, new QWorkspaceConnectionErrorArgs { status = QConnectionStatus.Error, data = "error" });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -425,13 +427,13 @@ namespace QControlKit
|
||||
_log.Error($"*** Unable to connect to workspace: <{name}> on server: <{server.name}>");
|
||||
}
|
||||
|
||||
WorkspaceConnectionError?.Invoke(this, new QWorkspaceConnectionErrorArgs { status = args.status });
|
||||
WorkspaceConnectionError?.Invoke(this, args);
|
||||
}
|
||||
|
||||
private void OnWorkspaceConnected(object source, QWorkspaceConnectedArgs args)
|
||||
{
|
||||
_log.Information($"Connection to <{name}> successful, finishing things up.");
|
||||
WorkspaceConnected?.Invoke(this, new QWorkspaceConnectedArgs());
|
||||
WorkspaceConnected?.Invoke(this, args);
|
||||
finishConnection();
|
||||
}
|
||||
|
||||
|
||||
@@ -21,25 +21,44 @@ namespace QControlKitXamDemo
|
||||
connectedWorkspace = workspace;
|
||||
connectedWorkspace.WorkspaceUpdated += Workspace_WorkspaceUpdated;
|
||||
connectedWorkspace.WorkspaceConnectionError += ConnectedWorkspace_WorkspaceConnectionError;
|
||||
connectedWorkspace.WorkspaceConnected += ConnectedWorkspace_WorkspaceConnected; ;
|
||||
connectedWorkspace.connect(passcode);
|
||||
connectedWorkspace.defaultSendUpdatesOSC = true;
|
||||
connectedWorkspace.CueListChangedPlaybackPosition += ConnectedWorkspace_CueListChangedPlaybackPosition;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnDisappearing()
|
||||
{
|
||||
base.OnDisappearing();
|
||||
connectedWorkspace.disconnect();
|
||||
connectedWorkspace.WorkspaceUpdated -= Workspace_WorkspaceUpdated;
|
||||
connectedWorkspace.WorkspaceConnectionError -= ConnectedWorkspace_WorkspaceConnectionError;
|
||||
connectedWorkspace.WorkspaceConnected -= ConnectedWorkspace_WorkspaceConnected;
|
||||
connectedWorkspace.CueListChangedPlaybackPosition -= ConnectedWorkspace_CueListChangedPlaybackPosition;
|
||||
}
|
||||
|
||||
private async void ConnectedWorkspace_WorkspaceConnected(object source, QWorkspaceConnectedArgs args)
|
||||
{
|
||||
if (args.status.Equals("ok") && connectedWorkspace.connectedToQLab5)
|
||||
{
|
||||
if (!args.data.Contains(QConnectionRole.View))
|
||||
{
|
||||
string passcode = await DisplayPromptAsync("PIN does not have view permissions.", "Try Again", maxLength: 4, keyboard: Keyboard.Numeric);
|
||||
if (passcode != null)
|
||||
{
|
||||
connectedWorkspace.connect(passcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void ConnectedWorkspace_WorkspaceConnectionError(object source, QWorkspaceConnectionErrorArgs args)
|
||||
{
|
||||
if (args.status.Equals("badpass"))
|
||||
{
|
||||
string passcode = await DisplayPromptAsync("Passcode was incorrect.", "Try Again", maxLength: 4, keyboard: Keyboard.Numeric);
|
||||
string passcode = await DisplayPromptAsync("PIN is incorrect.", "Try Again", maxLength: 4, keyboard: Keyboard.Numeric);
|
||||
if (passcode != null)
|
||||
{
|
||||
connectedWorkspace.connect(passcode);
|
||||
|
||||
Reference in New Issue
Block a user