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