* 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 string activeCue;
public Slider mainSlider;
public Slider leftSlider;
public Slider rightSlider;
//public Slider leftSlider;
//public Slider rightSlider;
public Label mainLabel;
public Label rightLabel;
public Label leftLabel;
//public Label rightLabel;
//public Label leftLabel;
public List<Slider> sliders = new List<Slider>();
public List<Label> sliderLabels = new List<Label>();
public QLevelsCell()
{
Padding = new Thickness(5);
@@ -22,6 +26,8 @@ namespace qController.UI.Cells
HasShadow = true;
BackgroundColor = Color.FromHex("D8D8D8");
IsVisible = false;
int numberOfChannelsVisible = 6;
//highlight for testing
//BackgroundColor = Color.Red;
@@ -31,14 +37,15 @@ namespace qController.UI.Cells
Padding = new Thickness(0),
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}
},
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)}
}
};
@@ -50,52 +57,86 @@ namespace qController.UI.Cells
};
leftSlider = new Slider
for(int i = 0; i< numberOfChannelsVisible; i++)
{
Minimum = -60,
Maximum = 12
};
var sliderToAdd = new Slider
{
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
{
Minimum = -60,
Maximum = 12
};
//rightSlider = new Slider
//{
// Minimum = -60,
// Maximum = 12
//};
mainLabel = new Label
{
Text = "MAIN:",
Text = "M:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
leftLabel = new Label
{
Text = "1:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
//leftLabel = new Label
//{
// Text = "1:",
// VerticalTextAlignment = TextAlignment.Center,
// HorizontalTextAlignment = TextAlignment.Center
//};
rightLabel = new Label
{
Text = "2:",
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
//rightLabel = new Label
//{
// Text = "2:",
// VerticalTextAlignment = TextAlignment.Center,
// HorizontalTextAlignment = TextAlignment.Center
//};
mainG.Children.Add(mainSlider, 1, 0);
mainG.Children.Add(leftSlider, 1, 1);
mainG.Children.Add(rightSlider, 1, 2);
//mainG.Children.Add(leftSlider, 1, 1);
//mainG.Children.Add(rightSlider, 1, 2);
Grid.SetColumnSpan(mainSlider, 4);
Grid.SetColumnSpan(leftSlider, 4);
Grid.SetColumnSpan(rightSlider, 4);
//Grid.SetColumnSpan(leftSlider, 4);
//Grid.SetColumnSpan(rightSlider, 4);
mainG.Children.Add(mainLabel, 0, 0);
mainG.Children.Add(leftLabel, 0, 1);
mainG.Children.Add(rightLabel, 0, 2);
//mainG.Children.Add(leftLabel, 0, 1);
//mainG.Children.Add(rightLabel, 0, 2);
Content = mainG;
Margin = new Thickness(10);
@@ -108,14 +149,21 @@ namespace qController.UI.Cells
{
mainSlider.Value = levels[0];
}
if (leftSlider != null)
for(int i = 0; i < sliders.Count; i++)
{
leftSlider.Value = levels[1];
}
if (rightSlider != null)
{
rightSlider.Value = levels[2];
Slider slider = sliders[i];
Label label = sliderLabels[i];
slider.Value = levels[i + 1];
label.Text = $"{levels[i + 1]}";
}
//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
{
QBrowser browser;
public event PropertyChangedEventHandler PropertyChanged;
public bool autoUpdate = false;
public ObservableCollection<QServerViewModel> ServersGrouped { get; set; }
public QBrowserViewModel(QBrowser browser)
{
@@ -24,17 +24,18 @@ namespace qController.ViewModels
this.browser.ServerFound += OnServerFound;
this.browser.ServerLost += OnServerLost;
Device.StartTimer(TimeSpan.FromSeconds(4), () =>
{
Task.Run(async () =>
{
this.browser.ProbeForQLabInstances();
// do something with time...
if(autoUpdate)
this.browser.ProbeForQLabInstances();
});
return true;
});
}
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);
};
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);
};
qLevelsCell.rightSlider.ValueChanged += (sender, args) =>
{
qController.qClient.sendTCP(workspace_prefix + "/cue_id/" + qLevelsCell.activeCue + "/sliderLevel/2", (float)args.NewValue);
};
var channel = i + 1;
Log.Debug("Setting value changed for channel: " + channel);
qLevelsCell.sliders[i].ValueChanged += (sender, args) =>
{
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();
@@ -203,12 +215,12 @@ namespace qController
{
case Device.iOS:
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));
break;
case Device.Android:
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));
break;
}
@@ -12,13 +12,15 @@ namespace qController.Pages
{
public partial class QBrowserPage : ContentPage
{
private QBrowserViewModel qBrowserViewModel;
public QBrowserPage()
{
InitializeComponent();
SetupTopBar();
serverListView.BindingContext = new QBrowserViewModel(new QBrowser());
qBrowserViewModel = new QBrowserViewModel(new QBrowser());
qBrowserViewModel.autoUpdate = true;
serverListView.BindingContext = qBrowserViewModel;
serverListView.ItemSelected += QWorkspaceSelected;
storageListView.ItemsSource = QStorage.qInstances;
@@ -43,6 +45,8 @@ namespace qController.Pages
{
if (e.SelectedItem == null)
return;
this.qBrowserViewModel.autoUpdate = false;
QWorkspace selectedWorkspace = (e.SelectedItem as QWorkspaceViewModel).workspace;
Log.Debug($"[demo] workspace: {selectedWorkspace.nameWithoutPathExtension} has been selected");
((ListView)sender).SelectedItem = null;
@@ -98,6 +102,12 @@ namespace qController.Pages
{
AddWorkspace();
}
protected override void OnAppearing()
{
base.OnAppearing();
this.qBrowserViewModel.autoUpdate = true;
}
}