From 4f972f211fe2f4161c11e680acd03fc6650f5e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Fri, 16 Aug 2019 21:00:44 +0200 Subject: [PATCH] Show Manual Hosts --- gui/include/mainwindow.h | 3 ++- gui/src/mainwindow.cpp | 31 ++++++++++++++++++++++++++--- gui/src/serveritemwidget.cpp | 38 +++++++++++++++++++++++------------- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/gui/include/mainwindow.h b/gui/include/mainwindow.h index c4455bd..8bb9c96 100644 --- a/gui/include/mainwindow.h +++ b/gui/include/mainwindow.h @@ -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 diff --git a/gui/src/mainwindow.cpp b/gui/src/mainwindow.cpp index cf0c442..c099d0f 100644 --- a/gui/src/mainwindow.cpp +++ b/gui/src/mainwindow.cpp @@ -30,6 +30,7 @@ #include #include #include +#include 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; diff --git a/gui/src/serveritemwidget.cpp b/gui/src/serveritemwidget.cpp index 8935486..a6c1df0 100644 --- a/gui/src/serveritemwidget.cpp +++ b/gui/src/serveritemwidget.cpp @@ -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))); } }