refs #634, fixes and improvements in selectors/completers

* upper case
* get raw data from selector
* sort completers
This commit is contained in:
Klaus Basan
2016-04-04 12:47:41 +02:00
parent a07af2b781
commit 0c6780a392
12 changed files with 64 additions and 30 deletions

View File

@@ -10,6 +10,7 @@
#include "aircraftcombinedtypeselector.h"
#include "ui_aircraftcombinedtypeselector.h"
#include "blackgui/guiutility.h"
#include "blackgui/uppercasevalidator.h"
using namespace BlackMisc::Aviation;
@@ -28,6 +29,8 @@ namespace BlackGui
this->connect(ui->cb_EngineCount, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox);
this->connect(ui->cb_EngineType, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox);
this->connect(ui->cb_Type, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox);
ui->le_CombinedType->setValidator(new CUpperCaseValidator(this));
}
CAircraftCombinedTypeSelector::~CAircraftCombinedTypeSelector()

View File

@@ -12,6 +12,7 @@
#include "blackgui/guiapplication.h"
#include "blackgui/uppercasevalidator.h"
#include "blackmisc/datastoreutility.h"
#include "blackmisc/stringutils.h"
#include <QMimeData>
using namespace BlackGui;
@@ -79,6 +80,11 @@ namespace BlackGui
this->ui->le_Aircraft->setReadOnly(readOnly);
}
QString CDbAircraftIcaoSelectorComponent::getRawDesignator() const
{
return stripDesignatorFromCompleterString(ui->le_Aircraft->text());
}
void CDbAircraftIcaoSelectorComponent::withIcaoDescription(bool description)
{
this->ui->lbl_Description->setVisible(description);
@@ -141,7 +147,7 @@ namespace BlackGui
{
if (count > 0)
{
QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true), this);
QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true, true), this);
c->setCaseSensitivity(Qt::CaseInsensitive);
c->setCompletionMode(QCompleter::PopupCompletion);
c->setMaxVisibleItems(10);

View File

@@ -51,6 +51,9 @@ namespace BlackGui
//! Distributor
BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcao() const;
//! Raw designator
QString getRawDesignator() const;
//! Read only
void setReadOnly(bool readOnly);

View File

@@ -35,9 +35,7 @@ namespace BlackGui
}
CDbAirlineIcaoSelectorBase::~CDbAirlineIcaoSelectorBase()
{
//
}
{ }
void CDbAirlineIcaoSelectorBase::setAirlineIcao(const CAirlineIcaoCode &icao)
{

View File

@@ -12,6 +12,7 @@
#include "blackgui/guiapplication.h"
#include "blackgui/uppercasevalidator.h"
#include "blackmisc/datastoreutility.h"
#include "blackmisc/stringutils.h"
#include <QMimeData>
using namespace BlackCore;
@@ -62,9 +63,14 @@ namespace BlackGui
this->ui->lbl_Description->clear();
}
QString CDbAirlineIcaoSelectorComponent::getRawDesignator() const
{
return stripDesignatorFromCompleterString(ui->le_Airline->text());
}
QCompleter *CDbAirlineIcaoSelectorComponent::createCompleter()
{
QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(), this);
QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(true, true), this);
c->setCaseSensitivity(Qt::CaseInsensitive);
c->setCompletionMode(QCompleter::PopupCompletion);
c->setMaxVisibleItems(10);

View File

@@ -38,18 +38,19 @@ namespace BlackGui
//! \note needed for forward declared QScopedPointer and needs to be in .cpp
~CDbAirlineIcaoSelectorComponent();
//! \copydoc CDbAirlineIcaoSelectorBase::clear
//! \name Base class overrides
//! @{
virtual void setReadOnly(bool readOnly) override;
//! \copydoc CDbAirlineIcaoSelectorBase::setAirlineIcao
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
virtual void clear() override;
//! @}
//! Raw text designator
QString getRawDesignator() const;
//! Display ICAO description
void withIcaoDescription(bool description);
//! \copydoc CDbAirlineIcaoSelectorBase::clear
virtual void clear() override;
protected:
//! \copydoc CDbAirlineIcaoSelectorBase::createCompleter
virtual QCompleter *createCompleter() override;

View File

