From b324a26747172ad7f16675e0a0691eb297d5d736 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 15 Aug 2016 21:09:06 +0200 Subject: [PATCH] refs #735, allow to reset highlighting (some leftovers of DB object highlighting also deleted) --- src/blackgui/menus/menuaction.h | 9 ++++++--- src/blackgui/models/aircraftmodellistmodel.cpp | 7 +++++++ src/blackgui/models/aircraftmodellistmodel.h | 5 ++++- src/blackgui/models/listmodelbase.cpp | 5 +++++ src/blackgui/models/listmodelbase.h | 3 +++ src/blackgui/models/listmodeldbobjects.cpp | 12 +----------- src/blackgui/models/listmodeldbobjects.h | 18 ++++++++++-------- src/blackgui/views/viewbase.cpp | 10 ++++++++++ src/blackgui/views/viewbase.h | 4 ++++ 9 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/blackgui/menus/menuaction.h b/src/blackgui/menus/menuaction.h index 0babe8971..0f622f0f8 100644 --- a/src/blackgui/menus/menuaction.h +++ b/src/blackgui/menus/menuaction.h @@ -164,14 +164,17 @@ namespace BlackGui //! View resizing static const QString &pathViewResize() { static const QString p("View.14.Resize"); return p; } + //! View clear highlighting + static const QString &pathViewClearHighlighting() { static const QString p("View.15.ClearHighlight"); return p; } + //! View filter - static const QString &pathViewFilter() { static const QString p("View.15.Filter"); return p; } + static const QString &pathViewFilter() { static const QString p("View.16.Filter"); return p; } //! View update - static const QString &pathViewUpdates() { static const QString p("View.16.Updates"); return p; } + static const QString &pathViewUpdates() { static const QString p("View.17.Updates"); return p; } //! View load/save - static const QString &pathViewLoadSave() { static const QString p("View.17.LoadSave"); return p; } + static const QString &pathViewLoadSave() { static const QString p("View.18.LoadSave"); return p; } // ---- nested dock widgets ---- diff --git a/src/blackgui/models/aircraftmodellistmodel.cpp b/src/blackgui/models/aircraftmodellistmodel.cpp index 4bec4cb93..1d947396e 100644 --- a/src/blackgui/models/aircraftmodellistmodel.cpp +++ b/src/blackgui/models/aircraftmodellistmodel.cpp @@ -197,5 +197,12 @@ namespace BlackGui } return QVariant(); } + + void CAircraftModelListModel::clearHighlighting() + { + this->m_highlightModelStrings = false; + this->m_highlightStrings.clear(); + COrderableListModelDbObjects::clearHighlighting(); + } } // namespace } // namespace diff --git a/src/blackgui/models/aircraftmodellistmodel.h b/src/blackgui/models/aircraftmodellistmodel.h index 7b679c521..1e1746712 100644 --- a/src/blackgui/models/aircraftmodellistmodel.h +++ b/src/blackgui/models/aircraftmodellistmodel.h @@ -72,6 +72,9 @@ namespace BlackGui //! The highlight color void setHighlightModelStringsColor(const QBrush &brush) { m_highlightColor = brush; } + //! \copydoc CListModelBase::clearHighlighting + virtual void clearHighlighting() override; + //! Model strings QStringList getModelStrings(bool sort) const; @@ -86,7 +89,7 @@ namespace BlackGui private: AircraftModelMode m_mode = NotSet; //!< current mode - bool m_highlightModelStrings = false; //!< highlight in in model strings + bool m_highlightModelStrings = false; //!< highlight if in m_highlightStrings QStringList m_highlightStrings; //!< model strings to highlight QBrush m_highlightColor{Qt::yellow}; //!< how to highlight }; diff --git a/src/blackgui/models/listmodelbase.cpp b/src/blackgui/models/listmodelbase.cpp index 790226bf1..45ce9bbf2 100644 --- a/src/blackgui/models/listmodelbase.cpp +++ b/src/blackgui/models/listmodelbase.cpp @@ -210,6 +210,11 @@ namespace BlackGui emit this->dataChanged(topLeft, bottomRight); } + void CListModelBaseNonTemplate::clearHighlighting() + { + // can be overridden to delete highlighting + } + void CListModelBaseNonTemplate::emitDataChanged(int startRowIndex, int endRowIndex) { BLACK_VERIFY_X(startRowIndex <= endRowIndex, Q_FUNC_INFO, "check rows"); diff --git a/src/blackgui/models/listmodelbase.h b/src/blackgui/models/listmodelbase.h index a7d1b3bf0..cda23cb65 100644 --- a/src/blackgui/models/listmodelbase.h +++ b/src/blackgui/models/listmodelbase.h @@ -111,6 +111,9 @@ namespace BlackGui //! Hovered role void setHoveredRow(int row); + //! Remove all highlighting + virtual void clearHighlighting(); + //! Drop actions void setDropActions(Qt::DropActions dropActions) { this->m_dropActions = dropActions; } diff --git a/src/blackgui/models/listmodeldbobjects.cpp b/src/blackgui/models/listmodeldbobjects.cpp index 0cd36b1a1..0cf570721 100644 --- a/src/blackgui/models/listmodeldbobjects.cpp +++ b/src/blackgui/models/listmodeldbobjects.cpp @@ -36,18 +36,8 @@ namespace BlackGui QVariant CListModelDbObjects::data(const QModelIndex &index, int role) const { if (role != Qt::BackgroundRole) { return CListModelBase::data(index, role); } - if (isHighlightIndex(index)) { return QBrush(m_highlightColor); } - if (!highlightDbData()) { return CListModelBase::data(index, role); } - - const ObjectType obj(this->at(index)); - // highlight DB models - if (obj.hasValidDbKey()) - { - static const QBrush b(Qt::green); - return b; - } - return QVariant(); + return CListModelBase::data(index, role); } template diff --git a/src/blackgui/models/listmodeldbobjects.h b/src/blackgui/models/listmodeldbobjects.h index b58cbf92d..b1c270379 100644 --- a/src/blackgui/models/listmodeldbobjects.h +++ b/src/blackgui/models/listmodeldbobjects.h @@ -47,15 +47,19 @@ namespace BlackGui //! Destructor virtual ~CListModelDbObjects() {} - //! Highlight the DB models - bool highlightDbData() const { return m_highlightDbData; } - - //! Highlight the DB models - void setHighlightDbData(bool highlightDbData) { m_highlightDbData = highlightDbData; } - //! Keys to be highlighted void setHighlightDbKeys(const QList &keys) { m_highlightKeys = keys; } + //! Clear the highlighted keys + void clearHighlightingDbKeys() { m_highlightKeys.clear(); } + + //! \copydoc BlackGui::Models::CListModelBaseNonTemplate::clearHighlighting + virtual void clearHighlighting() override + { + this->clearHighlightingDbKeys(); + CListModelBase::clearHighlighting(); + } + //! Set color for highlighting void setHighlightColor(QColor color) { m_highlightColor = color; } @@ -73,12 +77,10 @@ namespace BlackGui CListModelDbObjects(const QString &translationContext, QObject *parent = nullptr); private: - bool m_highlightDbData = false; //!< highlight if DB data entry (valid key) QList m_highlightKeys; //!< keys to be highlighted QColor m_highlightColor = Qt::green; }; - //! List model for DB objects template class COrderableListModelDbObjects : public CListModelDbObjects diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index ef490cbcd..31ed17881 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -357,6 +357,9 @@ namespace BlackGui actionInteractiveResize->setChecked(autoResize); actionInteractiveResize->setEnabled(enabled); connect(actionInteractiveResize, &QAction::toggled, this, &CViewBaseNonTemplate::ps_toggleResizeMode); + + // Clear highlighting + menuActions.addAction(CIcons::refresh16(), "Clear highlighting", CMenuAction::pathViewClearHighlighting(), nullptr , { this, &CViewBaseNonTemplate::clearHighlighting }); } void CViewBaseNonTemplate::showEvent(QShowEvent *event) @@ -957,6 +960,13 @@ namespace BlackGui } } + template + void CViewBase::clearHighlighting() + { + Q_ASSERT(this->m_model); + return this->m_model->clearHighlighting(); + } + template int CViewBase::rowCount() const { diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index 86d4dd15b..deacd4481 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -309,6 +309,9 @@ namespace BlackGui //! Remove selected rows virtual int removeSelectedRows() = 0; + //! Clear any highlighted objects + virtual void clearHighlighting() = 0; + protected: //! Constructor CViewBaseNonTemplate(QWidget *parent); @@ -543,6 +546,7 @@ namespace BlackGui //! @{ virtual int removeSelectedRows() override; virtual void presizeOrFullResizeToContents() override; + virtual void clearHighlighting() override; //! @} //! \name BlackGui::Views::CViewBaseNonTemplate implementations