diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index cae3e6e30..49014e078 100755 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -30,7 +30,7 @@ MessagesModel::MessagesModel(QObject *parent) : QSqlTableModel(parent, qApp->database()->connection(QSL("MessagesModel"), DatabaseFactory::FromSettings)), - m_messageFilter(NoHighlighting), m_customDateFormat(QString()) { + m_messageHighlighter(NoHighlighting), m_customDateFormat(QString()) { setObjectName(QSL("MessagesModel")); setupFonts(); setupIcons(); @@ -55,11 +55,9 @@ void MessagesModel::setupIcons() { m_unreadIcon = qApp->icons()->fromTheme(QSL("mail-mark-unread")); } -FeedsSelection MessagesModel::loadedSelection() const { - return m_currentSelection; -} +void MessagesModel::fetchAllData() { + select(); -void MessagesModel::fetchAll() { while (canFetchMore()) { fetchMore(); } @@ -84,12 +82,16 @@ void MessagesModel::loadMessages(const FeedsSelection &selection) { qDebug("Loading messages from feeds: %s.", qPrintable(assembled_ids)); } - select(); - fetchAll(); + fetchAllData(); } -void MessagesModel::filterMessages(MessagesModel::MessageFilter filter) { - m_messageFilter = filter; +bool MessagesModel::submitAll() { + qFatal("Submitting changes via model is not allowed."); + return false; +} + +void MessagesModel::highlightMessages(MessagesModel::MessageHighlighter highlight) { + m_messageHighlighter = highlight; emit layoutAboutToBeChanged(); emit layoutChanged(); } @@ -196,7 +198,7 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const { return QSqlTableModel::data(index(idx.row(), MSG_DB_READ_INDEX)).toInt() == 1 ? m_normalFont : m_boldFont; case Qt::ForegroundRole: - switch (m_messageFilter) { + switch (m_messageHighlighter) { case HighlightImportant: return QSqlTableModel::data(index(idx.row(), MSG_DB_IMPORTANT_INDEX)).toInt() == 1 ? QColor(Qt::blue) : QVariant(); @@ -348,8 +350,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_important = NOT is_important WHERE id IN (%1);")) .arg(message_ids.join(QSL(", "))))) { - select(); - fetchAll(); + fetchAllData(); //emit messageCountsChanged(false); return true; @@ -383,8 +384,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int } if (query_read_msg.exec(sql_delete_query)) { - select(); - fetchAll(); + fetchAllData(); emit messageCountsChanged(m_currentSelection.mode(), true, false); return true; @@ -409,8 +409,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, RootIt if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_read = %2 WHERE id IN (%1);")) .arg(message_ids.join(QSL(", ")), read == RootItem::Read ? QSL("1") : QSL("0")))) { - select(); - fetchAll(); + fetchAllData(); emit messageCountsChanged(m_currentSelection.mode(), false, false); return true; @@ -440,8 +439,7 @@ bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) { QString sql_delete_query = QString(QSL("UPDATE Messages SET is_deleted = 0 WHERE id IN (%1);")).arg(message_ids.join(QSL(", "))); if (query_read_msg.exec(sql_delete_query)) { - select(); - fetchAll(); + fetchAllData(); emit messageCountsChanged(m_currentSelection.mode(), true, true); return true; diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 312982288..d9b747502 100755 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -35,7 +35,7 @@ class MessagesModel : public QSqlTableModel { public: // Enum which describes basic filtering schemes // for messages. - enum MessageFilter { + enum MessageHighlighter { NoHighlighting = 100, HighlightUnread = 101, HighlightImportant = 102 @@ -55,15 +55,6 @@ class MessagesModel : public QSqlTableModel { Message messageAt(int row_index) const; int messageId(int row_index) const; - FeedsSelection loadedSelection() const; - - public slots: - // To disable persistent changes submissions. - inline bool submitAll() { - qFatal("Submitting changes via model is not allowed."); - return false; - } - void updateDateFormat(); void reloadWholeLayout(); @@ -85,18 +76,24 @@ class MessagesModel : public QSqlTableModel { bool setBatchMessagesRestored(const QModelIndexList &messages); // Fetches ALL available data to the model. - void fetchAll(); + void fetchAllData(); + // Filters messages + void highlightMessages(MessageHighlighter highlight); + + public slots: // Loads messages of given feeds. void loadMessages(const FeedsSelection &selection); - void filterMessages(MessageFilter filter); - signals: // Emitted if some persistent change is made which affects count of "unread/all" messages. void messageCountsChanged(FeedsSelection::SelectionMode mode, bool total_msg_count_changed, bool any_msg_restored); - protected: + private slots: + // To disable persistent changes submissions. + bool submitAll(); + + private: // Sets up header data. void setupHeaderData(); @@ -106,8 +103,7 @@ class MessagesModel : public QSqlTableModel { // Sets up all icons which are used directly by this model. void setupIcons(); - private: - MessageFilter m_messageFilter; + MessageHighlighter m_messageHighlighter; QString m_customDateFormat; FeedsSelection m_currentSelection; @@ -122,6 +118,6 @@ class MessagesModel : public QSqlTableModel { QIcon m_unreadIcon; }; -Q_DECLARE_METATYPE(MessagesModel::MessageFilter) +Q_DECLARE_METATYPE(MessagesModel::MessageHighlighter) #endif // MESSAGESMODEL_H diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index c5ccaf78e..32208b220 100755 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -313,7 +313,7 @@ void FeedMessageViewer::createConnections() { // Filtering & searching. connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), m_messagesView, SLOT(searchMessages(QString))); - connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter))); + connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageHighlighter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageHighlighter))); // Message changers. connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear())); diff --git a/src/gui/messagestoolbar.cpp b/src/gui/messagestoolbar.cpp index 6d511e4ef..c907a5682 100755 --- a/src/gui/messagestoolbar.cpp +++ b/src/gui/messagestoolbar.cpp @@ -103,7 +103,7 @@ void MessagesToolBar::handleMessageHighlighterChange(QAction *action) { m_btnMessageHighlighter->setIcon(action->icon()); m_btnMessageHighlighter->setToolTip(action->text()); - emit messageFilterChanged(action->data().value()); + emit messageFilterChanged(action->data().value()); } void MessagesToolBar::initializeSearchBox() { diff --git a/src/gui/messagestoolbar.h b/src/gui/messagestoolbar.h old mode 100644 new mode 100755 index 673df7a2f..e1f33d559 --- a/src/gui/messagestoolbar.h +++ b/src/gui/messagestoolbar.h @@ -56,7 +56,7 @@ class MessagesToolBar : public BaseToolBar { void messageSearchPatternChanged(const QString &pattern); // Emitted if message filter is changed. - void messageFilterChanged(MessagesModel::MessageFilter filter); + void messageFilterChanged(MessagesModel::MessageHighlighter filter); private slots: // Called when highlighter gets changed. diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index e8eb2c609..ae2cd009f 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -78,8 +78,7 @@ void MessagesView::reloadSelections(bool mark_current_index_read) { QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes); // Reload the model now. - m_sourceModel->select(); - m_sourceModel->fetchAll(); + m_sourceModel->fetchAllData(); sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder()); @@ -451,8 +450,8 @@ void MessagesView::searchMessages(const QString &pattern) { } } -void MessagesView::filterMessages(MessagesModel::MessageFilter filter) { - m_sourceModel->filterMessages(filter); +void MessagesView::filterMessages(MessagesModel::MessageHighlighter filter) { + m_sourceModel->highlightMessages(filter); } void MessagesView::adjustColumns() { diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index b03621912..2e43e0dd8 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -79,7 +79,7 @@ class MessagesView : public QTreeView { // Searchs the visible message according to given pattern. void searchMessages(const QString &pattern); - void filterMessages(MessagesModel::MessageFilter filter); + void filterMessages(MessagesModel::MessageHighlighter filter); private slots: // Marks given indexes as selected.