@@ -37,14 +37,12 @@ namespace BlackGui
//! \note needed for forward declared QScopedPointer and needs to be in .cpp
virtual ~CDbAirlineNameSelectorComponent();
//! \copydoc CDbAirlineIcaoSelectorBase::setReadOnly
//! \name Base class overrides
//! @{
virtual void setReadOnly(bool readOnly) override;
//! \copydoc CDbAirlineIcaoSelectorBase::setAirlineIcao
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
//! \copydoc CDbAirlineIcaoSelectorBase::clear
virtual void clear() override;
//! @}
protected:
//! \copydoc CDbAirlineIcaoSelectorBase::createCompleter

View File

@@ -158,8 +158,7 @@ namespace BlackGui
{
if (count > 0)
{
QStringList keysAndAliases(sGui->getWebDataServices()->getDistributors().getDbKeysAndAliases());
keysAndAliases.sort(Qt::CaseInsensitive);
const QStringList keysAndAliases(sGui->getWebDataServices()->getDistributors().getDbKeysAndAliases(true));
QCompleter *c = new QCompleter(keysAndAliases, this);
c->setCaseSensitivity(Qt::CaseInsensitive);
c->setCompletionMode(QCompleter::PopupCompletion);

View File

@@ -69,21 +69,24 @@ namespace BlackGui
this->ui->cb_XPlane->isChecked(), this->ui->cb_P3D->isChecked());
case RadioButtons:
return CSimulatorInfo(this->ui->rb_FSX->isChecked(), this->ui->rb_FS9->isChecked(),
this->ui->rb_XPlane->isChecked(), this->ui->cb_P3D->isChecked());
this->ui->rb_XPlane->isChecked(), this->ui->rb_P3D->isChecked());
}
}
void CSimulatorSelector::setValue(const CSimulatorInfo &info)
void CSimulatorSelector::setValue(const CSimulatorInfo &simulator)
{
this->ui->cb_FSX->setChecked(info.fsx());
this->ui->cb_FS9->setChecked(info.fs9());
this->ui->cb_XPlane->setChecked(info.xplane());
this->ui->cb_P3D->setChecked(info.p3d());
const CSimulatorInfo current(getValue());
if (simulator == current) { return; } // avoid unnecessary signals
if (info.fsx()) { this->ui->cb_FSX->setChecked(info.fsx()); return; }
if (info.fs9()) { this->ui->cb_FS9->setChecked(info.fs9()); return; }
if (info.xplane()) { this->ui->cb_XPlane->setChecked(info.xplane()); return; }
if (info.p3d()) { this->ui->cb_P3D->setChecked(info.p3d()); return; }
this->ui->cb_FSX->setChecked(simulator.fsx());
this->ui->cb_FS9->setChecked(simulator.fs9());
this->ui->cb_XPlane->setChecked(simulator.xplane());
this->ui->cb_P3D->setChecked(simulator.p3d());
if (simulator.fsx()) { this->ui->cb_FSX->setChecked(simulator.fsx()); return; }
if (simulator.fs9()) { this->ui->cb_FS9->setChecked(simulator.fs9()); return; }
if (simulator.xplane()) { this->ui->cb_XPlane->setChecked(simulator.xplane()); return; }
if (simulator.p3d()) { this->ui->cb_P3D->setChecked(simulator.p3d()); return; }
}
void CSimulatorSelector::setAll()

View File

@@ -52,7 +52,7 @@ namespace BlackGui
BlackMisc::Simulation::CSimulatorInfo getValue() const;
//! Set the value
void setValue(const BlackMisc::Simulation::CSimulatorInfo &info);
void setValue(const BlackMisc::Simulation::CSimulatorInfo &simulator);
//! Set all, only making sense with checkboxes
void setAll();
@@ -65,7 +65,7 @@ namespace BlackGui
signals:
//! Value has been changed
void changed(const BlackMisc::Simulation::CSimulatorInfo &info);
void changed(const BlackMisc::Simulation::CSimulatorInfo &simulator);
private slots:
//! Radio button changed

View File

@@ -77,3 +77,17 @@ QByteArray BlackMisc::byteArrayFromHexString(const QString &hexString)
}
return ba;
}
QString BlackMisc::stripDesignatorFromCompleterString(const QString &candidate)
{
const QString s(candidate.trimmed().toUpper());
if (s.isEmpty()) { return QString(); }
if (s.contains(' '))
{
return s.left(s.indexOf(' '));
}
else
{
return s;
}
}

View File

@@ -58,6 +58,9 @@ namespace BlackMisc
//! Byte array from hex value string per byte, 2 digits
BLACKMISC_EXPORT QByteArray byteArrayFromHexString(const QString &hexString);
//! Strip a designator from a combined string
BLACKMISC_EXPORT QString stripDesignatorFromCompleterString(const QString &candidate);
namespace Mixin
{
/*!