Ref T529, automatically adjust model/view columns depening on status messages

Add/remove order column automatically
This commit is contained in:
Klaus Basan
2019-02-04 23:10:19 +01:00
committed by Mat Sutcliffe
parent 32985c78da
commit 7cd1eb5ea5
5 changed files with 22 additions and 5 deletions

View File

@@ -120,6 +120,7 @@ namespace BlackGui
newMsgs.keepLatest(m_maxLogMessages); newMsgs.keepLatest(m_maxLogMessages);
} }
ui->tvp_StatusMessages->adjustOrderColumn(newMsgs);
ui->tvp_StatusMessages->updateContainerMaybeAsync(newMsgs); ui->tvp_StatusMessages->updateContainerMaybeAsync(newMsgs);
} }

View File

@@ -52,16 +52,23 @@ namespace BlackGui
} }
} }
void CStatusMessageListModel::adjustOrderColumn(const CStatusMessageList &messages)
{
this->setMode(m_mode, messages);
}
void CStatusMessageListModel::setMode(CStatusMessageListModel::Mode mode) void CStatusMessageListModel::setMode(CStatusMessageListModel::Mode mode)
{ {
m_columns.clear(); m_columns.clear();
m_sortColumn = CStatusMessage::IndexUtcTimestamp; m_sortColumn = CStatusMessage::IndexUtcTimestamp;
m_mode = mode;
switch (mode) switch (mode)
{ {
case DetailedWithOrder: case DetailedWithOrder:
m_columns.addColumn(CColumn::orderColumn()); m_columns.addColumn(CColumn::orderColumn());
m_sortColumn = CStatusMessage::IndexOrder; m_sortColumn = CStatusMessage::IndexOrder;
m_sortOrder = Qt::DescendingOrder;
Q_FALLTHROUGH(); Q_FALLTHROUGH();
case Detailed: case Detailed:
{ {
@@ -71,8 +78,6 @@ namespace BlackGui
m_columns.addColumn(col); m_columns.addColumn(col);
m_columns.addColumn(CColumn::standardString("message", CStatusMessage::IndexMessage)); m_columns.addColumn(CColumn::standardString("message", CStatusMessage::IndexMessage));
m_columns.addColumn(CColumn::standardString("category", CStatusMessage::IndexCategoryHumanReadableOrTechnicalAsString)); m_columns.addColumn(CColumn::standardString("category", CStatusMessage::IndexCategoryHumanReadableOrTechnicalAsString));
m_sortOrder = Qt::DescendingOrder;
} }
break; break;
case SimplifiedWithOrder: case SimplifiedWithOrder:
@@ -86,9 +91,6 @@ namespace BlackGui
col.setSortPropertyIndex(CStatusMessage::IndexSeverityAsString); col.setSortPropertyIndex(CStatusMessage::IndexSeverityAsString);
m_columns.addColumn(col); m_columns.addColumn(col);
m_columns.addColumn(CColumn::standardString("message", CStatusMessage::IndexMessage)); m_columns.addColumn(CColumn::standardString("message", CStatusMessage::IndexMessage));
m_sortColumn = CStatusMessage::IndexUtcTimestamp;
m_sortOrder = Qt::DescendingOrder;
} }
break; break;
} }

View File

@@ -50,8 +50,14 @@ namespace BlackGui
//! Set mode and adjust order/no order //! Set mode and adjust order/no order
void setMode(Mode mode, const BlackMisc::CStatusMessageList &messages); void setMode(Mode mode, const BlackMisc::CStatusMessageList &messages);
//! Adjust order column depending on messages
void adjustOrderColumn(const BlackMisc::CStatusMessageList &messages);
//! \copydoc QAbstractItemModel::data //! \copydoc QAbstractItemModel::data
virtual QVariant data(const QModelIndex &index, int role) const override; virtual QVariant data(const QModelIndex &index, int role) const override;
private:
Mode m_mode; //!< used mode
}; };
} // ns } // ns
} // ns } // ns

View File

@@ -38,6 +38,11 @@ namespace BlackGui
this->derivedModel()->setMode(mode, messages); this->derivedModel()->setMode(mode, messages);
} }
void CStatusMessageView::adjustOrderColumn(const CStatusMessageList &messages)
{
this->derivedModel()->adjustOrderColumn(messages);
}
void CStatusMessageView::addFilterDialog() void CStatusMessageView::addFilterDialog()
{ {
if (this->getFilterDialog()) { return; } // already existing if (this->getFilterDialog()) { return; } // already existing

View File

@@ -40,6 +40,9 @@ namespace BlackGui
//! Set mode and adjust order/no order //! Set mode and adjust order/no order
void setMode(Models::CStatusMessageListModel::Mode mode, const BlackMisc::CStatusMessageList &messages); void setMode(Models::CStatusMessageListModel::Mode mode, const BlackMisc::CStatusMessageList &messages);
//! \copydoc BlackGui::Models::CStatusMessageListModel::adjustOrderColumn
void adjustOrderColumn(const BlackMisc::CStatusMessageList &messages);
//! Add my own filter dialog //! Add my own filter dialog
void addFilterDialog(); void addFilterDialog();