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; }
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;
static ManualHost LoadFromSettings(QSettings *settings);
};

View file

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

View file

@ -202,13 +202,14 @@ void MainWindow::SendWakeup(const DisplayServer *server)
void MainWindow::ServerItemWidgetTriggered()
{
auto server = DisplayServerFromSender();
if(!server)
auto s = DisplayServerFromSender();
if(!s)
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,
tr("Start Stream"),
@ -216,21 +217,27 @@ void MainWindow::ServerItemWidgetTriggered()
QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
if(r == QMessageBox::Yes)
{
SendWakeup(server);
SendWakeup(&server);
return;
}
else if(r == QMessageBox::Cancel)
return;
}
QString host = server->GetHostAddr();
StreamSessionConnectInfo info(settings, host, server->registered_host.GetRPRegistKey(), server->registered_host.GetRPKey());
QString host = server.GetHostAddr();
StreamSessionConnectInfo info(settings, host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey());
new StreamWindow(info);
}
else
{
RegistDialog regist_dialog(settings, server->GetHostAddr(), this);
regist_dialog.exec();
RegistDialog regist_dialog(settings, server.GetHostAddr(), this);
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);
int r = execute_dialog.exec();
if(r == QDialog::Accepted)
close();
{
this->registered_host = execute_dialog.GetRegisteredHost();
QDialog::accept();
}
}
static void RegistExecuteDialogLogCb(ChiakiLogLevel level, const char *msg, void *user);
@ -155,6 +158,7 @@ void RegistExecuteDialog::Finished()
void RegistExecuteDialog::Success(RegisteredHost host)
{
CHIAKI_LOGI(&log, "Successfully registered %s", host.GetPS4Nickname().toLocal8Bit().constData());
this->registered_host = host;
if(settings->GetRegisteredHostRegistered(host.GetPS4MAC()))
{