mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
refs #575, using livery completer
* embedded in form * rectified readOnly / only for selection * added uper case validator where missing * selecting airline triggers loading of default livery
This commit is contained in:
@@ -125,12 +125,10 @@ namespace BlackGui
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "missing converter");
|
||||
this->connect(c, static_cast<void (QCompleter::*)(const QString &)>(&QCompleter::activated), this, &CDbAirlineIcaoSelectorBase::ps_completerActivated);
|
||||
m_completer.reset(c); // deletes any old completer
|
||||
this->setReadOnly(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_completer.reset(nullptr);
|
||||
this->setReadOnly(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
#include "dbairlineicaoselectorcomponent.h"
|
||||
#include "ui_dbairlineicaoselectorcomponent.h"
|
||||
#include "blackgui/guiutility.h"
|
||||
#include "blackgui/uppercasevalidator.h"
|
||||
#include "blackmisc/datastoreutility.h"
|
||||
#include <QMimeData>
|
||||
|
||||
|
||||
using namespace BlackGui;
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Aviation;
|
||||
@@ -27,6 +27,7 @@ namespace BlackGui
|
||||
ui(new Ui::CDbAirlineIcaoSelectorComponent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->le_Airline->setValidator(new CUpperCaseValidator(this));
|
||||
connect(ui->le_Airline, &QLineEdit::returnPressed, this, &CDbAirlineIcaoSelectorComponent::ps_dataChanged);
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace BlackGui
|
||||
//! \copydoc CDbAirlineIcaoSelectorBase::setAirlineIcao
|
||||
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
|
||||
|
||||
//! Display distributor description
|
||||
//! Display ICAO description
|
||||
void withIcaoDescription(bool description);
|
||||
|
||||
//! \copydoc CDbAirlineIcaoSelectorBase::clear
|
||||
|
||||
@@ -95,7 +95,9 @@ namespace BlackGui
|
||||
{
|
||||
this->ui->le_CountryIso->setReadOnly(readOnly);
|
||||
this->ui->le_CountryName->setReadOnly(readOnly);
|
||||
this->ui->le_CountryName->setEnabled((!readOnly));
|
||||
this->ui->lbl_CountryIcon->setVisible(!readOnly);
|
||||
this->setEnabled(!readOnly);
|
||||
}
|
||||
|
||||
bool CDbCountrySelectorComponent::isSet() const
|
||||
@@ -165,12 +167,10 @@ namespace BlackGui
|
||||
|
||||
this->ui->le_CountryName->setCompleter(c);
|
||||
m_completerCountryNames.reset(c); // deletes any old completer
|
||||
this->setReadOnly(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_completerCountryNames.reset(nullptr);
|
||||
this->setReadOnly(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,12 +164,12 @@ namespace BlackGui
|
||||
this->connect(c, static_cast<void (QCompleter::*)(const QString &)>(&QCompleter::activated), this, &CDbDistributorSelectorComponent::ps_completerActivated);
|
||||
|
||||
this->ui->le_Distributor->setCompleter(c);
|
||||
m_completerDistributorNames.reset(c); // deletes any old completer
|
||||
m_completerDistributors.reset(c); // deletes any old completer
|
||||
this->setReadOnly(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_completerDistributorNames.reset(nullptr);
|
||||
this->m_completerDistributors.reset(nullptr);
|
||||
this->setReadOnly(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,10 +96,10 @@ namespace BlackGui
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CDbDistributorSelectorComponent> ui;
|
||||
QScopedPointer<QCompleter> m_completerDistributorNames;
|
||||
QMetaObject::Connection m_signalConnection;
|
||||
QScopedPointer<QCompleter> m_completerDistributors;
|
||||
QMetaObject::Connection m_signalConnection;
|
||||
BlackMisc::Simulation::CDistributor m_currentDistributor;
|
||||
};
|
||||
}
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
#endif // guard
|
||||
|
||||
@@ -62,9 +62,9 @@ namespace BlackGui
|
||||
ui->tvp_OwnAircraftModels->updateContainerMaybeAsync(this->m_cachedOwnModels.get());
|
||||
|
||||
// how to display forms
|
||||
ui->editor_AircraftIcao->setMappingMode(true);
|
||||
ui->editor_Distributor->setMappingMode(true);
|
||||
ui->editor_Livery->setMappingMode(true);
|
||||
ui->editor_AircraftIcao->setSelectOnly();
|
||||
ui->editor_Distributor->setSelectOnly();
|
||||
ui->editor_Livery->setSelectOnly();
|
||||
|
||||
this->ui->tw_ModelsToBeMapped->setTabIcon(TabStash, CIcons::appDbStash16());
|
||||
this->ui->tw_ModelsToBeMapped->setTabIcon(TabOwnModels, CIcons::appModels16());
|
||||
|
||||
@@ -127,6 +127,16 @@ namespace BlackGui
|
||||
this->ui->cb_Legacy->setCheckable(!readOnly);
|
||||
this->ui->cb_Military->setCheckable(!readOnly);
|
||||
this->ui->cb_RealWorld->setCheckable(!readOnly);
|
||||
|
||||
this->ui->cb_Wtc->setEnabled(!readOnly);
|
||||
this->ui->cb_Rank->setEnabled(!readOnly);
|
||||
this->ui->combined_TypeSelector->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void CAircraftIcaoForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(true);
|
||||
this->ui->aircraft_Selector->setReadOnly(false);
|
||||
}
|
||||
|
||||
void CAircraftIcaoForm::clear()
|
||||
@@ -134,12 +144,6 @@ namespace BlackGui
|
||||
setValue(CAircraftIcaoCode());
|
||||
}
|
||||
|
||||
void CAircraftIcaoForm::setMappingMode(bool mappingMode)
|
||||
{
|
||||
this->setReadOnly(mappingMode);
|
||||
this->ui->aircraft_Selector->setReadOnly(!mappingMode);
|
||||
}
|
||||
|
||||
void CAircraftIcaoForm::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
|
||||
@@ -55,12 +55,12 @@ namespace BlackGui
|
||||
//! \copydoc CForm::setReadOnly
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
|
||||
//! \copydoc CForm::setSelectOnly
|
||||
virtual void setSelectOnly() override;
|
||||
|
||||
//! Clear
|
||||
void clear();
|
||||
|
||||
//! Mapping mode
|
||||
void setMappingMode(bool mappingMode);
|
||||
|
||||
//! \copydoc CWebDataServicesAware::setProvider
|
||||
virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override;
|
||||
|
||||
|
||||
@@ -45,15 +45,23 @@ namespace BlackGui
|
||||
|
||||
void CAirlineIcaoForm::setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao)
|
||||
{
|
||||
this->m_originalCode = icao;
|
||||
this->ui->selector_AirlineDesignator->setAirlineIcao(icao);
|
||||
this->ui->selector_AirlineName->setAirlineIcao(icao);
|
||||
this->ui->le_Id->setText(icao.getDbKeyAsString());
|
||||
this->ui->le_TelephonyDesignator->setText(icao.getTelephonyDesignator());
|
||||
this->ui->le_Updated->setText(icao.getFormattedUtcTimestampYmdhms());
|
||||
this->ui->cb_Va->setChecked(icao.isVirtualAirline());
|
||||
this->ui->country_Selector->setCountry(icao.getCountry());
|
||||
this->ui->lbl_AirlineIcon->setPixmap(icao.toPixmap());
|
||||
if (this->m_originalCode != icao)
|
||||
{
|
||||
this->m_originalCode = icao;
|
||||
this->ui->selector_AirlineDesignator->setAirlineIcao(icao);
|
||||
this->ui->selector_AirlineName->setAirlineIcao(icao);
|
||||
this->ui->le_Id->setText(icao.getDbKeyAsString());
|
||||
this->ui->le_TelephonyDesignator->setText(icao.getTelephonyDesignator());
|
||||
this->ui->le_Updated->setText(icao.getFormattedUtcTimestampYmdhms());
|
||||
this->ui->cb_Va->setChecked(icao.isVirtualAirline());
|
||||
this->ui->country_Selector->setCountry(icao.getCountry());
|
||||
this->ui->lbl_AirlineIcon->setPixmap(icao.toPixmap());
|
||||
|
||||
if (this->m_originalCode.hasCompleteData())
|
||||
{
|
||||
emit airlineChanged(this->m_originalCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CAirlineIcaoCode CAirlineIcaoForm::getValue() const
|
||||
@@ -99,6 +107,13 @@ namespace BlackGui
|
||||
this->ui->cb_Va->setEnabled(!readOnly);
|
||||
}
|
||||
|
||||
void CAirlineIcaoForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(true);
|
||||
this->ui->selector_AirlineDesignator->setReadOnly(false);
|
||||
this->ui->selector_AirlineName->setReadOnly(false);
|
||||
}
|
||||
|
||||
void CAirlineIcaoForm::clear()
|
||||
{
|
||||
setValue(CAirlineIcaoCode());
|
||||
|
||||
@@ -58,12 +58,19 @@ namespace BlackGui
|
||||
//! \copydoc CForm::setReadOnly
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
|
||||
//! \copydoc CForm::setSelectOnly
|
||||
virtual void setSelectOnly() override;
|
||||
|
||||
//! Clear
|
||||
void clear();
|
||||
|
||||
//! \copydoc CWebDataReaderAware::setProvider
|
||||
virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override;
|
||||
|
||||
signals:
|
||||
//! Airline has been changed
|
||||
void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
|
||||
|
||||
private slots:
|
||||
//! Variant has been dropped
|
||||
void ps_droppedCode(const BlackMisc::CVariant &variantDropped);
|
||||
|
||||
@@ -89,17 +89,18 @@ namespace BlackGui
|
||||
this->ui->distributor_Selector->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void CDistributorForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(true);
|
||||
this->ui->distributor_Selector->setReadOnly(false);
|
||||
}
|
||||
|
||||
void CDistributorForm::clear()
|
||||
{
|
||||
setValue(CDistributor());
|
||||
this->ui->distributor_Selector->setReadOnly(false);
|
||||
}
|
||||
|
||||
void CDistributorForm::setMappingMode(bool mappingMode)
|
||||
{
|
||||
this->setReadOnly(mappingMode);
|
||||
}
|
||||
|
||||
void CDistributorForm::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
|
||||
@@ -53,14 +53,14 @@ namespace BlackGui
|
||||
bool isDropAllowed() const;
|
||||
|
||||
//! \copydoc CForm::setReadOnly
|
||||
void setReadOnly(bool readOnly);
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
|
||||
//! \copydoc CForm::setSelectOnly
|
||||
virtual void setSelectOnly() override;
|
||||
|
||||
//! Clear
|
||||
void clear();
|
||||
|
||||
//! Mapping mode
|
||||
void setMappingMode(bool mappingMode);
|
||||
|
||||
//! \copydoc CWebDataReaderAware::setProvider
|
||||
virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider);
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@ namespace BlackGui
|
||||
//! Set editable
|
||||
virtual void setReadOnly(bool readOnly) = 0;
|
||||
|
||||
//! Read only, but entity can be selected (normally used in mapping).
|
||||
//! Use setReadOnly to reset this very state
|
||||
virtual void setSelectOnly() = 0;
|
||||
|
||||
//! Is read only?
|
||||
bool isReadOnly() const { return m_readOnly; }
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Aviation;
|
||||
using namespace BlackGui::Components;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -26,11 +27,18 @@ namespace BlackGui
|
||||
this->ui->le_Id->setReadOnly(true);
|
||||
this->ui->le_Updated->setReadOnly(true);
|
||||
this->ui->lai_Id->set(CIcons::appLiveries16(), "Id:");
|
||||
this->ui->livery_Selector->withLiveryDescription(false);
|
||||
|
||||
// selector
|
||||
connect(this->ui->livery_Selector, &CDbLiverySelectorComponent::changedLivery, this, &CLiveryForm::setValue);
|
||||
|
||||
// drag and drop
|
||||
connect(this->ui->drop_DropData, &CDropSite::droppedValueObject, this, &CLiveryForm::ps_droppedLivery);
|
||||
this->ui->drop_DropData->setInfoText("<drop livery>");
|
||||
this->ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CLivery>(), qMetaTypeId<CLiveryList>()});
|
||||
|
||||
// embedded form
|
||||
connect(this->ui->editor_AirlineIcao, &CAirlineIcaoForm::airlineChanged, this, &CLiveryForm::ps_airlineChanged);
|
||||
}
|
||||
|
||||
CLiveryForm::~CLiveryForm() { }
|
||||
@@ -39,23 +47,22 @@ namespace BlackGui
|
||||
{
|
||||
CWebDataServicesAware::setProvider(provider);
|
||||
this->ui->editor_AirlineIcao->setProvider(provider);
|
||||
this->ui->livery_Selector->setProvider(provider);
|
||||
}
|
||||
|
||||
CLivery CLiveryForm::getValue() const
|
||||
{
|
||||
CLivery livery(this->m_originalLivery);
|
||||
CLivery livery(this->ui->livery_Selector->getLivery());
|
||||
CAirlineIcaoCode airline(this->ui->editor_AirlineIcao->getValue());
|
||||
livery.setAirlineIcaoCode(airline);
|
||||
livery.setCombinedCode(this->ui->le_Code->text());
|
||||
livery.setDescription(this->ui->le_Description->text());
|
||||
return livery;
|
||||
}
|
||||
|
||||
void CLiveryForm::setValue(const CLivery &livery)
|
||||
{
|
||||
this->m_originalLivery = livery;
|
||||
this->ui->livery_Selector->setLivery(livery);
|
||||
this->ui->le_Id->setText(livery.getDbKeyAsString());
|
||||
this->ui->le_Code->setText(livery.getCombinedCode());
|
||||
this->ui->le_Description->setText(livery.getDescription());
|
||||
this->ui->le_Updated->setText(livery.getFormattedUtcTimestampYmdhms());
|
||||
this->ui->color_Fuselage->setColor(livery.getColorFuselage());
|
||||
@@ -94,15 +101,18 @@ namespace BlackGui
|
||||
void CLiveryForm::setReadOnly(bool readOnly)
|
||||
{
|
||||
this->m_readOnly = readOnly;
|
||||
this->ui->le_Code->setReadOnly(readOnly);
|
||||
this->ui->livery_Selector->setReadOnly(readOnly);
|
||||
this->ui->le_Description->setReadOnly(readOnly);
|
||||
this->ui->color_Fuselage->setReadOnly(readOnly);
|
||||
this->ui->color_Tail->setReadOnly(readOnly);
|
||||
this->ui->editor_AirlineIcao->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void CLiveryForm::setMappingMode(bool mappingMode)
|
||||
void CLiveryForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(mappingMode);
|
||||
this->setReadOnly(true);
|
||||
this->ui->livery_Selector->setReadOnly(false);
|
||||
this->ui->editor_AirlineIcao->setSelectOnly();
|
||||
}
|
||||
|
||||
void CLiveryForm::clear()
|
||||
@@ -127,5 +137,16 @@ namespace BlackGui
|
||||
this->setValue(livery);
|
||||
}
|
||||
|
||||
void CLiveryForm::ps_airlineChanged(const CAirlineIcaoCode &code)
|
||||
{
|
||||
if (!code.hasCompleteData()) { return; }
|
||||
if (!code.hasValidDbKey()) { return; }
|
||||
|
||||
CLivery stdLivery(this->getLiveries().findStdLiveryByAirlineIcaoDesignator(code));
|
||||
if (stdLivery.hasValidDbKey())
|
||||
{
|
||||
this->setValue(stdLivery);
|
||||
}
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -45,9 +45,6 @@ namespace BlackGui
|
||||
//! Value
|
||||
BlackMisc::Aviation::CLivery getValue() const;
|
||||
|
||||
//! Value
|
||||
void setValue(const BlackMisc::Aviation::CLivery &livery);
|
||||
|
||||
//! Validate, empty list means OK
|
||||
BlackMisc::CStatusMessageList validate(bool withNestedForms) const;
|
||||
|
||||
@@ -60,21 +57,26 @@ namespace BlackGui
|
||||
//! \copydoc CForm::setReadOnly
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
|
||||
//! Mapping mode
|
||||
void setMappingMode(bool mappingMode);
|
||||
//! \copydoc CForm::setSelectOnly
|
||||
virtual void setSelectOnly() override;
|
||||
|
||||
//! Clear data
|
||||
void clear();
|
||||
|
||||
public slots:
|
||||
//! Value
|
||||
void setValue(const BlackMisc::Aviation::CLivery &livery);
|
||||
|
||||
private slots:
|
||||
//! Livery dropped
|
||||
void ps_droppedLivery(const BlackMisc::CVariant &variantDropped);
|
||||
|
||||
//! Airline of embedded form has changed
|
||||
void ps_airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &code);
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CLiveryForm> ui;
|
||||
BlackMisc::Aviation::CLivery m_originalLivery; //!< object whose values will be overridden
|
||||
};
|
||||
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
|
||||
@@ -61,9 +61,12 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_Code">
|
||||
<property name="placeholderText">
|
||||
<string>Livery code</string>
|
||||
<widget class="BlackGui::Components::CDbLiverySelectorComponent" name="livery_Selector">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -126,9 +129,6 @@
|
||||
<property name="text">
|
||||
<string>Code:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>le_Code</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
@@ -246,10 +246,15 @@
|
||||
<header>blackgui/editors/airlineicaoform.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CDbLiverySelectorComponent</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/dbliveryselectorcomponent.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>le_Id</tabstop>
|
||||
<tabstop>le_Code</tabstop>
|
||||
<tabstop>le_Description</tabstop>
|
||||
<tabstop>le_Updated</tabstop>
|
||||
</tabstops>
|
||||
|
||||
@@ -56,6 +56,11 @@ namespace BlackGui
|
||||
this->ui->le_Name->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void CModelMappingForm::setSelectOnly()
|
||||
{
|
||||
this->setReadOnly(true);
|
||||
}
|
||||
|
||||
void CModelMappingForm::setValue(BlackMisc::Simulation::CAircraftModel &model)
|
||||
{
|
||||
ui->le_ModelKey->setText(model.getModelString());
|
||||
|
||||
@@ -45,6 +45,9 @@ namespace BlackGui
|
||||
//! \copydoc CForm::setReadOnly
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
|
||||
//! \copydoc CForm::setSelectOnly
|
||||
virtual void setSelectOnly() override;
|
||||
|
||||
public slots:
|
||||
//! Set model
|
||||
void setValue(BlackMisc::Simulation::CAircraftModel &model);
|
||||
|
||||
Reference in New Issue
Block a user