Register Manual Host on first Connect

This commit is contained in:
Florian Märkl 2019-08-20 17:47:52 +02:00
commit 5c52f8b89c
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 31 additions and 10 deletions

View file

@ -96,6 +96,8 @@ class ManualHost
bool GetRegistered() const { return registered; } bool GetRegistered() const { return registered; }
HostMAC GetMAC() const { return registered_mac; } HostMAC GetMAC() const { return registered_mac; }
void Register(const RegisteredHost &registered_host) { this->registered = true; this->registered_mac = registered_host.GetPS4MAC(); }
void SaveToSettings(QSettings *settings) const; void SaveToSettings(QSettings *settings) const;
static ManualHost LoadFromSettings(QSettings *settings); static ManualHost LoadFromSettings(QSettings *settings);
}; };

View file

@ -45,6 +45,8 @@ class RegistDialog : public QDialog
QDialogButtonBox *button_box; QDialogButtonBox *button_box;
QPushButton *register_button; QPushButton *register_button;
RegisteredHost registered_host;
private slots: private slots:
void ValidateInput(); void ValidateInput();
@ -52,6 +54,8 @@ class RegistDialog : public QDialog
explicit RegistDialog(Settings *settings, const QString &host = QString(), QWidget *parent = nullptr); explicit RegistDialog(Settings *settings, const QString &host = QString(), QWidget *parent = nullptr);
~RegistDialog(); ~RegistDialog();
RegisteredHost GetRegisteredHost() { return registered_host; }
public slots: public slots:
void accept() override; void accept() override;
}; };
@ -71,6 +75,8 @@ class RegistExecuteDialog: public QDialog
QPlainTextEdit *log_edit; QPlainTextEdit *log_edit;
QDialogButtonBox *button_box; QDialogButtonBox *button_box;
RegisteredHost registered_host;
void Finished(); void Finished();
private slots: private slots:
@ -81,6 +87,8 @@ class RegistExecuteDialog: public QDialog
public: public:
explicit RegistExecuteDialog(Settings *settings, const ChiakiRegistInfo &regist_info, QWidget *parent = nullptr); explicit RegistExecuteDialog(Settings *settings, const ChiakiRegistInfo &regist_info, QWidget *parent = nullptr);
~RegistExecuteDialog(); ~RegistExecuteDialog();
RegisteredHost GetRegisteredHost() { return registered_host; }
}; };
Q_DECLARE_METATYPE(ChiakiRegistEventType) Q_DECLARE_METATYPE(ChiakiRegistEventType)

View file

@ -202,13 +202,14 @@ void MainWindow::SendWakeup(const DisplayServer *server)
void MainWindow::ServerItemWidgetTriggered() void MainWindow::ServerItemWidgetTriggered()
{ {
auto server = DisplayServerFromSender(); auto s = DisplayServerFromSender();
if(!server) if(!s)
return; return;
auto server = *s;
if(server->registered) if(server.registered)
{ {
if(server->discovered && server->discovery_host.state == CHIAKI_DISCOVERY_HOST_STATE_STANDBY) if(server.discovered && server.discovery_host.state == CHIAKI_DISCOVERY_HOST_STATE_STANDBY)
{ {
int r = QMessageBox::question(this, int r = QMessageBox::question(this,
tr("Start Stream"), tr("Start Stream"),
@ -216,21 +217,27 @@ void MainWindow::ServerItemWidgetTriggered()
QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
if(r == QMessageBox::Yes) if(r == QMessageBox::Yes)
{ {
SendWakeup(server); SendWakeup(&server);
return; return;
} }
else if(r == QMessageBox::Cancel) else if(r == QMessageBox::Cancel)
return; return;
} }
QString host = server->GetHostAddr(); QString host = server.GetHostAddr();
StreamSessionConnectInfo info(settings, host, server->registered_host.GetRPRegistKey(), server->registered_host.GetRPKey()); StreamSessionConnectInfo info(settings, host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey());
new StreamWindow(info); new StreamWindow(info);
} }
else else
{ {
RegistDialog regist_dialog(settings, server->GetHostAddr(), this); RegistDialog regist_dialog(settings, server.GetHostAddr(), this);
regist_dialog.exec(); int r = regist_dialog.exec();
if(r == QDialog::Accepted && !server.discovered) // success
{
ManualHost manual_host = server.manual_host;
manual_host.Register(regist_dialog.GetRegisteredHost());
settings->SetManualHost(manual_host);
}
} }
} }

View file

@ -101,7 +101,10 @@ void RegistDialog::accept()
RegistExecuteDialog execute_dialog(settings, info, this); RegistExecuteDialog execute_dialog(settings, info, this);
int r = execute_dialog.exec(); int r = execute_dialog.exec();
if(r == QDialog::Accepted) if(r == QDialog::Accepted)
close(); {
this->registered_host = execute_dialog.GetRegisteredHost();
QDialog::accept();
}
} }
static void RegistExecuteDialogLogCb(ChiakiLogLevel level, const char *msg, void *user); static void RegistExecuteDialogLogCb(ChiakiLogLevel level, const char *msg, void *user);
@ -155,6 +158,7 @@ void RegistExecuteDialog::Finished()
void RegistExecuteDialog::Success(RegisteredHost host) void RegistExecuteDialog::Success(RegisteredHost host)
{ {
CHIAKI_LOGI(&log, "Successfully registered %s", host.GetPS4Nickname().toLocal8Bit().constData()); CHIAKI_LOGI(&log, "Successfully registered %s", host.GetPS4Nickname().toLocal8Bit().constData());
this->registered_host = host;
if(settings->GetRegisteredHostRegistered(host.GetPS4MAC())) if(settings->GetRegisteredHostRegistered(host.GetPS4MAC()))
{ {