From 6267cab3aacaf64cb3257883ef204ea93f2b1077 Mon Sep 17 00:00:00 2001 From: Lars Toenning Date: Mon, 16 Dec 2024 18:22:37 +0100 Subject: [PATCH] fix: Update user login data on server change Fixes #317 --- src/gui/components/logincomponent.cpp | 6 +++-- .../components/networkdetailscomponent.cpp | 8 +++++++ src/gui/components/networkdetailscomponent.h | 7 +++--- src/gui/editors/pilotform.cpp | 22 +++++-------------- src/gui/editors/pilotform.h | 2 +- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/gui/components/logincomponent.cpp b/src/gui/components/logincomponent.cpp index 33cc6df49..eb106c2fa 100644 --- a/src/gui/components/logincomponent.cpp +++ b/src/gui/components/logincomponent.cpp @@ -79,6 +79,8 @@ namespace swift::gui::components Qt::QueuedConnection); connect(ui->comp_NetworkDetails, &CNetworkDetailsComponent::requestNetworkSettings, this, &CLoginComponent::requestNetworkSettings, Qt::QueuedConnection); + connect(ui->comp_NetworkDetails, &CNetworkDetailsComponent::currentServerChanged, this, + &CLoginComponent::onSelectedServerChanged, Qt::QueuedConnection); // overlay this->setOverlaySizeFactors(0.8, 0.5); @@ -298,7 +300,7 @@ namespace swift::gui::components if (!m_updatePilotOnServerChanges) { return; } const bool vatsim = this->isVatsimNetworkTabSelected(); const CUser user = vatsim ? this->getCurrentVatsimServer().getUser() : server.getUser(); - ui->form_Pilot->setUser(user, true); + ui->form_Pilot->setUser(user); } void CLoginComponent::onSimulatorStatusChanged(int status) @@ -333,7 +335,7 @@ namespace swift::gui::components if (!m_updatePilotOnServerChanges) { return; } const bool vatsim = this->isVatsimNetworkTabSelected(); const CServer server = vatsim ? this->getCurrentVatsimServer() : this->getCurrentOtherServer(); - ui->form_Pilot->setUser(server.getUser(), true); + ui->form_Pilot->setUser(server.getUser()); } bool CLoginComponent::hasValidContexts() const diff --git a/src/gui/components/networkdetailscomponent.cpp b/src/gui/components/networkdetailscomponent.cpp index 4137e1cd3..8a00d25dc 100644 --- a/src/gui/components/networkdetailscomponent.cpp +++ b/src/gui/components/networkdetailscomponent.cpp @@ -52,6 +52,14 @@ namespace swift::gui::components const int tab = m_networkSetup.wasLastUsedWithOtherServer() ? LoginOthers : LoginVATSIM; ui->tw_Network->setCurrentIndex(tab); + connect( + ui->tw_Network, &QTabWidget::currentChanged, this, + [this](int) { emit this->currentServerChanged(getCurrentServer()); }, Qt::QueuedConnection); + connect(ui->comp_OtherServers, &CServerListSelector::serverChanged, this, + &CNetworkDetailsComponent::currentServerChanged, Qt::QueuedConnection); + connect(ui->comp_VatsimServers, &CServerListSelector::serverChanged, this, + &CNetworkDetailsComponent::currentServerChanged, Qt::QueuedConnection); + this->reloadOtherServersSetup(); this->onWebServiceDataRead(CEntityFlags::VatsimDataFile, CEntityFlags::ReadFinished, -1, {}); } diff --git a/src/gui/components/networkdetailscomponent.h b/src/gui/components/networkdetailscomponent.h index 84c3220d4..2ebd8b3d9 100644 --- a/src/gui/components/networkdetailscomponent.h +++ b/src/gui/components/networkdetailscomponent.h @@ -10,13 +10,9 @@ #include #include "core/data/networksetup.h" -#include "misc/datacache.h" -#include "misc/network/connectionstatus.h" #include "misc/network/data/lastserver.h" #include "misc/network/entityflags.h" -#include "misc/network/fsdsetup.h" #include "misc/network/loginmode.h" -#include "misc/settingscache.h" namespace Ui { @@ -77,6 +73,9 @@ namespace swift::gui::components //! Request network settings void requestNetworkSettings(); + //! Current selected server changed + void currentServerChanged(const misc::network::CServer &server); + private: //! Settings have been changed void reloadOtherServersSetup(); diff --git a/src/gui/editors/pilotform.cpp b/src/gui/editors/pilotform.cpp index d385c038e..9f4e832ec 100644 --- a/src/gui/editors/pilotform.cpp +++ b/src/gui/editors/pilotform.cpp @@ -56,25 +56,13 @@ namespace swift::gui::editors return user; } - bool CPilotForm::setUser(const CUser &user, bool ignoreEmptyUser) + void CPilotForm::setUser(const CUser &user) { - if (ignoreEmptyUser && user.isNull()) { return false; } - if (user.isValid()) - { - ui->le_Id->setText(user.getId()); - ui->le_Password->setText(user.getPassword()); - ui->le_RealName->setText(user.getRealName()); - if (user.hasHomeBase()) { ui->comp_HomeAirport->setAirportIcaoCode(user.getHomeBase()); } - } - else if (CBuildConfig::isLocalDeveloperDebugBuild()) - { - ui->le_Id->setText("1288459"); - ui->le_Password->setText("4769"); - ui->comp_HomeAirport->setAirportIcaoCode("LOWI"); - ui->le_RealName->setText("Swift Project"); - } + ui->le_Id->setText(user.getId()); + ui->le_Password->setText(user.getPassword()); + ui->le_RealName->setText(user.getRealName()); + if (user.hasHomeBase()) { ui->comp_HomeAirport->setAirportIcaoCode(user.getHomeBase()); } this->validate(); - return true; } void CPilotForm::clear() diff --git a/src/gui/editors/pilotform.h b/src/gui/editors/pilotform.h index 422b67ca5..5a94804ea 100644 --- a/src/gui/editors/pilotform.h +++ b/src/gui/editors/pilotform.h @@ -40,7 +40,7 @@ namespace swift::gui::editors swift::misc::network::CUser getUser() const; //! Set user values - bool setUser(const swift::misc::network::CUser &user, bool ignoreEmptyUser = false); + void setUser(const swift::misc::network::CUser &user); //! Clear values void clear();