mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 13:36:48 +08:00
Ref T292, Ref T285 further form improvements
* avoid roundtrips by airline digest signal * style such as removed "private slots" * fixing distributor form's clear
This commit is contained in:
@@ -51,9 +51,11 @@ namespace BlackGui
|
||||
this->setAcceptedMetaTypeIds({qMetaTypeId<CDistributor>(), qMetaTypeId<CDistributorList>()});
|
||||
ui->le_Distributor->setValidator(new CUpperCaseValidator(this));
|
||||
|
||||
bool c = connect(ui->le_Distributor, &QLineEdit::returnPressed, this, &CDbDistributorSelectorComponent::onDataChanged);
|
||||
bool c = connect(ui->le_Distributor, &QLineEdit::editingFinished, this, &CDbDistributorSelectorComponent::onDataChanged, Qt::QueuedConnection);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect");
|
||||
c = connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbDistributorSelectorComponent::onDistributorsRead);
|
||||
// c = connect(ui->le_Distributor, &QLineEdit::returnPressed, this, &CDbDistributorSelectorComponent::returnPressed, Qt::QueuedConnection);
|
||||
// Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect");
|
||||
c = connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbDistributorSelectorComponent::onDistributorsRead, Qt::QueuedConnection);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "Missing connect");
|
||||
Q_UNUSED(c);
|
||||
|
||||
@@ -127,6 +129,7 @@ namespace BlackGui
|
||||
void CDbDistributorSelectorComponent::clear()
|
||||
{
|
||||
ui->le_Distributor->clear();
|
||||
m_currentDistributor = CDistributor();
|
||||
}
|
||||
|
||||
void CDbDistributorSelectorComponent::dragEnterEvent(QDragEnterEvent *event)
|
||||
@@ -197,11 +200,11 @@ namespace BlackGui
|
||||
|
||||
void CDbDistributorSelectorComponent::onDataChanged()
|
||||
{
|
||||
if (!sGui) { return; }
|
||||
QString keyOrAlias(ui->le_Distributor->text().trimmed().toUpper());
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return; }
|
||||
const QString keyOrAlias(ui->le_Distributor->text().trimmed().toUpper());
|
||||
if (keyOrAlias.isEmpty()) { return; }
|
||||
CDistributor d(sGui->getWebDataServices()->getDistributors().findByKeyOrAlias(keyOrAlias));
|
||||
this->setDistributor(d);
|
||||
const CDistributor distributor(sGui->getWebDataServices()->getDistributors().findByKeyOrAlias(keyOrAlias));
|
||||
this->setDistributor(distributor);
|
||||
}
|
||||
|
||||
void CDbDistributorSelectorComponent::onCompleterActivated(const QString &distributorKeyOrAlias)
|
||||
|
||||
@@ -63,8 +63,8 @@ namespace BlackGui
|
||||
|
||||
void CAirlineIcaoForm::setValue(const CAirlineIcaoCode &icao)
|
||||
{
|
||||
if (m_originalCode == icao) { return; }
|
||||
m_originalCode = icao;
|
||||
if (m_currentCode == icao) { return; }
|
||||
m_currentCode = icao;
|
||||
|
||||
ui->selector_AirlineDesignator->setAirlineIcao(icao);
|
||||
ui->selector_AirlineName->setAirlineIcao(icao);
|
||||
@@ -89,15 +89,15 @@ namespace BlackGui
|
||||
// sometimes artefacts when icon is displayed
|
||||
this->repaint();
|
||||
|
||||
if (m_originalCode.hasCompleteData())
|
||||
if (m_currentCode.hasCompleteData())
|
||||
{
|
||||
emit airlineChanged(m_originalCode);
|
||||
emit this->airlineChanged(m_currentCode);
|
||||
}
|
||||
}
|
||||
|
||||
CAirlineIcaoCode CAirlineIcaoForm::getValue() const
|
||||
{
|
||||
CAirlineIcaoCode code(m_originalCode);
|
||||
CAirlineIcaoCode code(m_currentCode);
|
||||
code.setVirtualAirline(ui->cb_Va->isChecked());
|
||||
code.setMilitary(ui->cb_Military->isChecked());
|
||||
code.setCountry(ui->country_Selector->getCountry());
|
||||
@@ -164,7 +164,7 @@ namespace BlackGui
|
||||
|
||||
void CAirlineIcaoForm::resetValue()
|
||||
{
|
||||
this->setValue(m_originalCode);
|
||||
this->setValue(m_currentCode);
|
||||
}
|
||||
|
||||
void CAirlineIcaoForm::jsonPasted(const QString &json)
|
||||
@@ -209,11 +209,7 @@ namespace BlackGui
|
||||
|
||||
void CAirlineIcaoForm::onIdEntered()
|
||||
{
|
||||
if (!sGui || !sGui->hasWebDataServices())
|
||||
{
|
||||
ui->le_Id->undo();
|
||||
return;
|
||||
}
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->hasWebDataServices()) { return; }
|
||||
|
||||
const int id = ui->le_Id->text().toInt();
|
||||
const CAirlineIcaoCode icao = sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(id);
|
||||
@@ -224,5 +220,10 @@ namespace BlackGui
|
||||
}
|
||||
this->setValue(icao);
|
||||
}
|
||||
|
||||
void CAirlineIcaoForm::emitAirlineChangedDigest()
|
||||
{
|
||||
emit this->airlineChangedDigest(m_currentCode);
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -15,14 +15,13 @@
|
||||
#include "blackgui/blackguiexport.h"
|
||||
#include "blackgui/editors/form.h"
|
||||
#include "blackmisc/aviation/airlineicaocode.h"
|
||||
#include "blackmisc/digestsignal.h"
|
||||
#include "blackmisc/statusmessagelist.h"
|
||||
#include "blackmisc/variant.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QScopedPointer>
|
||||
|
||||
class QWidget;
|
||||
|
||||
namespace Ui { class CAirlineIcaoForm; }
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -71,6 +70,9 @@ namespace BlackGui
|
||||
//! Airline has been changed
|
||||
void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
|
||||
|
||||
//! Airline has been changed
|
||||
void airlineChangedDigest(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
|
||||
|
||||
protected:
|
||||
//! \copydoc CForm::jsonPasted
|
||||
virtual void jsonPasted(const QString &json) override;
|
||||
@@ -81,9 +83,13 @@ namespace BlackGui
|
||||
//! Id entered
|
||||
void onIdEntered();
|
||||
|
||||
//! Emit the digest signal
|
||||
void emitAirlineChangedDigest();
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CAirlineIcaoForm> ui;
|
||||
BlackMisc::Aviation::CAirlineIcaoCode m_originalCode; //!< object allowing to override values
|
||||
BlackMisc::CDigestSignal m_digestChanges { this, &CAirlineIcaoForm::airlineChanged, &CAirlineIcaoForm::emitAirlineChangedDigest, 500, 3 };
|
||||
BlackMisc::Aviation::CAirlineIcaoCode m_currentCode; //!< object allowing to override values
|
||||
};
|
||||
} // ns
|
||||
} //ns
|
||||
|
||||
@@ -34,14 +34,15 @@ namespace BlackGui
|
||||
ui(new Ui::CDistributorForm)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setFocusProxy(ui->distributor_Selector);
|
||||
this->setFocusProxy(ui->comp_DistributorSelector);
|
||||
ui->le_Updated->setReadOnly(true);
|
||||
ui->distributor_Selector->withDistributorDescription(false);
|
||||
ui->comp_DistributorSelector->withDistributorDescription(false);
|
||||
ui->lai_Id->set(CIcons::appDistributors16(), "Id:");
|
||||
|
||||
// drag and drop
|
||||
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CDistributorForm::ps_droppedCode);
|
||||
connect(ui->distributor_Selector, &CDbDistributorSelectorComponent::changedDistributor, this, &CDistributorForm::setValue);
|
||||
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CDistributorForm::onDroppedCode);
|
||||
connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::changedDistributor, this, &CDistributorForm::setValue);
|
||||
// connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::returnPressed, this, &CDistributorForm::onReturnPressed);
|
||||
ui->drop_DropData->setInfoText("<drop distributor>");
|
||||
ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CDistributor>(), qMetaTypeId<CDistributorList>()});
|
||||
}
|
||||
@@ -51,10 +52,10 @@ namespace BlackGui
|
||||
|
||||
bool CDistributorForm::setValue(const BlackMisc::Simulation::CDistributor &distributor)
|
||||
{
|
||||
const CDistributor currentDistributor(this->getValue());
|
||||
if (currentDistributor == distributor) { return false; }
|
||||
if (m_currentDistributor == distributor) { return false; }
|
||||
m_currentDistributor = distributor;
|
||||
|
||||
ui->distributor_Selector->setDistributor(distributor);
|
||||
ui->comp_DistributorSelector->setDistributor(distributor);
|
||||
ui->le_Description->setText(distributor.getDescription());
|
||||
ui->le_Alias1->setText(distributor.getAlias1());
|
||||
ui->le_Alias2->setText(distributor.getAlias2());
|
||||
@@ -69,7 +70,7 @@ namespace BlackGui
|
||||
|
||||
CDistributor CDistributorForm::getValue() const
|
||||
{
|
||||
CDistributor distributor(ui->distributor_Selector->getDistributor());
|
||||
CDistributor distributor(ui->comp_DistributorSelector->getDistributor());
|
||||
distributor.setAlias1(ui->le_Alias1->text());
|
||||
distributor.setAlias2(ui->le_Alias2->text());
|
||||
distributor.setDescription(ui->le_Description->text());
|
||||
@@ -105,7 +106,7 @@ namespace BlackGui
|
||||
ui->le_Alias1->setReadOnly(readOnly);
|
||||
ui->le_Alias2->setReadOnly(readOnly);
|
||||
ui->le_Description->setReadOnly(readOnly);
|
||||
ui->distributor_Selector->setReadOnly(readOnly);
|
||||
ui->comp_DistributorSelector->setReadOnly(readOnly);
|
||||
ui->drop_DropData->setVisible(!readOnly);
|
||||
this->forceStyleSheetUpdate();
|
||||
}
|
||||
@@ -113,17 +114,18 @@ namespace BlackGui
|
||||
void CDistributorForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(true);
|
||||
ui->distributor_Selector->setReadOnly(false);
|
||||
ui->comp_DistributorSelector->setReadOnly(false);
|
||||
ui->drop_DropData->setVisible(true);
|
||||
}
|
||||
|
||||
void CDistributorForm::clear()
|
||||
{
|
||||
setValue(CDistributor());
|
||||
ui->distributor_Selector->setReadOnly(false);
|
||||
this->setValue(CDistributor());
|
||||
ui->comp_DistributorSelector->clear();
|
||||
ui->comp_DistributorSelector->setReadOnly(false);
|
||||
}
|
||||
|
||||
void CDistributorForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped)
|
||||
void CDistributorForm::onDroppedCode(const BlackMisc::CVariant &variantDropped)
|
||||
{
|
||||
CDistributor distributor;
|
||||
if (variantDropped.canConvert<CDistributor>())
|
||||
@@ -142,5 +144,10 @@ namespace BlackGui
|
||||
}
|
||||
this->setValue(distributor);
|
||||
}
|
||||
|
||||
bool CDistributorForm::hasAnyUiDetailsValues() const
|
||||
{
|
||||
return !(ui->le_Alias1->text().isEmpty() && ui->le_Alias2->text().isEmpty() && ui->le_Description->text().isEmpty() && ui->le_Updated->text().isEmpty());
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <QObject>
|
||||
#include <QScopedPointer>
|
||||
|
||||
class QWidget;
|
||||
namespace Ui { class CDistributorForm; }
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -30,8 +29,7 @@ namespace BlackGui
|
||||
/*!
|
||||
* Distributor form
|
||||
*/
|
||||
class BLACKGUI_EXPORT CDistributorForm :
|
||||
public CForm
|
||||
class BLACKGUI_EXPORT CDistributorForm : public CForm
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -61,7 +59,6 @@ namespace BlackGui
|
||||
//! Clear
|
||||
void clear();
|
||||
|
||||
public slots:
|
||||
//! Set value
|
||||
bool setValue(const BlackMisc::Simulation::CDistributor &distributor = BlackMisc::Simulation::CDistributor());
|
||||
|
||||
@@ -69,12 +66,15 @@ namespace BlackGui
|
||||
//! \copydoc CForm::jsonPasted
|
||||
virtual void jsonPasted(const QString &json) override;
|
||||
|
||||
private slots:
|
||||
//! Variant has been dropped
|
||||
void ps_droppedCode(const BlackMisc::CVariant &variantDropped);
|
||||
|
||||
private:
|
||||
//! Variant has been dropped
|
||||
void onDroppedCode(const BlackMisc::CVariant &variantDropped);
|
||||
|
||||
//! Any UI values in the details fields
|
||||
bool hasAnyUiDetailsValues() const;
|
||||
|
||||
QScopedPointer<Ui::CDistributorForm> ui;
|
||||
BlackMisc::Simulation::CDistributor m_currentDistributor;
|
||||
bool m_readOnly = false;
|
||||
};
|
||||
} // ns
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>297</width>
|
||||
<height>200</height>
|
||||
<width>254</width>
|
||||
<height>185</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
@@ -114,7 +114,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="BlackGui::Components::CDbDistributorSelectorComponent" name="distributor_Selector">
|
||||
<widget class="BlackGui::Components::CDbDistributorSelectorComponent" name="comp_DistributorSelector">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@@ -173,7 +173,7 @@
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>distributor_Selector</tabstop>
|
||||
<tabstop>comp_DistributorSelector</tabstop>
|
||||
<tabstop>le_Description</tabstop>
|
||||
<tabstop>le_Alias1</tabstop>
|
||||
<tabstop>le_Alias2</tabstop>
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace BlackGui
|
||||
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CLiveryForm::onIdEntered);
|
||||
|
||||
// selector
|
||||
connect(ui->comp_LiverySelector, &CDbLiverySelectorComponent::changedLivery, this, &CLiveryForm::setValue);
|
||||
connect(ui->comp_LiverySelector, &CDbLiverySelectorComponent::changedLivery, this, &CLiveryForm::setValue, Qt::QueuedConnection);
|
||||
|
||||
// drag and drop, paste
|
||||
connect(ui->tb_Paste, &QToolButton::clicked, this, &CLiveryForm::pasted);
|
||||
@@ -59,7 +59,7 @@ namespace BlackGui
|
||||
ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CLivery>(), qMetaTypeId<CLiveryList>()});
|
||||
|
||||
// embedded form
|
||||
connect(ui->editor_AirlineIcao, &CAirlineIcaoForm::airlineChanged, this, &CLiveryForm::onAirlineChanged);
|
||||
connect(ui->editor_AirlineIcao, &CAirlineIcaoForm::airlineChangedDigest, this, &CLiveryForm::onAirlineChanged, Qt::QueuedConnection);
|
||||
|
||||
// Set as temp.livery or search color
|
||||
connect(ui->pb_TempLivery, &QPushButton::pressed, this, &CLiveryForm::setTemporaryLivery);
|
||||
@@ -228,6 +228,7 @@ namespace BlackGui
|
||||
|
||||
void CLiveryForm::onAirlineChanged(const CAirlineIcaoCode &code)
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return; }
|
||||
if (!code.hasCompleteData()) { return; }
|
||||
if (!code.hasValidDbKey()) { return; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user