Ref T111, UI element for model key completion

This commit is contained in:
Klaus Basan
2017-07-26 14:09:14 +02:00
committed by Mathew Sutcliffe
parent b1295cd457
commit a1357f0bd7
2 changed files with 106 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
/* Copyright (C) 2017
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "dbmodelkeycompleter.h"
#include "blackgui/guiapplication.h"
#include "blackgui/uppercasevalidator.h"
#include "blackcore/webdataservices.h"
#include <QCompleter>
using namespace BlackCore;
namespace BlackGui
{
namespace Components
{
CDbModelKeyCompleter::CDbModelKeyCompleter(QWidget *parent) : QLineEdit(parent)
{
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Need sGui");
Q_ASSERT_X(sGui->hasWebDataServices(), Q_FUNC_INFO, "Need web services");
this->setValidator(new CUpperCaseValidator(this));
this->initCompleter();
connect(sGui->getWebDataServices(), &CWebDataServices::swiftDbModelsRead, this, &CDbModelKeyCompleter::onModelsRead);
}
void CDbModelKeyCompleter::setSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator)
{
if (m_simulator == simulator) { return; }
m_simulator = simulator;
this->initCompleter();
}
BlackMisc::Simulation::CAircraftModel CDbModelKeyCompleter::getAircraftModel() const
{
return sGui->getWebDataServices()->getModelForModelString(this->text().toUpper().trimmed());
}
void CDbModelKeyCompleter::onModelsRead()
{
this->initCompleter();
}
void CDbModelKeyCompleter::initCompleter()
{
const QStringList models(sGui->getWebDataServices()->getModelCompleterStrings(true, m_simulator));
if (models.isEmpty()) { return; }
this->setCompleter(new QCompleter(models, this));
}
} // ns
} // ns

View File

@@ -0,0 +1,50 @@
/* Copyright (C) 2017
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_COMPONENTS_DBMODELKEYCOMPLETER_H
#define BLACKGUI_COMPONENTS_DBMODELKEYCOMPLETER_H
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include <QLineEdit>
namespace BlackGui
{
namespace Components
{
/**
* Completer for model keys
*/
class CDbModelKeyCompleter : public QLineEdit
{
public:
//! Ctor
CDbModelKeyCompleter(QWidget *parent = nullptr);
//! Limit models to simulator, or add unspecified
void setSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator);
//! Aircraft model for current string (searched in DB data)
BlackMisc::Simulation::CAircraftModel getAircraftModel() const;
private:
//! Models have been read
void onModelsRead();
//! Init completer
void initCompleter();
BlackMisc::Simulation::CSimulatorInfo m_simulator { BlackMisc::Simulation::CSimulatorInfo::All };
};
} // ns
} // ns
#endif // guard