diff --git a/src/blackgui/components/statusmessagesdetail.cpp b/src/blackgui/components/statusmessagesdetail.cpp index 633d3fe2f..0c4d8c1b8 100644 --- a/src/blackgui/components/statusmessagesdetail.cpp +++ b/src/blackgui/components/statusmessagesdetail.cpp @@ -38,7 +38,7 @@ namespace BlackGui void CStatusMessagesDetail::appendStatusMessageToList(const CStatusMessage &message) { if (message.isEmpty()) { return; } - m_pending.push_front(message); // in many cases we want to havethe latest "on top" + m_pending.push_front(message); // in many cases we want to have the latest "on top" m_dsDeferredUpdate.inputSignal(); } @@ -87,6 +87,16 @@ namespace BlackGui ui->filter_LogMessages->useRadioButtonDescriptiveIcons(oneCharacterText); } + void CStatusMessagesDetail::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) + { + ui->tvp_StatusMessages->setSorting(propertyIndex, order); + } + + void CStatusMessagesDetail::setNoSorting() + { + ui->tvp_StatusMessages->setNoSorting(); + } + void CStatusMessagesDetail::deferredUpdate() { if (m_pending.isEmpty()) { return; } diff --git a/src/blackgui/components/statusmessagesdetail.h b/src/blackgui/components/statusmessagesdetail.h index 24c6ee805..48aeaeb74 100644 --- a/src/blackgui/components/statusmessagesdetail.h +++ b/src/blackgui/components/statusmessagesdetail.h @@ -69,6 +69,12 @@ namespace BlackGui //! \copydoc BlackGui::Filters::CStatusMessageFilterBar::useRadioButtonDescriptiveIcons void filterUseRadioButtonDescriptiveIcons(bool oneCharacterText); + //! Sorting for view + void setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder); + + //! Disable sorting + void setNoSorting(); + signals: //! \copydoc BlackGui::Views::CStatusMessageView::modelDataChangedDigest void modelDataChangedDigest(int count, bool withFilter); diff --git a/src/blackgui/models/listmodelbasenontemplate.cpp b/src/blackgui/models/listmodelbasenontemplate.cpp index d10f2612d..b9a740a65 100644 --- a/src/blackgui/models/listmodelbasenontemplate.cpp +++ b/src/blackgui/models/listmodelbasenontemplate.cpp @@ -104,6 +104,12 @@ namespace BlackGui bool CListModelBaseNonTemplate::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order) { + if (propertyIndex.isEmpty()) + { + this->setNoSorting(); + return false; + } + const bool changedColumn = this->setSortColumnByPropertyIndex(propertyIndex); const bool changedOrder = (m_sortOrder == order); m_sortOrder = order; @@ -112,7 +118,6 @@ namespace BlackGui bool CListModelBaseNonTemplate::hasValidSortColumn() const { - if (!(m_sortColumn >= 0 && m_sortColumn < m_columns.size())) { return false; } return m_columns.isSortable(m_sortColumn); } diff --git a/src/blackgui/models/listmodelbasenontemplate.h b/src/blackgui/models/listmodelbasenontemplate.h index 1dd1da493..0c527c5c6 100644 --- a/src/blackgui/models/listmodelbasenontemplate.h +++ b/src/blackgui/models/listmodelbasenontemplate.h @@ -74,6 +74,9 @@ namespace BlackGui //! Set sort column virtual void setSortColumn(int column) { m_sortColumn = column; } + //! Disable sorting + void setNoSorting() { this->setSortColumn(-1); } + //! Sort by index void sortByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder); diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index 7eadd9d93..3b3135345 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -171,9 +171,12 @@ namespace BlackGui //! \copydoc BlackGui::Models::CListModelBaseNonTemplate::setSorting virtual bool setSorting(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) = 0; - //! Sort by index + //! \copydoc BlackGui::Models::CListModelBaseNonTemplate::sortByPropertyIndex virtual void sortByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex, Qt::SortOrder order = Qt::AscendingOrder) = 0; + //! \copydoc BlackGui::Models::CListModelBaseNonTemplate::setNoSorting + virtual void setNoSorting() = 0; + //! Allow to drag and/or drop value objects virtual void allowDragDrop(bool allowDrag, bool allowDrop, bool allowDropJsonFile = false) = 0; @@ -715,6 +718,7 @@ namespace BlackGui virtual bool acceptDrop(const QMimeData *mimeData) const 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; + virtual void setNoSorting() override { m_model->setNoSorting(); } //! @} //! Column count