* ControlPage.xaml.cs:

* QLevelsCell.cs: Add more levels sliders

* QBrowserPage.xaml.cs:
* QBrowserViewModel.cs: Switch off browser updating when connected
This commit is contained in:
2021-01-09 09:43:37 -06:00
parent 9cf241f9c8
commit 3ba1b81304
4 changed files with 127 additions and 56 deletions
@@ -9,11 +9,15 @@ namespace qController.UI.Cells
public List<double> levels; public List<double> levels;
public string activeCue; public string activeCue;
public Slider mainSlider; public Slider mainSlider;
public Slider leftSlider; //public Slider leftSlider;
public Slider rightSlider; //public Slider rightSlider;
public Label mainLabel; public Label mainLabel;
public Label rightLabel; //public Label rightLabel;
public Label leftLabel; //public Label leftLabel;
public List<Slider> sliders = new List<Slider>();
public List<Label> sliderLabels = new List<Label>();
public QLevelsCell() public QLevelsCell()
{ {
Padding = new Thickness(5); Padding = new Thickness(5);
@@ -22,6 +26,8 @@ namespace qController.UI.Cells
HasShadow = true; HasShadow = true;
BackgroundColor = Color.FromHex("D8D8D8"); BackgroundColor = Color.FromHex("D8D8D8");
IsVisible = false; IsVisible = false;
int numberOfChannelsVisible = 6;
//highlight for testing //highlight for testing
//BackgroundColor = Color.Red; //BackgroundColor = Color.Red;
@@ -31,14 +37,15 @@ namespace qController.UI.Cells
Padding = new Thickness(0), Padding = new Thickness(0),
RowDefinitions = { RowDefinitions = {
new RowDefinition{Height = GridLength.Star}, new RowDefinition{Height = GridLength.Star},
new RowDefinition{Height = GridLength.Star}, //new RowDefinition{Height = GridLength.Star},
new RowDefinition{Height = GridLength.Star} //new RowDefinition{Height = GridLength.Star}
}, },
ColumnDefinitions = { 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)}, new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}, new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}, new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)},
new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)} new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}
} }
}; };
@@ -50,52 +57,86 @@ namespace qController.UI.Cells
}; };
leftSlider = new Slider for(int i = 0; i< numberOfChannelsVisible; i++)
{ {
Minimum = -60, var sliderToAdd = new Slider
Maximum = 12 {
}; Minimum = -60,
Maximum = 12
};
var labelToAdd = new Label
{
Text = $"{i+1}:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
var valueLabelToAdd = new Label
{
Text = "",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
mainG.RowDefinitions.Add(new RowDefinition { Height = GridLength.Star });
mainG.Children.Add(sliderToAdd, 1, i+1);
Grid.SetColumnSpan(sliderToAdd, 4);
mainG.Children.Add(labelToAdd, 0, i+1);
mainG.Children.Add(valueLabelToAdd, 5, i+1);
sliders.Add(sliderToAdd);
sliderLabels.Add(valueLabelToAdd);
}
//leftSlider = new Slider
//{
// Minimum = -60,
// Maximum = 12
//};
rightSlider = new Slider //rightSlider = new Slider
{ //{
Minimum = -60, // Minimum = -60,
Maximum = 12 // Maximum = 12
}; //};
mainLabel = new Label mainLabel = new Label
{ {
Text = "MAIN:", Text = "M:",
VerticalTextAlignment = TextAlignment.Center, VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center HorizontalTextAlignment = TextAlignment.Center
}; };
leftLabel = new Label //leftLabel = new Label
{ //{
Text = "1:", // Text = "1:",
VerticalTextAlignment = TextAlignment.Center, // VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center // HorizontalTextAlignment = TextAlignment.Center
}; //};
rightLabel = new Label //rightLabel = new Label
{ //{
Text = "2:", // Text = "2:",
VerticalTextAlignment = TextAlignment.Center, // VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center // HorizontalTextAlignment = TextAlignment.Center
}; //};
mainG.Children.Add(mainSlider, 1, 0); mainG.Children.Add(mainSlider, 1, 0);
mainG.Children.Add(leftSlider, 1, 1); //mainG.Children.Add(leftSlider, 1, 1);
mainG.Children.Add(rightSlider, 1, 2); //mainG.Children.Add(rightSlider, 1, 2);
Grid.SetColumnSpan(mainSlider, 4); Grid.SetColumnSpan(mainSlider, 4);
Grid.SetColumnSpan(leftSlider, 4); //Grid.SetColumnSpan(leftSlider, 4);
Grid.SetColumnSpan(rightSlider, 4); //Grid.SetColumnSpan(rightSlider, 4);
mainG.Children.Add(mainLabel, 0, 0); mainG.Children.Add(mainLabel, 0, 0);
mainG.Children.Add(leftLabel, 0, 1); //mainG.Children.Add(leftLabel, 0, 1);
mainG.Children.Add(rightLabel, 0, 2); //mainG.Children.Add(rightLabel, 0, 2);
Content = mainG; Content = mainG;
Margin = new Thickness(10); Margin = new Thickness(10);
@@ -108,14 +149,21 @@ namespace qController.UI.Cells
{ {
mainSlider.Value = levels[0]; mainSlider.Value = levels[0];
} }
if (leftSlider != null) for(int i = 0; i < sliders.Count; i++)
{ {
leftSlider.Value = levels[1]; Slider slider = sliders[i];
} Label label = sliderLabels[i];
if (rightSlider != null) slider.Value = levels[i + 1];
{ label.Text = $"{levels[i + 1]}";
rightSlider.Value = levels[2];
} }
//if (leftSlider != null)
//{
// leftSlider.Value = levels[1];
//}
//if (rightSlider != null)
//{
// rightSlider.Value = levels[2];
//}
} }
} }
} }
@@ -13,9 +13,9 @@ namespace qController.ViewModels
public class QBrowserViewModel : INotifyPropertyChanged public class QBrowserViewModel : INotifyPropertyChanged
{ {
QBrowser browser; QBrowser browser;
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
public bool autoUpdate = false;
public ObservableCollection<QServerViewModel> ServersGrouped { get; set; } public ObservableCollection<QServerViewModel> ServersGrouped { get; set; }
public QBrowserViewModel(QBrowser browser) public QBrowserViewModel(QBrowser browser)
{ {
@@ -24,17 +24,18 @@ namespace qController.ViewModels
this.browser.ServerFound += OnServerFound; this.browser.ServerFound += OnServerFound;
this.browser.ServerLost += OnServerLost; this.browser.ServerLost += OnServerLost;
Device.StartTimer(TimeSpan.FromSeconds(4), () => Device.StartTimer(TimeSpan.FromSeconds(4), () =>
{ {
Task.Run(async () => Task.Run(async () =>
{ {
this.browser.ProbeForQLabInstances(); if(autoUpdate)
// do something with time... this.browser.ProbeForQLabInstances();
}); });
return true; return true;
}); });
} }
private void OnServerFound(object source, QServerFoundArgs args) private void OnServerFound(object source, QServerFoundArgs args)
@@ -179,14 +179,26 @@ namespace qController
{ {
qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/0", (float)args.NewValue); qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/0", (float)args.NewValue);
}; };
qLevelsCell.leftSlider.ValueChanged += (sender, args) =>
for(int i = 0; i < qLevelsCell.sliders.Count; i++)
{ {
qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/1", (float)args.NewValue); var channel = i + 1;
}; Log.Debug("Setting value changed for channel: " + channel);
qLevelsCell.rightSlider.ValueChanged += (sender, args) => qLevelsCell.sliders[i].ValueChanged += (sender, args) =>
{ {
qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/2", (float)args.NewValue); qLevelsCell.sliderLabels[channel-1].Text = $"{args.NewValue}";
}; qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/" + channel, (float)args.NewValue);
};
}
//qLevelsCell.leftSlider.ValueChanged += (sender, args) =>
//{
// qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/1", (float)args.NewValue);
//};
//qLevelsCell.rightSlider.ValueChanged += (sender, args) =>
//{
// qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/2", (float)args.NewValue);
//};
showLevelsButton = new QLevelsButton(); showLevelsButton = new QLevelsButton();
@@ -203,12 +215,12 @@ namespace qController
{ {
case Device.iOS: case Device.iOS:
AbsoluteLayout.SetLayoutBounds(qControlsBlock, new Rectangle(0, 0.53, 1, 0.25)); AbsoluteLayout.SetLayoutBounds(qControlsBlock, new Rectangle(0, 0.53, 1, 0.25));
AbsoluteLayout.SetLayoutBounds(qLevelsCell, new Rectangle(0.9, 0.40, 0.8, 0.25)); AbsoluteLayout.SetLayoutBounds(qLevelsCell, new Rectangle(0, 0.53, 1, 0.25));
AbsoluteLayout.SetLayoutBounds(showLevelsButton, new Rectangle(0.02, 0.34, App.HeightUnit * 8, App.HeightUnit * 8)); AbsoluteLayout.SetLayoutBounds(showLevelsButton, new Rectangle(0.02, 0.34, App.HeightUnit * 8, App.HeightUnit * 8));
break; break;
case Device.Android: case Device.Android:
AbsoluteLayout.SetLayoutBounds(qControlsBlock, new Rectangle(0, 0.58, 1, 0.25)); AbsoluteLayout.SetLayoutBounds(qControlsBlock, new Rectangle(0, 0.58, 1, 0.25));
AbsoluteLayout.SetLayoutBounds(qLevelsCell, new Rectangle(0.9, 0.45, 0.8, 0.25)); AbsoluteLayout.SetLayoutBounds(qLevelsCell, new Rectangle(0, 0.58, 1, 0.25));
AbsoluteLayout.SetLayoutBounds(showLevelsButton, new Rectangle(0.02, 0.39, App.HeightUnit * 8, App.HeightUnit * 8)); AbsoluteLayout.SetLayoutBounds(showLevelsButton, new Rectangle(0.02, 0.39, App.HeightUnit * 8, App.HeightUnit * 8));
break; break;
} }
@@ -12,13 +12,15 @@ namespace qController.Pages
{ {
public partial class QBrowserPage : ContentPage public partial class QBrowserPage : ContentPage
{ {
private QBrowserViewModel qBrowserViewModel;
public QBrowserPage() public QBrowserPage()
{ {
InitializeComponent(); InitializeComponent();
SetupTopBar(); SetupTopBar();
qBrowserViewModel = new QBrowserViewModel(new QBrowser());
serverListView.BindingContext = new QBrowserViewModel(new QBrowser()); qBrowserViewModel.autoUpdate = true;
serverListView.BindingContext = qBrowserViewModel;
serverListView.ItemSelected += QWorkspaceSelected; serverListView.ItemSelected += QWorkspaceSelected;
storageListView.ItemsSource = QStorage.qInstances; storageListView.ItemsSource = QStorage.qInstances;
@@ -43,6 +45,8 @@ namespace qController.Pages
{ {
if (e.SelectedItem == null) if (e.SelectedItem == null)
return; return;
this.qBrowserViewModel.autoUpdate = false;
QWorkspace selectedWorkspace = (e.SelectedItem as QWorkspaceViewModel).workspace; QWorkspace selectedWorkspace = (e.SelectedItem as QWorkspaceViewModel).workspace;
Log.Debug($"[demo] workspace: {selectedWorkspace.nameWithoutPathExtension} has been selected"); Log.Debug($"[demo] workspace: {selectedWorkspace.nameWithoutPathExtension} has been selected");
((ListView)sender).SelectedItem = null; ((ListView)sender).SelectedItem = null;
@@ -98,6 +102,12 @@ namespace qController.Pages
{ {
AddWorkspace(); AddWorkspace();
} }
protected override void OnAppearing()
{
base.OnAppearing();
this.qBrowserViewModel.autoUpdate = true;
}
} }