From e86d98fb37c10f1f0a1ae4123981c63f90c77c66 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 9 Apr 2014 08:42:26 +0200 Subject: [PATCH] OMG -> Better now. --- src/core/messagesmodel.cpp | 25 +++++++++++++++++++++++++ src/core/messagesmodel.h | 2 ++ src/gui/feedmessageviewer.cpp | 4 ++-- src/gui/messagestoolbar.cpp | 10 +++++----- src/gui/messagesview.cpp | 4 ++++ src/gui/messagesview.h | 1 + 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index 8f0042bc0..c90aaa5d9 100644 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -79,6 +79,12 @@ void MessagesModel::loadMessages(const QList feed_ids) { qDebug("Loading messages from feeds: %s.", qPrintable(assembled_ids)); } +void MessagesModel::filterMessages(MessagesModel::DisplayFilter filter) { + m_filter = filter; + emit layoutAboutToBeChanged(); + emit layoutChanged(); +} + QStringList MessagesModel::textualFeeds() const { QStringList stringy_ids; stringy_ids.reserve(m_currentFeeds.size()); @@ -171,6 +177,25 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const { m_normalFont : m_boldFont; + case Qt::ForegroundRole: + switch (m_filter) { + case DisplayImportant: + return QSqlTableModel::data(index(idx.row(), + MSG_DB_IMPORTANT_INDEX)).toInt() == 1 ? + QColor(Qt::blue) : + QVariant(); + + case DisplayUnread: + return QSqlTableModel::data(index(idx.row(), + MSG_DB_READ_INDEX)).toInt() == 0 ? + QColor(Qt::blue) : + QVariant(); + + case DisplayAll: + default: + return QVariant(); + } + case Qt::DecorationRole: { int index_column = idx.column(); diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index ed40a219b..e4d11add9 100644 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -104,6 +104,8 @@ class MessagesModel : public QSqlTableModel { // Loads messages of given feeds. void loadMessages(const QList feed_ids); + void filterMessages(DisplayFilter filter); + signals: // Emitted if some persistent change is made which affects // count of "unread/all" messages. diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index f48f239d7..4d40c3cc5 100644 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -197,8 +197,8 @@ void FeedMessageViewer::createConnections() { // Filtering & searching. connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), m_messagesView, SLOT(searchMessages(QString))); - /*connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::DisplayFilter)), - m_messagesView, SLOT(filterMessages(MessagesModel::DisplayFilter)));*/ + connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::DisplayFilter)), + m_messagesView, SLOT(filterMessages(MessagesModel::DisplayFilter))); // Message changers. connect(m_messagesView, SIGNAL(currentMessagesRemoved()), diff --git a/src/gui/messagestoolbar.cpp b/src/gui/messagestoolbar.cpp index 74cd8beb8..cd32d1f2c 100644 --- a/src/gui/messagestoolbar.cpp +++ b/src/gui/messagestoolbar.cpp @@ -25,13 +25,13 @@ MessagesToolBar::MessagesToolBar(const QString &title, QWidget *parent) m_actionSearchMessages->setProperty("type", SEACRH_MESSAGES_ACTION_NAME); m_actionSearchMessages->setProperty("name", tr("Message search box")); - m_menuFilterMessages = new QMenu(tr("Menu for filtering messages"), this); + m_menuFilterMessages = new QMenu(tr("Menu for highlighting messages"), this); m_menuFilterMessages->addAction(IconFactory::instance()->fromTheme("mail-mark-read"), - tr("Display all messages"))->setData(QVariant::fromValue(MessagesModel::DisplayAll)); + tr("No extra highlighting"))->setData(QVariant::fromValue(MessagesModel::DisplayAll)); m_menuFilterMessages->addAction(IconFactory::instance()->fromTheme("mail-mark-unread"), - tr("Display unread messages"))->setData(QVariant::fromValue(MessagesModel::DisplayUnread)); + tr("Highlight unread messages"))->setData(QVariant::fromValue(MessagesModel::DisplayUnread)); m_menuFilterMessages->addAction(IconFactory::instance()->fromTheme("mail-mark-favorite"), - tr("Display important messages"))->setData(QVariant::fromValue(MessagesModel::DisplayImportant)); + tr("Highlight important messages"))->setData(QVariant::fromValue(MessagesModel::DisplayImportant)); m_btnFilterMessages = new QToolButton(this); m_btnFilterMessages->setToolTip(tr("Display all messages")); @@ -42,7 +42,7 @@ MessagesToolBar::MessagesToolBar(const QString &title, QWidget *parent) m_actionFilterMessages = new QWidgetAction(this); m_actionFilterMessages->setDefaultWidget(m_btnFilterMessages); m_actionFilterMessages->setProperty("type", FILTER_ACTION_NAME); - m_actionFilterMessages->setProperty("name", tr("Message filter")); + m_actionFilterMessages->setProperty("name", tr("Message highlighter")); // Update right margin of filter textbox. QMargins margins = contentsMargins(); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index ad0b904cd..e102662ad 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -411,6 +411,10 @@ void MessagesView::searchMessages(const QString &pattern) { } } +void MessagesView::filterMessages(MessagesModel::DisplayFilter filter) { + m_sourceModel->filterMessages(filter); +} + void MessagesView::adjustColumns() { if (header()->count() > 0 && !m_columnsAdjusted) { m_columnsAdjusted = true; diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index 86511bc83..ec8d2577b 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -78,6 +78,7 @@ class MessagesView : public QTreeView { // Searchs the visible message according to given pattern. void searchMessages(const QString &pattern); + void filterMessages(MessagesModel::DisplayFilter filter); protected slots: // Marks given indexes as selected.