Show Manual Hosts

This commit is contained in:
Florian Märkl 2019-08-16 21:00:44 +02:00
commit 4f972f211f
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
3 changed files with 54 additions and 18 deletions

View file

@ -30,12 +30,13 @@ class Settings;
struct DisplayServer
{
DiscoveryHost discovery_host;
ManualHost manual_host;
bool discovered;
RegisteredHost registered_host;
bool registered;
QString GetHostAddr() const { return discovered ? discovery_host.host_addr : QString(); }
QString GetHostAddr() const { return discovered ? discovery_host.host_addr : manual_host.GetHost(); }
};
class MainWindow : public QMainWindow

View file

@ -30,6 +30,7 @@
#include <QScrollArea>
#include <QToolBar>
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(Settings *settings, QWidget *parent)
: QMainWindow(parent),
@ -85,6 +86,7 @@ MainWindow::MainWindow(Settings *settings, QWidget *parent)
connect(&discovery_manager, &DiscoveryManager::HostsUpdated, this, &MainWindow::UpdateDisplayServers);
connect(settings, &Settings::RegisteredHostsUpdated, this, &MainWindow::UpdateDisplayServers);
connect(settings, &Settings::ManualHostsUpdated, this, &MainWindow::UpdateDisplayServers);
UpdateDisplayServers();
UpdateDiscoveryEnabled();
@ -120,10 +122,17 @@ void MainWindow::ServerItemWidgetTriggered()
if(server.registered)
{
QString host = server.discovery_host.host_addr; // TODO: check manual
QString host = server.GetHostAddr();
StreamSessionConnectInfo info(settings, host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey());
auto stream_window = new StreamWindow(info);
stream_window->show();
try
{
auto stream_window = new StreamWindow(info);
stream_window->show();
}
catch(const ChiakiException &e)
{
QMessageBox::critical(this, tr("Stream failed"), e.what());
}
}
else
{
@ -149,6 +158,22 @@ void MainWindow::UpdateDisplayServers()
{
display_servers.clear();
for(const auto &host : settings->GetManualHosts())
{
DisplayServer server;
server.discovered = false;
server.manual_host = host;
server.registered = false;
if(host.GetRegistered() && settings->GetRegisteredHostRegistered(host.GetMAC()))
{
server.registered = true;
server.registered_host = settings->GetRegisteredHost(host.GetMAC());
}
display_servers.append(server);
}
for(const auto &host : discovery_manager.GetHosts())
{
DisplayServer server;

View file

@ -67,21 +67,31 @@ void ServerItemWidget::SetSelected(bool selected)
void ServerItemWidget::Update(const DisplayServer &display_server)
{
icon_widget->SetState(display_server.discovered ? display_server.discovery_host.state : CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN);
QString top_text = "";
if(display_server.discovered || display_server.registered)
{
top_text += display_server.discovered ? display_server.discovery_host.host_name : display_server.registered_host.GetPS4Nickname() + "\n";
}
top_text += tr("Address: %1").arg(display_server.GetHostAddr());
if(display_server.discovered || display_server.registered)
{
top_text += "\n" + tr("ID: %1 (%2)").arg(
display_server.discovered ? display_server.discovery_host.GetHostMAC().ToString() : display_server.registered_host.GetPS4MAC().ToString(),
display_server.registered ? tr("registered") : tr("unregistered"));
}
top_text += "\n" + (display_server.discovered ? tr("discovered") : tr("manual")),
top_label->setText(top_text);
if(display_server.discovered)
{
icon_widget->SetState(display_server.discovery_host.state);
top_label->setText(tr("%1\nID: %2\nAddress: %3").arg(
display_server.discovery_host.host_name,
display_server.discovery_host.GetHostMAC().ToString(),
display_server.discovery_host.host_addr));
bottom_label->setText(tr("State: %1\n%2").arg(
chiaki_discovery_host_state_string(display_server.discovery_host.state),
display_server.registered ? tr("registered") : tr("unregistered")));
}
else
{
icon_widget->SetState(CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN);
top_label->setText("");
bottom_label->setText("");
bottom_label->setText(tr("State: %1").arg(
chiaki_discovery_host_state_string(display_server.discovery_host.state)));
}
}