From 9f408e8319c9676ba42dc5d886cdeae3bbb9bf14 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 10 Dec 2018 01:35:04 +0100 Subject: [PATCH] Fixes in model set form as described by RP https://swift-project.slack.com/archives/G96QTUBEG/p1544353355002400 * fixed missing radio button groups * return values for some functions to detect "changes" * minor style fixes --- src/blackgui/editors/ownmodelsetform.cpp | 27 ++- src/blackgui/editors/ownmodelsetform.ui | 210 ++++++++++++++------- src/blackgui/models/listmodelbase.cpp | 13 +- src/blackgui/models/listmodelbase.h | 4 +- src/blackgui/models/listmodeldbobjects.cpp | 6 +- src/blackgui/models/listmodeldbobjects.h | 2 +- src/blackgui/views/viewbase.cpp | 4 +- src/blackgui/views/viewbase.h | 4 +- src/blackmisc/orderable.cpp | 21 +-- 9 files changed, 176 insertions(+), 115 deletions(-) diff --git a/src/blackgui/editors/ownmodelsetform.cpp b/src/blackgui/editors/ownmodelsetform.cpp index f53ad67e9..107fcaa99 100644 --- a/src/blackgui/editors/ownmodelsetform.cpp +++ b/src/blackgui/editors/ownmodelsetform.cpp @@ -20,6 +20,7 @@ #include #include +using namespace BlackMisc; using namespace BlackMisc::Simulation; using namespace BlackGui::Models; using namespace BlackGui::Components; @@ -59,7 +60,7 @@ namespace BlackGui const bool hasPreferences = this->hasDistributorPreferences(); ui->cb_SortByPreferences->setChecked(hasPreferences); CGuiUtility::checkBoxReadOnly(ui->cb_SortByPreferences, !hasPreferences); - ui->comp_SimulatorSelector->setValue(this->m_simulator); + ui->comp_SimulatorSelector->setValue(m_simulator); this->setDistributorView(hasPreferences); this->initDistributorDisplay(); } @@ -142,29 +143,23 @@ namespace BlackGui { ui->tvp_Distributors->setDistributorMode(hasPreferences ? CDistributorListModel::MinimalWithOrder : CDistributorListModel::Minimal); ui->tvp_Distributors->fullResizeToContents(); - if (hasPreferences) - { - ui->tvp_Distributors->setSorting(CDistributor::IndexOrder); - } - else - { - ui->tvp_Distributors->setSorting(CDistributor::IndexDbStringKey); - } + const CPropertyIndex i = hasPreferences ? CPropertyIndex(CDistributor::IndexOrder) : CPropertyIndex(CDistributor::IndexDbStringKey); + ui->tvp_Distributors->sortByPropertyIndex(i); } CDistributorList COwnModelSetForm::getDistributorsFromPreferences() const { - Q_ASSERT_X(this->m_simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); - const CDistributorListPreferences prefs(this->m_distributorPreferences.get()); - const CDistributorList distributors(prefs.getDistributors(this->m_simulator)); + Q_ASSERT_X(m_simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); + const CDistributorListPreferences prefs(m_distributorPreferences.get()); + const CDistributorList distributors(prefs.getDistributors(m_simulator)); return distributors; } CDistributorList COwnModelSetForm::getAllDistributors() const { - Q_ASSERT_X(this->m_simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); + Q_ASSERT_X(m_simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); Q_ASSERT_X(sGui && sGui->hasWebDataServices(), Q_FUNC_INFO, "Missing web data services"); - return sGui->getWebDataServices()->getDistributors().matchesSimulator(this->m_simulator); + return sGui->getWebDataServices()->getDistributors().matchesSimulator(m_simulator); } CDistributorList COwnModelSetForm::getDistributorsBasedOnOptions() const @@ -199,8 +194,8 @@ namespace BlackGui bool COwnModelSetForm::hasDistributorPreferences() const { - const CDistributorListPreferences prefs(this->m_distributorPreferences.get()); - return !prefs.getDistributors(this->m_simulator).isEmpty(); + const CDistributorListPreferences prefs(m_distributorPreferences.get()); + return !prefs.getDistributors(m_simulator).isEmpty(); } } // ns } // ns diff --git a/src/blackgui/editors/ownmodelsetform.ui b/src/blackgui/editors/ownmodelsetform.ui index 67a5f9093..1e4c745fd 100644 --- a/src/blackgui/editors/ownmodelsetform.ui +++ b/src/blackgui/editors/ownmodelsetform.ui @@ -6,8 +6,8 @@ 0 0 - 450 - 350 + 350 + 376 @@ -37,11 +37,21 @@ Selection - - - + + + + + + 100 + 0 + + + + + + - Mode: + Simulator: @@ -54,24 +64,24 @@ full - false + true + + + bg_Mode + + + + + + + Mode: - - + + - Simulator: - - - - - - - add to existing set - - - incremental + Source set: @@ -86,6 +96,22 @@ false + + bg_SourceSet + + + + + + + add to existing set + + + incremental + + + bg_Mode + @@ -99,6 +125,9 @@ false + + bg_SourceSet + @@ -111,23 +140,6 @@ - - - - Source set: - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - @@ -136,6 +148,22 @@ DB data only + + true + + + bg_SourceSet + + + + + + + all from below + + + bg_Distributors + @@ -150,20 +178,9 @@ selected - - - - - - from preferences - - - - - - - all from below - + + bg_Distributors + @@ -174,26 +191,9 @@ true - - - - - - all distributors - - - false - - - - - - - If checked the distributors from the settings page will be used - - - sort by dist. preferences - + + bg_Distributors + @@ -205,6 +205,57 @@ Distributors + + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + from preferences + + + bg_Displayed + + + + + + + all distributors + + + true + + + bg_Displayed + + + + + + + If checked the distributors from the settings page will be used + + + sort by dist. preferences + + + + + + @@ -236,12 +287,27 @@
blackgui/views/distributorview.h
+ + rb_Full + rb_Incremental + cb_ConsolidateModelSet + rb_DbDataOnly + rb_DbIcaoCodesOnly + rb_WithIcaoData + rb_DistributorsSelected + rb_DistributorsFromBelow + rb_DistributorsAll + rb_DisplayPreferencesDistributors + rb_DisplayAllDistributors + cb_SortByPreferences + tvp_Distributors + - + diff --git a/src/blackgui/models/listmodelbase.cpp b/src/blackgui/models/listmodelbase.cpp index c6d080b2f..ee8f91f74 100644 --- a/src/blackgui/models/listmodelbase.cpp +++ b/src/blackgui/models/listmodelbase.cpp @@ -97,15 +97,20 @@ namespace BlackGui this->sort(column, order); } - void CListModelBaseNonTemplate::setSortColumnByPropertyIndex(const CPropertyIndex &propertyIndex) + bool CListModelBaseNonTemplate::setSortColumnByPropertyIndex(const CPropertyIndex &propertyIndex) { - m_sortColumn = m_columns.propertyIndexToColumn(propertyIndex); + const int column = m_columns.propertyIndexToColumn(propertyIndex); + if (m_sortColumn == column) { return false; } // not changed + m_sortColumn = column; + return true; // changed } - void CListModelBaseNonTemplate::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) + bool CListModelBaseNonTemplate::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) { - this->setSortColumnByPropertyIndex(propertyIndex); + const bool changedColumn = this->setSortColumnByPropertyIndex(propertyIndex); + const bool changedOrder = (m_sortOrder == order); m_sortOrder = order; + return changedColumn || changedOrder; } bool CListModelBaseNonTemplate::hasValidSortColumn() const diff --git a/src/blackgui/models/listmodelbase.h b/src/blackgui/models/listmodelbase.h index 650f09407..69e815b2c 100644 --- a/src/blackgui/models/listmodelbase.h +++ b/src/blackgui/models/listmodelbase.h @@ -85,10 +85,10 @@ namespace BlackGui //! Set column for sorting //! \param propertyIndex index of column to be sorted - virtual void setSortColumnByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex); + virtual bool setSortColumnByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex); //! Sorting - virtual void setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder); + virtual bool setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder); //! Get sort column property index virtual int getSortColumn() const { return m_sortColumn; } diff --git a/src/blackgui/models/listmodeldbobjects.cpp b/src/blackgui/models/listmodeldbobjects.cpp index 1d0c345ae..3a0abf3fc 100644 --- a/src/blackgui/models/listmodeldbobjects.cpp +++ b/src/blackgui/models/listmodeldbobjects.cpp @@ -49,7 +49,7 @@ namespace BlackGui QVariant CListModelDbObjects::data(const QModelIndex &index, int role) const { if (role != Qt::BackgroundRole) { return CListModelBase::data(index, role); } - if (isHighlightedIndex(index)) { return QBrush(m_highlightColor); } + if (isHighlightedIndex(index) ) { return QBrush(m_highlightColor); } return CListModelBase::data(index, role); } @@ -91,10 +91,10 @@ namespace BlackGui } template - void COrderableListModelDbObjects::setSortColumnToOrder() + bool COrderableListModelDbObjects::setSortColumnToOrder() { // force sorted by order, otherwise display looks confusing - this->setSorting(IOrderable::IndexOrder); + return this->setSorting(IOrderable::IndexOrder); } template diff --git a/src/blackgui/models/listmodeldbobjects.h b/src/blackgui/models/listmodeldbobjects.h index f17388b24..8357a16d2 100644 --- a/src/blackgui/models/listmodeldbobjects.h +++ b/src/blackgui/models/listmodeldbobjects.h @@ -91,7 +91,7 @@ namespace BlackGui //! @} //! Sort order to order property BlackMisc::IOrderable::IndexOrder - void setSortColumnToOrder(); + bool setSortColumnToOrder(); protected: //! Constructor diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 1f840a6df..21db85c54 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -468,10 +468,10 @@ namespace BlackGui } template - void CViewBase::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) + bool CViewBase::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) { Q_ASSERT(m_model); - m_model->setSorting(propertyIndex, order); + return m_model->setSorting(propertyIndex, order); } template diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index 21d7a904e..e985f408d 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -168,7 +168,7 @@ namespace BlackGui virtual bool isOrderable() const = 0; //! \copydoc BlackGui::Models::CListModelBaseNonTemplate::setSorting - virtual void setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) = 0; + virtual bool setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) = 0; //! Sort by index virtual void sortByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) = 0; @@ -700,7 +700,7 @@ namespace BlackGui virtual bool isDropAllowed() const override; virtual void dropEvent(QDropEvent *event) override; virtual bool acceptDrop(const QMimeData *mimeData) const override; - virtual void setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) override; + virtual bool setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) override; virtual void sortByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) override; //! @} diff --git a/src/blackmisc/orderable.cpp b/src/blackmisc/orderable.cpp index 07ac00e34..a9aff98c2 100644 --- a/src/blackmisc/orderable.cpp +++ b/src/blackmisc/orderable.cpp @@ -26,7 +26,7 @@ namespace BlackMisc QString IOrderable::getOrderAsString() const { if (this->hasValidOrder()) { return QString::number(this->getOrder()); } - return "-"; + return QStringLiteral("-"); } bool IOrderable::hasValidOrder() const @@ -37,7 +37,7 @@ namespace BlackMisc bool IOrderable::canHandleIndex(const CPropertyIndex &index) { if (index.isEmpty()) { return false; } - int i = index.frontCasted(); + const int i = index.frontCasted(); return (i >= static_cast(IndexOrder)) && (i <= static_cast(IndexOrderString)); } @@ -45,15 +45,12 @@ namespace BlackMisc { if (!index.isEmpty()) { - ColumnIndex i = index.frontCasted(); + const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexOrder: - return CVariant::fromValue(this->m_order); - case IndexOrderString: - return CVariant::fromValue(this->getOrderAsString()); - default: - break; + case IndexOrder: return CVariant::fromValue(this->m_order); + case IndexOrderString: return CVariant::fromValue(this->getOrderAsString()); + default: break; } } const QString m = QString("Cannot handle index %1").arg(index.toQString()); @@ -65,12 +62,10 @@ namespace BlackMisc { if (!index.isEmpty()) { - ColumnIndex i = index.frontCasted(); + const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexOrder: - this->setOrder(variant.toInt()); - return; + case IndexOrder: this->setOrder(variant.toInt()); return; case IndexOrderString: default: break;