Ref T578, allow to use workbench data in matcher component for testing

This commit is contained in:
Klaus Basan
2019-03-27 02:55:49 +01:00
committed by Mat Sutcliffe
parent 246d9abca8
commit 305a1a34c2
4 changed files with 239 additions and 146 deletions

View File

@@ -134,6 +134,9 @@ namespace BlackGui
this->onStashedModelsDataChangedDigest(ui->comp_StashAircraft->view()->rowCount(), ui->comp_StashAircraft->view()->hasFilter()); this->onStashedModelsDataChangedDigest(ui->comp_StashAircraft->view()->rowCount(), ui->comp_StashAircraft->view()->hasFilter());
this->onOwnModelsChangedDigest(ui->comp_OwnAircraftModels->view()->rowCount(), ui->comp_OwnAircraftModels->view()->hasFilter()); this->onOwnModelsChangedDigest(ui->comp_OwnAircraftModels->view()->rowCount(), ui->comp_OwnAircraftModels->view()->hasFilter());
// allow to use workbench data
ui->comp_ModelMatcher->setWorkbenchView(ui->comp_ModelWorkbench->view());
// how to display forms // how to display forms
ui->editor_AircraftModel->setSelectOnly(); ui->editor_AircraftModel->setSelectOnly();

View File

@@ -15,6 +15,7 @@
#include "simulatorselector.h" #include "simulatorselector.h"
#include "blackgui/models/statusmessagelistmodel.h" #include "blackgui/models/statusmessagelistmodel.h"
#include "blackgui/views/statusmessageview.h" #include "blackgui/views/statusmessageview.h"
#include "blackgui/views/aircraftmodelview.h"
#include "blackgui/uppercasevalidator.h" #include "blackgui/uppercasevalidator.h"
#include "blackgui/guiapplication.h" #include "blackgui/guiapplication.h"
#include "blackgui/guiutility.h" #include "blackgui/guiutility.h"
@@ -32,8 +33,8 @@
#include <QCompleter> #include <QCompleter>
#include <QLineEdit> #include <QLineEdit>
#include <QPushButton> #include <QPushButton>
#include <QString>
#include <QStringList> #include <QStringList>
#include <QStringBuilder>
#include <QTabWidget> #include <QTabWidget>
#include <QTextEdit> #include <QTextEdit>
#include <QtGlobal> #include <QtGlobal>
@@ -77,7 +78,10 @@ namespace BlackGui
connect(ui->pb_ReverseLookup, &QPushButton::pressed, this, &CModelMatcherComponent::reverseLookup); connect(ui->pb_ReverseLookup, &QPushButton::pressed, this, &CModelMatcherComponent::reverseLookup);
connect(ui->pb_Settings, &QPushButton::pressed, this, &CModelMatcherComponent::displaySettingsDialog); connect(ui->pb_Settings, &QPushButton::pressed, this, &CModelMatcherComponent::displaySettingsDialog);
connect(ui->cb_UseWorkbench, &QCheckBox::toggled, this, &CModelMatcherComponent::onWorkbenchToggled);
this->redisplay(); this->redisplay();
ui->cb_UseWorkbench->setVisible(false);
} }
CModelMatcherComponent::~CModelMatcherComponent() CModelMatcherComponent::~CModelMatcherComponent()
@@ -94,14 +98,51 @@ namespace BlackGui
this->redisplay(); this->redisplay();
} }
void CModelMatcherComponent::setWorkbenchView(Views::CAircraftModelView *workbenchView)
{
if (workbenchView)
{
ui->cb_UseWorkbench->setVisible(true);
m_workbenchView = workbenchView;
}
else
{
ui->cb_UseWorkbench->setVisible(false);
m_workbenchView.clear();
}
}
void CModelMatcherComponent::onSimulatorChanged(const CSimulatorInfo &simulator) void CModelMatcherComponent::onSimulatorChanged(const CSimulatorInfo &simulator)
{ {
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
const CAircraftModelList models = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator);
m_matcher.setModelSet(models, simulator, true); ui->tvp_ResultMessages->clear();
if (this->useWorkbench())
{
const CAircraftModelList models = m_workbenchView->container();
if (models.isEmpty())
{
CStatusMessage m(this, CStatusMessage::SeverityWarning, u"No models in workbench, disabled.");
ui->tvp_ResultMessages->insert(m);
return;
}
CSimulatorInfo simulator = models.simulatorsWithMaxEntries();
m_matcher.setModelSet(models, simulator, true);
}
else
{
const CAircraftModelList models = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator);
m_matcher.setModelSet(models, simulator, true);
}
this->redisplay(); this->redisplay();
} }
void CModelMatcherComponent::onWorkbenchToggled(bool checked)
{
Q_UNUSED(checked);
this->onSimulatorChanged(ui->comp_SimulatorSelector->getValue());
}
void CModelMatcherComponent::onCacheChanged(CSimulatorInfo &simulator) void CModelMatcherComponent::onCacheChanged(CSimulatorInfo &simulator)
{ {
Q_UNUSED(simulator); Q_UNUSED(simulator);
@@ -118,7 +159,7 @@ namespace BlackGui
{ {
const QString liveryString(ui->comp_LiverySelector->getRawCombinedCode()); const QString liveryString(ui->comp_LiverySelector->getRawCombinedCode());
const CAircraftModel reverseModel = CAircraftMatcher::reverseLookupModel(remoteAircraft.getModel(), liveryString, &msgs); const CAircraftModel reverseModel = CAircraftMatcher::reverseLookupModel(remoteAircraft.getModel(), liveryString, &msgs);
remoteAircraft.setModel(reverseModel); remoteAircraft.setModel(reverseModel); // current model
} }
m_matcher.setDefaultModel(CModelMatcherComponent::defaultModel()); m_matcher.setDefaultModel(CModelMatcherComponent::defaultModel());
@@ -163,8 +204,8 @@ namespace BlackGui
void CModelMatcherComponent::redisplay() void CModelMatcherComponent::redisplay()
{ {
const int c = this->getModelSetModelsCount(); const int c = this->getMatcherModelsCount();
ui->le_ModelSetCount->setText(QString::number(c)); ui->le_ModelSetCount->setText(QString::number(c) % (this->useWorkbench() ? u" (workbench)" : u""));
} }
CAircraftModelList CModelMatcherComponent::getModelSetModels() const CAircraftModelList CModelMatcherComponent::getModelSetModels() const
@@ -174,11 +215,14 @@ namespace BlackGui
return models; return models;
} }
int CModelMatcherComponent::getModelSetModelsCount() const int CModelMatcherComponent::getMatcherModelsCount() const
{ {
const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue(); return m_matcher.getModelSetCount();
const int modelCount = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModelsCount(simulator); }
return modelCount;
bool CModelMatcherComponent::useWorkbench() const
{
return ui->cb_UseWorkbench->isChecked() && m_workbenchView;
} }
CSimulatedAircraft CModelMatcherComponent::createAircraft() const CSimulatedAircraft CModelMatcherComponent::createAircraft() const

View File

@@ -20,11 +20,13 @@
#include <QFrame> #include <QFrame>
#include <QObject> #include <QObject>
#include <QPointer>
#include <QScopedPointer> #include <QScopedPointer>
namespace Ui { class CModelMatcherComponent; } namespace Ui { class CModelMatcherComponent; }
namespace BlackGui namespace BlackGui
{ {
namespace Views { class CAircraftModelView; }
namespace Components namespace Components
{ {
class CSettingsMatchingDialog; class CSettingsMatchingDialog;
@@ -41,15 +43,21 @@ namespace BlackGui
explicit CModelMatcherComponent(QWidget *parent = nullptr); explicit CModelMatcherComponent(QWidget *parent = nullptr);
//! Destructor //! Destructor
virtual ~CModelMatcherComponent(); virtual ~CModelMatcherComponent() override;
//! Tab (where this component is embedded) has been changed //! Tab (where this component is embedded) has been changed
void tabIndexChanged(int index); void tabIndexChanged(int index);
//! Set an external
void setWorkbenchView(Views::CAircraftModelView *workbenchView);
private: private:
//! Simulator switched //! Simulator switched
void onSimulatorChanged(const BlackMisc::Simulation::CSimulatorInfo &simulator); void onSimulatorChanged(const BlackMisc::Simulation::CSimulatorInfo &simulator);
//! Workbench toggled
void onWorkbenchToggled(bool checked);
//! Cache changed //! Cache changed
void onCacheChanged(BlackMisc::Simulation::CSimulatorInfo &simulator); void onCacheChanged(BlackMisc::Simulation::CSimulatorInfo &simulator);
@@ -72,7 +80,10 @@ namespace BlackGui
BlackMisc::Simulation::CAircraftModelList getModelSetModels() const; BlackMisc::Simulation::CAircraftModelList getModelSetModels() const;
//! The current model set models size //! The current model set models size
int getModelSetModelsCount() const; int getMatcherModelsCount() const;
//! Use workbench data
bool useWorkbench() const;
//! Pseudo aircraft created from entries //! Pseudo aircraft created from entries
BlackMisc::Simulation::CSimulatedAircraft createAircraft() const; BlackMisc::Simulation::CSimulatedAircraft createAircraft() const;
@@ -81,6 +92,8 @@ namespace BlackGui
BlackMisc::Simulation::CAircraftModel defaultModel() const; BlackMisc::Simulation::CAircraftModel defaultModel() const;
QScopedPointer<Ui::CModelMatcherComponent> ui; QScopedPointer<Ui::CModelMatcherComponent> ui;
QPointer<Views::CAircraftModelView> m_workbenchView; //!< an external workbenc
CSettingsMatchingDialog *m_settingsDialog = nullptr; //!< matching settings as dialog CSettingsMatchingDialog *m_settingsDialog = nullptr; //!< matching settings as dialog
BlackCore::CAircraftMatcher m_matcher { this }; //!< used matcher BlackCore::CAircraftMatcher m_matcher { this }; //!< used matcher
}; };

View File

@@ -32,27 +32,21 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="1" alignment="Qt::AlignLeft"> <item row="2" column="1">
<widget class="BlackGui::Components::CSimulatorSelector" name="comp_SimulatorSelector">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="BlackGui::Components::CAircraftCombinedTypeSelector" name="comp_CombinedCode"> <widget class="BlackGui::Components::CAircraftCombinedTypeSelector" name="comp_CombinedCode">
<property name="focusPolicy"> <property name="focusPolicy">
<enum>Qt::StrongFocus</enum> <enum>Qt::StrongFocus</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="2">
<widget class="QLabel" name="lbl_Livery">
<property name="text">
<string>Livery:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="BlackGui::Components::CDbAircraftIcaoSelectorComponent" name="comp_AircraftSelector"> <widget class="BlackGui::Components::CDbAircraftIcaoSelectorComponent" name="comp_AircraftSelector">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@@ -65,59 +59,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0" colspan="4"> <item row="5" column="1" colspan="3">
<widget class="QFrame" name="fr_Results">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="vl_Results" stretch="1,3">
<item>
<widget class="QTextEdit" name="te_Results">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="BlackGui::Views::CStatusMessageView" name="tvp_ResultMessages">
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="3">
<widget class="BlackGui::Components::CDbLiverySelectorComponent" name="comp_LiverySelector">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="BlackGui::Components::CDbAirlineIcaoSelectorComponent" name="comp_AirlineSelector">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="6" column="1" colspan="3">
<widget class="QFrame" name="fr_Buttons"> <widget class="QFrame" name="fr_Buttons">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@@ -182,69 +124,80 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="3" column="1">
<widget class="QLabel" name="lbl_Model">
<property name="text">
<string>Model:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_Aircraft">
<property name="text">
<string>Aircraft:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="lbl_Airline">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_Combined">
<property name="text">
<string>Combined:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="lbl_Livery">
<property name="text">
<string>Livery:</string>
</property>
</widget>
</item>
<item row="5" column="1" colspan="3">
<widget class="QLineEdit" name="le_ModelString">
<property name="placeholderText">
<string>model string</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_Simulator">
<property name="text">
<string>Simulator:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="le_Manufacturer"> <widget class="QLineEdit" name="le_Manufacturer">
<property name="placeholderText"> <property name="placeholderText">
<string>e.g. Cessna</string> <string>e.g. Cessna</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="6" column="0" colspan="4">
<widget class="QFrame" name="fr_Results">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="vl_Results" stretch="1,3">
<item>
<widget class="QTextEdit" name="te_Results">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="BlackGui::Views::CStatusMessageView" name="tvp_ResultMessages">
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_Manufacturer"> <widget class="QLabel" name="lbl_Manufacturer">
<property name="text"> <property name="text">
<string>Manufacturer:</string> <string>Manufacturer:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1" colspan="3">
<widget class="QLineEdit" name="le_ModelString">
<property name="placeholderText">
<string>model string</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_Aircraft">
<property name="text">
<string>Aircraft:</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbl_Model">
<property name="text">
<string>Model:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="lbl_Airline">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QLabel" name="lbl_ModelSetCount"> <widget class="QLabel" name="lbl_ModelSetCount">
<property name="text"> <property name="text">
@@ -252,27 +205,105 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3"> <item row="3" column="3">
<widget class="QLineEdit" name="le_ModelSetCount">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="lbl_Callsign">
<property name="text">
<string>Callsign:</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QLineEdit" name="le_Callsign"> <widget class="QLineEdit" name="le_Callsign">
<property name="placeholderText"> <property name="placeholderText">
<string>e.g. DAMBZ</string> <string>e.g. DAMBZ</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_Simulator">
<property name="text">
<string>Simulator:</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="BlackGui::Components::CDbLiverySelectorComponent" name="comp_LiverySelector">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="0" column="1" alignment="Qt::AlignLeft">
<widget class="BlackGui::Components::CSimulatorSelector" name="comp_SimulatorSelector">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QFrame" name="fr_ModelSet">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="hl_ModelSet">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="le_ModelSetCount">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cb_UseWorkbench">
<property name="text">
<string>use workbench</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="3">
<widget class="BlackGui::Components::CDbAirlineIcaoSelectorComponent" name="comp_AirlineSelector">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_Combined">
<property name="text">
<string>Combined:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="lbl_Callsign">
<property name="text">
<string>Callsign:</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@@ -315,6 +346,7 @@
<tabstops> <tabstops>
<tabstop>comp_SimulatorSelector</tabstop> <tabstop>comp_SimulatorSelector</tabstop>
<tabstop>le_ModelSetCount</tabstop> <tabstop>le_ModelSetCount</tabstop>
<tabstop>cb_UseWorkbench</tabstop>
<tabstop>comp_AircraftSelector</tabstop> <tabstop>comp_AircraftSelector</tabstop>
<tabstop>comp_AirlineSelector</tabstop> <tabstop>comp_AirlineSelector</tabstop>
<tabstop>comp_CombinedCode</tabstop> <tabstop>comp_CombinedCode</tabstop>
@@ -322,6 +354,7 @@
<tabstop>le_Manufacturer</tabstop> <tabstop>le_Manufacturer</tabstop>
<tabstop>le_Callsign</tabstop> <tabstop>le_Callsign</tabstop>
<tabstop>le_ModelString</tabstop> <tabstop>le_ModelString</tabstop>
<tabstop>pb_Settings</tabstop>
<tabstop>pb_ReverseLookup</tabstop> <tabstop>pb_ReverseLookup</tabstop>
<tabstop>pb_ModelMatching</tabstop> <tabstop>pb_ModelMatching</tabstop>
<tabstop>cb_withReverseLookup</tabstop> <tabstop>cb_withReverseLookup</tabstop>