diff --git a/iOS/Info.plist b/iOS/Info.plist
index 3038f38..0174961 100644
--- a/iOS/Info.plist
+++ b/iOS/Info.plist
@@ -36,7 +36,7 @@
XSAppIconAssets
Assets.xcassets/AppIcon.appiconset
CFBundleShortVersionString
- 2.0.5
+ 2.0.6
CFBundleVersion
1.0
ITSAppUsesNonExemptEncryption
diff --git a/qController.Standard/Classes/Cell/QInstanceCell.cs b/qController.Standard/Classes/Cell/QInstanceCell.cs
index 2104a7c..8033ac0 100644
--- a/qController.Standard/Classes/Cell/QInstanceCell.cs
+++ b/qController.Standard/Classes/Cell/QInstanceCell.cs
@@ -105,7 +105,6 @@ namespace qController
void Connect(object sender, EventArgs e)
{
- App.rootPage.MenuPage.ChangeToControl();
App.NavigationPage.Navigation.PushAsync(new ControlPage(nameLabel.Text,addressLabel.Text));
Console.WriteLine("Connect To " + nameLabel.Text + " Pressed");
diff --git a/qController.Standard/Classes/Cell/QSelectedCueOptionsCell.cs b/qController.Standard/Classes/Cell/QSelectedCueOptionsCell.cs
index 6916a85..2fa3ec5 100644
--- a/qController.Standard/Classes/Cell/QSelectedCueOptionsCell.cs
+++ b/qController.Standard/Classes/Cell/QSelectedCueOptionsCell.cs
@@ -7,37 +7,17 @@ namespace qController
{
public class QSelectedCueOptionsCell : Frame
{
- void OnCueInfoUpdated(object source, CueEventArgs args)
- {
- Device.BeginInvokeOnMainThread(() => {
- activeCue = args.Cue.uniqueID;
- if(args.Cue.levels != null)
- {
- levels = args.Cue.levels[0];
- if (mainSlider != null)
- {
- mainSlider.Value = levels[0];
- }
- if (leftSlider != null)
- {
- leftSlider.Value = levels[1];
- }
- if (rightSlider != null)
- {
- rightSlider.Value = levels[2];
- }
- }
- });
- }
- List levels;
- string activeCue;
- Slider mainSlider;
- Slider leftSlider;
- Slider rightSlider;
- public QSelectedCueOptionsCell(QController qController)
+ public List levels;
+ public string activeCue;
+ public Slider mainSlider;
+ public Slider leftSlider;
+ public Slider rightSlider;
+ public Label mainLabel;
+ public Label rightLabel;
+ public Label leftLabel;
+ public QSelectedCueOptionsCell()
{
- qController.qClient.qParser.CueInfoUpdated += OnCueInfoUpdated;
Padding = new Thickness(5);
CornerRadius = 20;
BackgroundColor = Color.FromHex("D8D8D8");
@@ -63,30 +43,21 @@ namespace qController
Minimum = -60,
Maximum = 12
};
- mainSlider.ValueChanged += (sender, args) =>
- {
- qController.qClient.sendArgs("/cue_id/" + activeCue + "/sliderLevel/0", (float)args.NewValue);
- };
+
leftSlider = new Slider
{
Minimum = -60,
Maximum = 12
};
- leftSlider.ValueChanged += (sender, args) =>
- {
- qController.qClient.sendArgs("/cue_id/" + activeCue + "/sliderLevel/1", (float)args.NewValue);
- };
+
rightSlider = new Slider
{
Minimum = -60,
Maximum = 12
};
- rightSlider.ValueChanged += (sender, args) =>
- {
- qController.qClient.sendArgs("/cue_id/" + activeCue + "/sliderLevel/2", (float)args.NewValue);
- };
+
mainG.Children.Add(mainSlider, 1, 0);
mainG.Children.Add(leftSlider, 1, 1);
mainG.Children.Add(rightSlider, 1, 2);
@@ -94,21 +65,20 @@ namespace qController
Grid.SetColumnSpan(mainSlider, 4);
Grid.SetColumnSpan(leftSlider, 4);
Grid.SetColumnSpan(rightSlider, 4);
-
- Label mainLabel = new Label {
+ mainLabel = new Label {
Text = "MAIN:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
- Label leftLabel = new Label
+ leftLabel = new Label
{
Text = "LEFT:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
- Label rightLabel = new Label
+ rightLabel = new Label
{
Text = "RIGHT:",
VerticalTextAlignment = TextAlignment.Center,
@@ -122,5 +92,22 @@ namespace qController
Content = mainG;
Margin = new Thickness(10);
}
+
+ public void UpdateLevels(List lin_levels)
+ {
+ levels = lin_levels;
+ if (mainSlider != null)
+ {
+ mainSlider.Value = levels[0];
+ }
+ if (leftSlider != null)
+ {
+ leftSlider.Value = levels[1];
+ }
+ if (rightSlider != null)
+ {
+ rightSlider.Value = levels[2];
+ }
+ }
}
}
diff --git a/qController.Standard/Classes/Communication/QClient.cs b/qController.Standard/Classes/Communication/QClient.cs
index b38085f..f9b3edb 100644
--- a/qController.Standard/Classes/Communication/QClient.cs
+++ b/qController.Standard/Classes/Communication/QClient.cs
@@ -125,17 +125,18 @@ namespace qController
}
}
- public void UpdateSpecificCue(string cue_id)
+ public void UpdateSpecificCue(string workspace_id,string cue_id)
{
string valuesForKeys = "[\"number\",\"uniqueID\",\"flagged\",\"listName\",\"type\",\"colorName\",\"name\",\"armed\",\"displayName\",\"isBroken\",\"isLoaded\",\"isPaused\",\"isRunning\",\"preWait\",\"duration\",\"postWait\",\"translationX\",\"translationY\",\"opacity\",\"scaleX\",\"scaleY\",\"notes\",\"levels\"]";
- string address = "/cue_id/" + cue_id + "/valuesForKeys";
+ string address = "/workspace/" + workspace_id + "/cue_id/" + cue_id + "/valuesForKeys";
sendAndReceiveStringArgs(address, valuesForKeys);
}
- public void UpdateSelectedCue()
+ public void UpdateSelectedCue(string workspace_id)
{
- string valuesForKeys = "[\"number\",\"uniqueID\",\"flagged\",\"listName\",\"type\",\"colorName\",\"name\",\"armed\",\"displayName\",\"isBroken\",\"isLoaded\",\"isPaused\",\"isRunning\",\"preWait\",\"duration\",\"postWait\",\"translationX\",\"translationY\",\"opacity\",\"scaleX\",\"scaleY\",\"notes\",\"levels\"]";
- sendAndReceiveStringArgs("/cue/selected/valuesForKeys", valuesForKeys);
+ string valuesForKeys = "[\"number\",\"uniqueID\",\"flagged\",\"listName\",\"type\",\"colorName\",\"name\",\"armed\",\"displayName\",\"isBroken\",\"isLoaded\",\"isPaused\",\"isRunning\",\"preWait\",\"duration\",\"postWait\",\"translationX\",\"translationY\",\"opacity\",\"scaleX\",\"scaleY\",\"notes\",\"levels\"]";
+ string address = "/workspace/" + workspace_id + "/cue/selected/valuesForKeys";
+ sendAndReceiveStringArgs(address, valuesForKeys);
}
public void UpdateWorkspace(string ws_id)
diff --git a/qController.Standard/Classes/Communication/QController.cs b/qController.Standard/Classes/Communication/QController.cs
index 4cc3d40..94eeda6 100644
--- a/qController.Standard/Classes/Communication/QController.cs
+++ b/qController.Standard/Classes/Communication/QController.cs
@@ -20,18 +20,19 @@ namespace qController
qUpdater = new QUpdater(this);
qUpdater.Start();
//Connect();
-
- Connect();
- KickOff();
+ //Connect();
+ //KickOff();
}
- public void Connect()
+ public void Connect(string workspace_id)
{
- Console.WriteLine("QCONTROLLER CONNECT CALLED");
+ Console.WriteLine("QCONTROLLER CONNECT CALLED: " + workspace_id);
+ qWorkspace = new QWorkSpace();
+ qWorkspace.workspace_id = workspace_id;
//qClient.sendStringUDP("/connect");
- qClient.sendArgsUDP("/updates", 1);
- qClient.sendAndReceiveString("/cueLists");
+ qClient.sendArgsUDP("/workspace/"+workspace_id+"/updates", 1);
+ qClient.sendAndReceiveString("/workspace/"+workspace_id+"/cueLists");
}
public void KickOff()
diff --git a/qController.Standard/Classes/Communication/QUpdater.cs b/qController.Standard/Classes/Communication/QUpdater.cs
index 77c355a..cf115ae 100644
--- a/qController.Standard/Classes/Communication/QUpdater.cs
+++ b/qController.Standard/Classes/Communication/QUpdater.cs
@@ -58,7 +58,7 @@ namespace qController
}
else
{
- qController.qClient.UpdateSelectedCue();
+ qController.qClient.UpdateSelectedCue(qController.qWorkspace.workspace_id);
}
}
@@ -71,7 +71,7 @@ namespace qController
{
Console.WriteLine("Workspace group cues are already populated");
App.showToast("Workspace cues have been loaded....");
- qController.qClient.UpdateSelectedCue();
+ qController.qClient.UpdateSelectedCue(qController.qWorkspace.workspace_id);
return;
}
//RefreshGroupCues();
@@ -82,7 +82,7 @@ namespace qController
public void OnPlaybackPositionUpdated(object source, PlaybackPositionArgs args)
{
qController.playbackPosition = args.PlaybackPosition;
- qController.qClient.UpdateSpecificCue(args.PlaybackPosition);
+ qController.qClient.UpdateSpecificCue(qController.qWorkspace.workspace_id,args.PlaybackPosition);
}
public void RefreshGroupCues()
@@ -95,7 +95,7 @@ namespace qController
if (cue.type == "Group")
{
Console.WriteLine("First Group Cue Found");
- qController.qClient.sendStringUDP("/cue_id/" + cue.uniqueID + "/children");
+ qController.qClient.sendStringUDP("/workspace/" + qController.qWorkspace.workspace_id + "/cue_id/" + cue.uniqueID + "/children");
break;
}
}
@@ -104,7 +104,7 @@ namespace qController
public void SendThump()
{
- qController.qClient.sendStringUDP("/thump");
+ qController.qClient.sendStringUDP("/workspace/" + qController.qWorkspace.workspace_id + "/thump");
}
public void Kill(){
diff --git a/qController.Standard/App.xaml b/qController.Standard/Pages/App.xaml
similarity index 100%
rename from qController.Standard/App.xaml
rename to qController.Standard/Pages/App.xaml
diff --git a/qController.Standard/App.xaml.cs b/qController.Standard/Pages/App.xaml.cs
similarity index 100%
rename from qController.Standard/App.xaml.cs
rename to qController.Standard/Pages/App.xaml.cs
diff --git a/qController.Standard/Pages/ControlPage.xaml.cs b/qController.Standard/Pages/ControlPage.xaml.cs
index 81995a9..41af074 100644
--- a/qController.Standard/Pages/ControlPage.xaml.cs
+++ b/qController.Standard/Pages/ControlPage.xaml.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using Xamarin.Forms;
using System.Collections;
-
+using Acr.UserDialogs;
namespace qController
{
public partial class ControlPage : ContentPage
@@ -29,7 +29,7 @@ namespace qController
InitGUI();
-
+ qController.KickOff();
}
private void WorkspaceInfoReceived(object source, WorkspaceInfoArgs args)
@@ -37,17 +37,41 @@ namespace qController
if(args.WorkspaceInfo.Count > 1)
{
Console.WriteLine("MULTIPLE WORKSPACES ON SELECTED COMPUTER");
+ PromptForWorkspace(args.WorkspaceInfo);
}
else
{
Console.WriteLine("ONLY ONE WORKSPACE ON SELECTED COMPUTER");
- //qController.Connect();
+ qController.Connect(args.WorkspaceInfo[0].uniqueID);
+
+ Device.BeginInvokeOnMainThread(() => {
+ FinishUI();
+ });
}
}
+ private void PromptForWorkspace(List workspaces)
+ {
+ ActionSheetConfig config = new ActionSheetConfig();
+ config.SetTitle("Select Workspace");
+ for (int i = 0; i < workspaces.Count; i++)
+ {
+ QInfo workspace = workspaces[i];
+ config.Add(workspace.displayName, new Action(() => {
+ Console.WriteLine("Workspace Selected: " + workspace.displayName);
+ qController.Connect(workspace.uniqueID);
+ Device.BeginInvokeOnMainThread(() =>
+ {
+ FinishUI();
+ });
+ }));
+ }
+ UserDialogs.Instance.ActionSheet(config);
+ }
+
private void InitGUI()
{
-
+ App.rootPage.MenuPage.ChangeToControl();
NavigationPage.SetHasNavigationBar(this, false);
instanceName.HorizontalTextAlignment = TextAlignment.Center;
instanceName.HorizontalOptions = LayoutOptions.CenterAndExpand;
@@ -65,16 +89,6 @@ namespace qController
break;
}
-
- List buttons = new List();
-
- buttons.Add(new QButton("Previous", "/select/previous"));
- buttons.Add(new QButton("Panic", "/panic"));
- buttons.Add(new QButton("Next", "/select/next"));
- buttons.Add(new QButton("Preview", "/preview"));
- buttons.Add(new QButton("Pause", "/pause"));
- buttons.Add(new QButton("Resume", "/resume"));
-
var menuButtonGesture = new TapGestureRecognizer();
menuButtonGesture.Tapped += ShowMenu;
@@ -82,9 +96,37 @@ namespace qController
qCell = new QSelectedCueCell();
- qSelectedCueOptions = new QSelectedCueOptionsCell(qController);
-
sLayout.Children.Add(qCell);
+ }
+
+ void FinishUI()
+ {
+ string workspace_prefix = "/workspace/" + qController.qWorkspace.workspace_id;
+ List buttons = new List();
+
+ buttons.Add(new QButton("Previous", workspace_prefix + "/select/previous"));
+ buttons.Add(new QButton("Panic", workspace_prefix + "/panic"));
+ buttons.Add(new QButton("Next", workspace_prefix + "/select/next"));
+ buttons.Add(new QButton("Preview", "/preview"));
+ buttons.Add(new QButton("Pause", "/pause"));
+ buttons.Add(new QButton("Resume", "/resume"));
+
+
+ qSelectedCueOptions = new QSelectedCueOptionsCell();
+
+ qSelectedCueOptions.mainSlider.ValueChanged += (sender, args) =>
+ {
+ qController.qClient.sendArgs(workspace_prefix + "/cue_id/" + qSelectedCueOptions.activeCue + "/sliderLevel/0", (float)args.NewValue);
+ };
+ qSelectedCueOptions.leftSlider.ValueChanged += (sender, args) =>
+ {
+ qController.qClient.sendArgs(workspace_prefix + "/cue_id/" + qSelectedCueOptions.activeCue + "/sliderLevel/1", (float)args.NewValue);
+ };
+ qSelectedCueOptions.rightSlider.ValueChanged += (sender, args) =>
+ {
+ qController.qClient.sendArgs(workspace_prefix + "/cue_id/" + qSelectedCueOptions.activeCue + "/sliderLevel/2", (float)args.NewValue);
+ };
+
mainG = new Grid
@@ -110,7 +152,7 @@ namespace qController
foreach (var b in buttons)
{
b.Clicked += sendOSC;
- if(b.Text=="Panic")
+ if (b.Text == "Panic")
{
b.BackgroundColor = Color.IndianRed;
}
@@ -119,23 +161,23 @@ namespace qController
b.BackgroundColor = Color.FromHex("D8D8D8");
}
b.TextColor = Color.Black;
- mainG.Children.Add(b,column,row);
+ mainG.Children.Add(b, column, row);
row++;
- if(row == 3){
+ if (row == 3)
+ {
row = 0;
column = 2;
}
}
- QButton goButton = new QButton("GO","/go");
+ QButton goButton = new QButton("GO", workspace_prefix+"/go");
goButton.Clicked += sendOSC;
goButton.BackgroundColor = Color.SeaGreen;
goButton.TextColor = Color.Black;
- mainG.Children.Add(goButton,1,0);
- Grid.SetRowSpan(goButton,3);
+ mainG.Children.Add(goButton, 1, 0);
+ Grid.SetRowSpan(goButton, 3);
sLayout.Children.Add(mainG);
-
}
void sendOSC(object sender, EventArgs e)
@@ -176,6 +218,7 @@ namespace qController
noSelect.number = "!";
qCell.UpdateSelectedCue(noSelect);
});
+ qController.qClient.UpdateSelectedCue(qController.qWorkspace.workspace_id);
}
Console.WriteLine("Workspace updated in ControlPage: " + qController.qWorkspace.workspace_id);
}
@@ -214,6 +257,14 @@ namespace qController
qCell.UpdateSelectedCue(args.Cue);
if (!mainG.IsVisible)
mainG.IsVisible = true;
+ if(qSelectedCueOptions != null)
+ {
+ qSelectedCueOptions.activeCue = args.Cue.uniqueID;
+ if (args.Cue.levels != null)
+ {
+ qSelectedCueOptions.UpdateLevels(args.Cue.levels[0]);
+ }
+ }
});
}
}
@@ -236,7 +287,7 @@ namespace qController
}
});
- qController.qClient.UpdateSelectedCue();
+ qController.qClient.UpdateSelectedCue(qController.qWorkspace.workspace_id);
App.showToast("Workspace cues loaded...");
}
}
diff --git a/qController.Standard/Pages/MenuPage.xaml.cs b/qController.Standard/Pages/MenuPage.xaml.cs
index 839251f..4403da4 100644
--- a/qController.Standard/Pages/MenuPage.xaml.cs
+++ b/qController.Standard/Pages/MenuPage.xaml.cs
@@ -82,19 +82,21 @@ namespace qController
}
public void ChangeToWorkspace(QWorkSpace workspace)
{
- ChangeToControl();
- foreach (var cueList in workspace.data)
+ for(int i = 0; i < workspace.data.Count; i++)
{
+ var cueList = workspace.data[i];
items.Add(new MenuPageItem
{
Title = cueList.listName,
Icon = "",
Command = ""
});
- foreach (var cue in cueList.cues)
+ for (int j = 0; j < cueList.cues.Count; j++)
{
+ var cue = cueList.cues[j];
AddSubCues(cue, 0);
}
+
}
}
@@ -125,9 +127,10 @@ namespace qController
});
//uncomment to load nested group cues
- foreach (var sub_cue in cue.cues)
+ for (int i = 0; i < cue.cues.Count; i++)
{
- AddSubCues(sub_cue,level + 1);
+ var sub_cue = cue.cues[i];
+ AddSubCues(sub_cue, level + 1);
}
}
else
diff --git a/qController.Standard/qController.csproj b/qController.Standard/qController.csproj
index a347457..f95fe44 100644
--- a/qController.Standard/qController.csproj
+++ b/qController.Standard/qController.csproj
@@ -45,9 +45,6 @@
-
- *.xaml
-
*.xaml