mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-19 21:13:12 -07:00
Register Manual Host on first Connect
This commit is contained in:
parent
d72148cb99
commit
5c52f8b89c
4 changed files with 31 additions and 10 deletions
|
@ -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 ®istered_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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 ®ist_info, QWidget *parent = nullptr);
|
explicit RegistExecuteDialog(Settings *settings, const ChiakiRegistInfo ®ist_info, QWidget *parent = nullptr);
|
||||||
~RegistExecuteDialog();
|
~RegistExecuteDialog();
|
||||||
|
|
||||||
|
RegisteredHost GetRegisteredHost() { return registered_host; }
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(ChiakiRegistEventType)
|
Q_DECLARE_METATYPE(ChiakiRegistEventType)
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue