Jack 4d94fbf54f
All checks were successful
Build and push image / Build (push) Successful in 49s
i live in spain but the S is silent
2023-09-28 00:53:27 +01:00

66 lines
2.5 KiB
C#
Executable File

using ksBroadcastingNetwork;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ksBroadcastingTestClient.ClientConnections
{
public class ClientPanelViewModel : KSObservableObject
{
public string IP { get => Get<string>(); set => Set(value); }
public int Port { get => Get<int>(); set => Set(value); }
public string DisplayName { get => Get<string>(); set => Set(value); }
public string ConnectionPw { get => Get<string>(); set => Set(value); }
public string CommandPw { get => Get<string>(); set => Set(value); }
public int RealtimeUpdateIntervalMS { get => Get<int>(); set => Set(value); }
public KSRelayCommand ConnectCmd { get; }
public KSRelayCommand DisconnectCmd { get; }
public ObservableCollection<ClientConnectionViewModel> Clients { get; } = new ObservableCollection<ClientConnectionViewModel>();
public Action<ACCUdpRemoteClient> OnClientConnectedCallback { get; }
public ClientConnectionViewModel SelectedClient { get => Get<ClientConnectionViewModel>(); set => Set(value); }
public ClientPanelViewModel(Action<ACCUdpRemoteClient> onClientConnectedCallback)
{
ConnectCmd = new KSRelayCommand(DoConnect);
DisconnectCmd = new KSRelayCommand(DoDisconnect);
IP = "127.0.0.1";
Port = 9000;
DisplayName = "Your name";
ConnectionPw = "asd";
CommandPw = "";
RealtimeUpdateIntervalMS = 250;
OnClientConnectedCallback = onClientConnectedCallback;
}
public void DoConnect(object parameter = null)
{
var c = new ACCUdpRemoteClient(IP, Port, DisplayName, ConnectionPw, CommandPw, RealtimeUpdateIntervalMS);
Clients.Add(new ClientConnectionViewModel(c, OnClientConnectedCallback));
}
private void DoDisconnect(object obj)
{
if(SelectedClient != null)
{
SelectedClient.Disconnect();
Clients.Remove(SelectedClient);
SelectedClient = null;
}
}
internal void Shutdown()
{
foreach (var client in Clients)
{
client.Disconnect();
}
Clients.Clear();
}
}
}