mirror of
https://github.com/jwetzell/qController.git
synced 2026-08-19 22:24:18 +00:00
* qfont.ttf:
* qfont.ttf: Icons * App.xaml.cs: Set Font String System Wide * RootPage.xaml.cs: * QGrid.cs: * QCueListView.cs: * qConnectionPage.xaml.cs: * IPHelper.cs: * QInstanceCell.cs: Switch to using Icon Font * QSelectedCueCell.cs: Switch to Type Icon instead of just name * QClient.cs: Create and dispose of sender for every sent message * QCue.cs: Add Icon Code method * ControlPage.xaml: Add hamburger menu * ControlPage.xaml.cs: Menu for Workspace listing/ cue selection * MenuPage.xaml.cs: Function to change menu items back for home page
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image x:Name = "backButton" HorizontalOptions = "Start" Margin="20,10,20,10" Grid.Row="0" Grid.Column="0" />
|
||||
<Label x:Name = "menuButton" FontFamily = "{StaticResource qfont}" HorizontalOptions = "Start" Margin="20,10,20,10" Grid.Row="0" Grid.Column="0" FontSize="25"/>
|
||||
</Grid>
|
||||
</StackLayout>
|
||||
</ContentPage.Content>
|
||||
|
||||
@@ -11,7 +11,6 @@ namespace qController
|
||||
Label instanceName = new Label();
|
||||
QSelectedCueCell qCell;
|
||||
QSelectedCueOptionsCell qSelectedCueOptions;
|
||||
QCueListView qCueListView;
|
||||
Grid mainG;
|
||||
ListView listView;
|
||||
public ControlPage(string name, string address)
|
||||
@@ -23,18 +22,30 @@ namespace qController
|
||||
qController.qClient.qParser.WorkspaceUpdated += WorkspaceUpdated;
|
||||
qController.qClient.qParser.PlaybackPositionUpdated += PlaybackPositionUpdated;
|
||||
qController.qClient.qParser.CueInfoUpdated += OnCueUpdateReceived;
|
||||
NavigationPage.SetHasNavigationBar(this, false);
|
||||
instanceName.Text = name;
|
||||
|
||||
instanceName.Text = name;
|
||||
App.rootPage.MenuItemSelected += OnMenuItemSelected;
|
||||
|
||||
InitGUI();
|
||||
|
||||
}
|
||||
|
||||
private void OnMenuItemSelected(object source, MenuEventArgs args)
|
||||
{
|
||||
if (args.Command.Contains("/"))
|
||||
{
|
||||
Console.WriteLine("Cue selected: " + args.Command);
|
||||
qController.qClient.sendStringUDP(args.Command);
|
||||
}else if (args.Command == "disconnect")
|
||||
{
|
||||
Back();
|
||||
}
|
||||
}
|
||||
|
||||
private void InitGUI()
|
||||
{
|
||||
|
||||
|
||||
NavigationPage.SetHasNavigationBar(this, false);
|
||||
instanceName.HorizontalTextAlignment = TextAlignment.Center;
|
||||
instanceName.HorizontalOptions = LayoutOptions.CenterAndExpand;
|
||||
instanceName.VerticalOptions = LayoutOptions.CenterAndExpand;
|
||||
@@ -42,11 +53,11 @@ namespace qController
|
||||
topBar.BackgroundColor = Color.FromHex("71AEFF");
|
||||
|
||||
BackgroundColor = Color.FromHex("4A4A4A");
|
||||
backButton.Source = ImageSource.FromFile("back");
|
||||
menuButton.Text = "\uF0C9";
|
||||
switch (Device.RuntimePlatform)
|
||||
{
|
||||
case Device.iOS:
|
||||
backButton.Margin = new Thickness(20, 35, 20, 10);
|
||||
menuButton.Margin = new Thickness(20, 35, 20, 10);
|
||||
instanceName.Margin = new Thickness(20, 35, 20, 10);
|
||||
break;
|
||||
|
||||
@@ -61,10 +72,10 @@ namespace qController
|
||||
buttons.Add(new QButton("Pause", "/pause"));
|
||||
buttons.Add(new QButton("Resume", "/resume"));
|
||||
|
||||
var backButtonGesture = new TapGestureRecognizer();
|
||||
var menuButtonGesture = new TapGestureRecognizer();
|
||||
|
||||
backButtonGesture.Tapped += Back;
|
||||
backButton.GestureRecognizers.Add(backButtonGesture);
|
||||
menuButtonGesture.Tapped += ShowMenu;
|
||||
menuButton.GestureRecognizers.Add(menuButtonGesture);
|
||||
|
||||
|
||||
qCell = new QSelectedCueCell();
|
||||
@@ -85,7 +96,8 @@ namespace qController
|
||||
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
|
||||
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
|
||||
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}
|
||||
}
|
||||
},
|
||||
Margin = new Thickness(10)
|
||||
};
|
||||
|
||||
|
||||
@@ -121,9 +133,6 @@ namespace qController
|
||||
|
||||
sLayout.Children.Add(mainG);
|
||||
|
||||
qCueListView = new QCueListView();
|
||||
|
||||
//sLayout.Children.Add(qCueListView);
|
||||
|
||||
}
|
||||
|
||||
@@ -132,11 +141,17 @@ namespace qController
|
||||
qController.qClient.sendStringUDP(((QButton)sender).OSCCommand);
|
||||
}
|
||||
|
||||
void Back(object sender, EventArgs e)
|
||||
void ShowMenu(object sender, EventArgs e)
|
||||
{
|
||||
App.NavigationPage.Navigation.PopModalAsync();
|
||||
//App.NavigationPage.Navigation.PopAsync();
|
||||
App.MenuIsPresented = true;
|
||||
}
|
||||
|
||||
void Back()
|
||||
{
|
||||
App.rootPage.MenuPage.ChangeToHome();
|
||||
App.NavigationPage.Navigation.PopAsync();
|
||||
}
|
||||
public void SelectedCueUpdated(object sender, CueEventArgs e){
|
||||
Device.BeginInvokeOnMainThread(()=>{
|
||||
if (e.Cue.type.Equals("Audio"))
|
||||
@@ -157,10 +172,8 @@ namespace qController
|
||||
{
|
||||
if(e.UpdatedWorkspace.data.Count > 0)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(() =>
|
||||
{
|
||||
qCueListView.UpdateWithWorkspace(e.UpdatedWorkspace);
|
||||
});
|
||||
|
||||
App.rootPage.MenuPage.ChangeToWorkspace(e.UpdatedWorkspace);
|
||||
qController.qWorkspace = e.UpdatedWorkspace;
|
||||
Console.WriteLine("Workspace updated in ControlPage: " + qController.qWorkspace.workspace_id);
|
||||
}
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Collections.ObjectModel;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace qController
|
||||
{
|
||||
public partial class MenuPage : ContentPage
|
||||
{
|
||||
public ListView ListView { get { return listView; } }
|
||||
ListView listView;
|
||||
|
||||
public ListView listView;
|
||||
public ObservableCollection<MasterPageItem> items;
|
||||
public MenuPage()
|
||||
{
|
||||
Title = "Menu";
|
||||
InitializeComponent();
|
||||
var items = new List<MasterPageItem>();
|
||||
items = new ObservableCollection<MasterPageItem>();
|
||||
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = "Scan Network",
|
||||
@@ -42,33 +43,25 @@ namespace qController
|
||||
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(30) });
|
||||
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
|
||||
|
||||
string qfont = "";
|
||||
|
||||
switch (Device.RuntimePlatform)
|
||||
{
|
||||
case Device.iOS:
|
||||
qfont = "qfont";
|
||||
break;
|
||||
case Device.Android:
|
||||
qfont = "qfont.ttf#qfont";
|
||||
break;
|
||||
|
||||
}
|
||||
var icon = new Label();
|
||||
|
||||
icon.FontFamily = qfont as string;
|
||||
icon.FontFamily = App.QFont;
|
||||
icon.SetBinding(Label.TextProperty, "Icon");
|
||||
icon.HorizontalTextAlignment = TextAlignment.Center;
|
||||
icon.VerticalTextAlignment = TextAlignment.Center;
|
||||
icon.FontSize = 20;
|
||||
var label = new Label { VerticalOptions = LayoutOptions.FillAndExpand };
|
||||
label.SetBinding(Label.TextProperty, "Title");
|
||||
|
||||
Console.WriteLine(label.Text);
|
||||
if (label.Text == "Disconnect")
|
||||
{
|
||||
label.TextColor = Color.DarkRed;
|
||||
}
|
||||
grid.Children.Add(icon);
|
||||
grid.Children.Add(label, 1, 0);
|
||||
return new ViewCell { View = grid };
|
||||
}),
|
||||
SeparatorVisibility = SeparatorVisibility.None
|
||||
})
|
||||
};
|
||||
Content = new StackLayout
|
||||
{
|
||||
@@ -76,5 +69,64 @@ namespace qController
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public void ChangeToWorkspace(QWorkSpace workspace)
|
||||
{
|
||||
items.Clear();
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = "Disconnect",
|
||||
Icon = "\uE803",
|
||||
Command = "disconnect"
|
||||
});
|
||||
foreach (var cueList in workspace.data)
|
||||
{
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = cueList.listName,
|
||||
Icon = "",
|
||||
Command = ""
|
||||
});
|
||||
foreach (var cue in cueList.cues)
|
||||
{
|
||||
var cueIcon = cue.getIconString();
|
||||
var cueTitle = "";
|
||||
|
||||
if(cue.number != "")
|
||||
{
|
||||
cueTitle = "\t" + cue.number + " - " + cue.listName;
|
||||
}
|
||||
else
|
||||
{
|
||||
cueTitle = "\t" + cue.listName;
|
||||
}
|
||||
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = cueTitle,
|
||||
Icon = cueIcon,
|
||||
Command = "/select_id/" + cue.uniqueID
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeToHome()
|
||||
{
|
||||
items.Clear();
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = "Scan Network",
|
||||
Icon = "\uE800",
|
||||
Command = "scan"
|
||||
});
|
||||
items.Add(new MasterPageItem
|
||||
{
|
||||
Title = "Add Manually",
|
||||
Icon = "\uE801",
|
||||
Command = "add"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace qController
|
||||
|
||||
public partial class RootPage : MasterDetailPage
|
||||
{
|
||||
MenuPage MenuPage;
|
||||
public MenuPage MenuPage;
|
||||
public delegate void MenuItemSelectedHandler(object source, MenuEventArgs args);
|
||||
public event MenuItemSelectedHandler MenuItemSelected;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace qController
|
||||
{
|
||||
MenuPage = (MenuPage)Master;
|
||||
|
||||
MenuPage.ListView.ItemSelected += OnItemSelected;
|
||||
MenuPage.listView.ItemSelected += OnItemSelected;
|
||||
}
|
||||
|
||||
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
|
||||
@@ -42,7 +42,7 @@ namespace qController
|
||||
var item = e.SelectedItem as MasterPageItem;
|
||||
if (item != null)
|
||||
{
|
||||
MenuPage.ListView.SelectedItem = null;
|
||||
MenuPage.listView.SelectedItem = null;
|
||||
IsPresented = false;
|
||||
if (MenuItemSelected != null)
|
||||
MenuItemSelected(this, new MenuEventArgs { Command = item.Command });
|
||||
|
||||
@@ -20,7 +20,6 @@ namespace qController
|
||||
|
||||
private void OnMenuItemSelected(object source, MenuEventArgs args)
|
||||
{
|
||||
Console.WriteLine("Menu Item Selected: " + args.Command);
|
||||
if(args.Command == "scan")
|
||||
{
|
||||
Scan();
|
||||
@@ -63,10 +62,10 @@ namespace qController
|
||||
|
||||
lstView.BackgroundColor = Color.FromHex("4A4A4A");
|
||||
BackgroundColor = Color.FromHex("4A4A4A");
|
||||
var scanButtonGesture = new TapGestureRecognizer();
|
||||
var menuButtonGesture = new TapGestureRecognizer();
|
||||
|
||||
scanButtonGesture.Tapped += showMenu;
|
||||
menuButton.GestureRecognizers.Add(scanButtonGesture);
|
||||
menuButtonGesture.Tapped += showMenu;
|
||||
menuButton.GestureRecognizers.Add(menuButtonGesture);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user