mirror of
https://github.com/jwetzell/qController.git
synced 2026-08-18 05:34:16 +00:00
Start work towards manually added servers
This commit is contained in:
@@ -15,7 +15,7 @@ namespace qController
|
|||||||
static QStorage(){
|
static QStorage(){
|
||||||
|
|
||||||
qInstances = (ObservableCollection<QInstance>)CrossSettings.Current.GetValue(new ObservableCollection<QInstance>().GetType(), "qInstances", null);
|
qInstances = (ObservableCollection<QInstance>)CrossSettings.Current.GetValue(new ObservableCollection<QInstance>().GetType(), "qInstances", null);
|
||||||
qStoredServers = (ObservableCollection<QServerInfo>)CrossSettings.Current.GetValue(new ObservableCollection<QInstance>().GetType(), "qStoredServers", null);
|
qStoredServers = (ObservableCollection<QServerInfo>)CrossSettings.Current.GetValue(new ObservableCollection<QServerInfo>().GetType(), "qStoredServers", null);
|
||||||
recentWorkspaceInfo = (QRecentWorkspaceInfo)CrossSettings.Current.GetValue(typeof (QRecentWorkspaceInfo),"recentWorkspaceInfo",null);
|
recentWorkspaceInfo = (QRecentWorkspaceInfo)CrossSettings.Current.GetValue(typeof (QRecentWorkspaceInfo),"recentWorkspaceInfo",null);
|
||||||
|
|
||||||
if (qInstances == null)
|
if (qInstances == null)
|
||||||
@@ -36,15 +36,15 @@ namespace qController
|
|||||||
|
|
||||||
if (qInstances != null)
|
if (qInstances != null)
|
||||||
{
|
{
|
||||||
Log.Debug("[QStorage] qInstances exists though so load in those instances as servers");
|
if(qInstances.Count > 0)
|
||||||
foreach (QInstance instance in qInstances)
|
|
||||||
{
|
{
|
||||||
QServerInfo serverInfo = new QServerInfo();
|
Log.Debug("[QStorage] qInstances exists though so load in those instances as servers");
|
||||||
serverInfo.host = instance.address.ToString();
|
foreach (QInstance instance in qInstances)
|
||||||
//TODO: port?
|
{
|
||||||
qStoredServers.Add(serverInfo);
|
//TODO: port?
|
||||||
|
AddServer(instance.address.ToString(), 53000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UpdateStorage();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ namespace qController
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static bool AddInstance(QInstance q){
|
public static bool AddInstance(QInstance q){
|
||||||
if(!Contains(q.name, q.address)){
|
if(!Contains(q.address)){
|
||||||
qInstances.Add(q);
|
qInstances.Add(q);
|
||||||
UpdateStorage();
|
UpdateStorage();
|
||||||
return true;
|
return true;
|
||||||
@@ -82,12 +82,55 @@ namespace qController
|
|||||||
UpdateStorage();
|
UpdateStorage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static bool AddServer(string host, int port)
|
||||||
|
{
|
||||||
|
QServerInfo serverInfo = new QServerInfo();
|
||||||
|
serverInfo.host = host;
|
||||||
|
serverInfo.port = port;
|
||||||
|
|
||||||
|
return AddServer(serverInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AddServer(QServerInfo q)
|
||||||
|
{
|
||||||
|
if (!Contains(q.host))
|
||||||
|
{
|
||||||
|
Log.Debug($"[QStorage] Adding {q.host}:{q.port}");
|
||||||
|
qStoredServers.Add(q);
|
||||||
|
UpdateStorage();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemoveServer(string host)
|
||||||
|
{
|
||||||
|
foreach (var item in qStoredServers)
|
||||||
|
{
|
||||||
|
if (item.host == host)
|
||||||
|
{
|
||||||
|
RemoveServer(item);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemoveServer(QServerInfo q)
|
||||||
|
{
|
||||||
|
qStoredServers.Remove(q);
|
||||||
|
UpdateStorage();
|
||||||
|
}
|
||||||
|
|
||||||
private static void UpdateStorage(){
|
private static void UpdateStorage(){
|
||||||
CrossSettings.Current.SetValue("qInstances", qInstances);
|
CrossSettings.Current.SetValue("qInstances", qInstances);
|
||||||
CrossSettings.Current.SetValue("qStoredServers", qStoredServers);
|
CrossSettings.Current.SetValue("qStoredServers", qStoredServers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool Contains(string name, string address){
|
public static bool Contains(string address){
|
||||||
foreach (var item in qInstances)
|
foreach (var item in qInstances)
|
||||||
{
|
{
|
||||||
//Log.Debug("Item name: " + item.name + " Found Name: " + name);
|
//Log.Debug("Item name: " + item.name + " Found Name: " + name);
|
||||||
@@ -96,10 +139,22 @@ namespace qController
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var item in qStoredServers)
|
||||||
|
{
|
||||||
|
//Log.Debug("Item name: " + item.name + " Found Name: " + name);
|
||||||
|
if (item.host == address)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool IsEmpty(){
|
public bool IsEmpty(){
|
||||||
return qInstances.Count == 0;
|
return qInstances.Count == 0 && qStoredServers.Count == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,17 +23,24 @@ namespace qController.UI.Dialogs
|
|||||||
|
|
||||||
UserDialogs.Instance.Prompt(new PromptConfig
|
UserDialogs.Instance.Prompt(new PromptConfig
|
||||||
{
|
{
|
||||||
Title = "Enter Name",
|
Title = "Enter Port",
|
||||||
Message = "Enter a Name for " + qAddress.Text,
|
Message = "Enter OSC port for " + qAddress.Text,
|
||||||
OkText = "Save",
|
OkText = "Save",
|
||||||
OnAction = (qName) => {
|
InputType = InputType.Number,
|
||||||
if (!qName.Ok)
|
OnTextChanged = args =>
|
||||||
|
{
|
||||||
|
args.IsValid = args.Value.Length > 0;
|
||||||
|
},
|
||||||
|
OnAction = (qPort) => {
|
||||||
|
if (!qPort.Ok)
|
||||||
return;
|
return;
|
||||||
QStorage.AddInstance(qName.Text, qAddress.Text);
|
|
||||||
App.showToast("Manual Workspace Added!");
|
QStorage.AddServer(qAddress.Text, int.Parse(qPort.Text));
|
||||||
|
App.showToast("Manual QLab Instance Added!");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,12 @@ namespace qController.ViewModels
|
|||||||
{
|
{
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
if(autoUpdate)
|
if (autoUpdate)
|
||||||
|
{
|
||||||
|
//Log.Debug("[QBrowserViewModel] Auto update scan ran");
|
||||||
this.browser.ProbeForQLabInstances();
|
this.browser.ProbeForQLabInstances();
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
@@ -76,5 +80,14 @@ namespace qController.ViewModels
|
|||||||
{
|
{
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void InitiateScan()
|
||||||
|
{
|
||||||
|
if (!autoUpdate)
|
||||||
|
{
|
||||||
|
Log.Debug("[QBrowserViewModel] Manual Scan Initiated");
|
||||||
|
this.browser.ProbeForQLabInstances();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,12 +134,13 @@
|
|||||||
</ListView.ItemTemplate>
|
</ListView.ItemTemplate>
|
||||||
</ListView>
|
</ListView>
|
||||||
|
|
||||||
<Button Text="Manually Add..."
|
<!--TODO: Manually add "servers" -->
|
||||||
|
<!--<Button Text="Manually Add..."
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
Clicked="AddInstance"
|
Clicked="AddInstance"
|
||||||
BackgroundColor="White"
|
BackgroundColor="White"
|
||||||
StyleClass="PrimaryButton"/>
|
StyleClass="PrimaryButton"/>-->
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
|
|||||||
@@ -19,22 +19,9 @@ namespace qController.Pages
|
|||||||
|
|
||||||
SetupTopBar();
|
SetupTopBar();
|
||||||
qBrowserViewModel = new QBrowserViewModel(new QBrowser());
|
qBrowserViewModel = new QBrowserViewModel(new QBrowser());
|
||||||
qBrowserViewModel.autoUpdate = true;
|
|
||||||
serverListView.BindingContext = qBrowserViewModel;
|
serverListView.BindingContext = qBrowserViewModel;
|
||||||
serverListView.ItemSelected += QWorkspaceSelected;
|
serverListView.ItemSelected += QWorkspaceSelected;
|
||||||
|
|
||||||
|
|
||||||
//Old way of displaying "QInstances"
|
|
||||||
//storageListView.ItemsSource = QStorage.qInstances;
|
|
||||||
//storageListView.ItemTemplate = new DataTemplate(typeof(QInstanceCell));
|
|
||||||
//storageListView.ItemTapped += (object sender, ItemTappedEventArgs e) =>
|
|
||||||
//{
|
|
||||||
// // don't do anything if we just de-selected the row
|
|
||||||
// if (e.Item == null) return;
|
|
||||||
// // do something with e.SelectedItem
|
|
||||||
// ((ListView)sender).SelectedItem = null; // de-select the row
|
|
||||||
//};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetupTopBar()
|
private void SetupTopBar()
|
||||||
@@ -96,6 +83,10 @@ namespace qController.Pages
|
|||||||
else if (args.Command == "support")
|
else if (args.Command == "support")
|
||||||
{
|
{
|
||||||
UserDialogs.Instance.Confirm(new DonatePrompt());
|
UserDialogs.Instance.Confirm(new DonatePrompt());
|
||||||
|
}else if(args.Command == "scan")
|
||||||
|
{
|
||||||
|
qBrowserViewModel.InitiateScan();
|
||||||
|
App.showToast("Scan Initiated.........");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="200"/>
|
<RowDefinition Height="200"/>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="75"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<!--Ordering is based on the order last is on top seems pretty backwards to me-->
|
<!--Ordering is based on the order last is on top seems pretty backwards to me-->
|
||||||
@@ -35,5 +36,60 @@
|
|||||||
|
|
||||||
<qui:QNavBar x:Name="qNavBar"
|
<qui:QNavBar x:Name="qNavBar"
|
||||||
Grid.Row="0"/>
|
Grid.Row="0"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Grid Grid.Row="3"
|
||||||
|
RowSpacing="0"
|
||||||
|
ColumnSpacing="0"
|
||||||
|
BackgroundColor="#808080">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Button Grid.Row="0"
|
||||||
|
Grid.Column="0"
|
||||||
|
Clicked="GoButtonClicked"
|
||||||
|
BackgroundColor="SeaGreen"
|
||||||
|
VerticalOptions="FillAndExpand"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
TextColor="Black"
|
||||||
|
Text="Go"/>
|
||||||
|
|
||||||
|
<Button Grid.Row="0"
|
||||||
|
Grid.Column="1"
|
||||||
|
Clicked="PauseButtonClicked"
|
||||||
|
BackgroundColor="LightYellow"
|
||||||
|
VerticalOptions="FillAndExpand"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
TextColor="Black"
|
||||||
|
Text="Pause"/>
|
||||||
|
|
||||||
|
<Button Grid.Row="0"
|
||||||
|
Grid.Column="2"
|
||||||
|
Clicked="ResumeButtonClicked"
|
||||||
|
BackgroundColor="DarkSlateGray"
|
||||||
|
VerticalOptions="FillAndExpand"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
TextColor="Black"
|
||||||
|
Text="Resume"/>
|
||||||
|
|
||||||
|
<Button Grid.Row="0"
|
||||||
|
Grid.Column="3"
|
||||||
|
Clicked="PanicButtonClicked"
|
||||||
|
BackgroundColor="IndianRed"
|
||||||
|
VerticalOptions="FillAndExpand"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
TextColor="Black"
|
||||||
|
Text="Panic"/>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
@@ -200,5 +200,51 @@ namespace qController
|
|||||||
await Task.Delay(milisec);
|
await Task.Delay(milisec);
|
||||||
actionToExecute();
|
actionToExecute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GoButtonClicked(System.Object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
if(this.connectedWorkspace != null)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace.connected)
|
||||||
|
{
|
||||||
|
this.connectedWorkspace.go();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PauseButtonClicked(System.Object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace != null)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace.connected)
|
||||||
|
{
|
||||||
|
QCue selectedCue = ((QCueViewModel)this.selectedCueFrame.BindingContext).cue;
|
||||||
|
selectedCue.pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResumeButtonClicked(System.Object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace != null)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace.connected)
|
||||||
|
{
|
||||||
|
QCue selectedCue = ((QCueViewModel)this.selectedCueFrame.BindingContext).cue;
|
||||||
|
selectedCue.resume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanicButtonClicked(System.Object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace != null)
|
||||||
|
{
|
||||||
|
if (this.connectedWorkspace.connected)
|
||||||
|
{
|
||||||
|
this.connectedWorkspace.panicAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user