Files
qController/qController.Standard/Pages/ControlPage.xaml.cs
T

162 lines
5.0 KiB
C#

using System;
using System.Collections.Generic;
using Xamarin.Forms;
using Rug.Osc;
using System.Collections;
namespace qController
{
public partial class ControlPage : ContentPage
{
QController qController;
Label instanceName = new Label();
QSelectedCueCell qCell;
QSelectedCueOptionsCell qSelectedCueOptions;
Grid mainG;
public ControlPage(string name, string address)
{
InitializeComponent();
qController = new QController(address, 53000);
qController.qParser.SelectedCueUpdated += SelectedCueUpdated;
NavigationPage.SetHasNavigationBar(this, false);
instanceName.Text = name;
InitGUI();
}
private void InitGUI()
{
instanceName.HorizontalTextAlignment = TextAlignment.Center;
instanceName.HorizontalOptions = LayoutOptions.CenterAndExpand;
instanceName.VerticalOptions = LayoutOptions.CenterAndExpand;
topBar.Children.Add(instanceName, 1, 0);
topBar.BackgroundColor = Color.FromHex("71AEFF");
BackgroundColor = Color.FromHex("4A4A4A");
backButton.Source = ImageSource.FromFile("back");
switch (Device.RuntimePlatform)
{
case Device.iOS:
backButton.Margin = new Thickness(20, 45, 20, 10);
instanceName.Margin = new Thickness(20, 45, 20, 10);
break;
}
Hashtable cmds = new Hashtable();
var backButtonGesture = new TapGestureRecognizer();
backButtonGesture.Tapped += Back;
backButton.GestureRecognizers.Add(backButtonGesture);
cmds.Add("Pause", "/pause");
cmds.Add("Resume", "/resume");
cmds.Add("Panic", "/panic");
cmds.Add("Next", "/select/next");
cmds.Add("Previous", "/select/previous");
cmds.Add("Preview", "/preview");
qCell = new QSelectedCueCell();
qSelectedCueOptions = new QSelectedCueOptionsCell(qController);
sLayout.Children.Add(qCell);
mainG = new Grid
{
Padding = new Thickness(0),
RowDefinitions = {
new RowDefinition{Height = GridLength.Auto},
new RowDefinition{Height = GridLength.Auto},
new RowDefinition{Height = GridLength.Auto}
},
ColumnDefinitions = {
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}
}
};
int row = 0;
int column = 0;
foreach (string cmd in cmds.Keys)
{
QButton b = new QButton(cmd,(string)cmds[cmd]);
b.Clicked += sendOSC;
if(cmd=="Panic")
{
b.BackgroundColor = Color.IndianRed;
}
else
{
b.BackgroundColor = Color.FromHex("D8D8D8");
}
b.TextColor = Color.Black;
mainG.Children.Add(b,column,row);
row++;
if(row == 3){
row = 0;
column = 2;
}
}
QButton goButton = new QButton("GO","/go");
goButton.Clicked += sendOSC;
goButton.BackgroundColor = Color.SeaGreen;
goButton.TextColor = Color.Black;
mainG.Children.Add(goButton,1,0);
Grid.SetRowSpan(goButton,3);
sLayout.Children.Add(mainG);
}
void sendOSC(object sender, EventArgs e)
{
qController.sendCommand(((QButton)sender).OSCCommand);
}
void Back(object sender, EventArgs e)
{
App.iNav.PopModalAsync();
}
public void SelectedCueUpdated(object sender, CueEventArgs e){
Device.BeginInvokeOnMainThread(()=>{
if (e.SelectedCue.type.Equals("Audio"))
{
//Console.WriteLine("CUE IS AN AUDIO CUE");
sLayout.Children.Add(qSelectedCueOptions);
}
else
{
//Console.WriteLine("CUE IS NOT AN AUDIO CUE");
sLayout.Children.Remove(qSelectedCueOptions);
}
qCell.UpdateSelectedCue(e.SelectedCue);
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
Console.WriteLine("Disappeared");
qController.Kill();
}
protected override void OnAppearing()
{
base.OnAppearing();
Console.WriteLine("Appeared");
}
}
}