fix: Update user login data on server change

Fixes #317
This commit is contained in:
Lars Toenning
2024-12-16 18:22:37 +01:00
parent 77fed2b8cb
commit 6267cab3aa
5 changed files with 21 additions and 24 deletions

View File

@@ -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

View File

@@ -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, {});
}

View File

@@ -10,13 +10,9 @@
#include <QScopedPointer>
#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();

View File

@@ -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()

View File

@@ -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();