diff --git a/src/core/feedsselection.cpp b/src/core/feedsselection.cpp index 0497db6b4..d75862da8 100644 --- a/src/core/feedsselection.cpp +++ b/src/core/feedsselection.cpp @@ -37,32 +37,23 @@ FeedsModelRootItem *FeedsSelection::selectedItem() const { return m_selectedItem; } -QString FeedsSelection::generateDatabaseFilter() { - if (m_selectedItem == NULL) { - return "feed IN () AND is_deleted = 0"; - } +QString FeedsSelection::generateListOfIds() { + if (m_selectedItem != NULL && + (m_selectedItem->kind() == FeedsModelRootItem::Feed || m_selectedItem->kind() == FeedsModelRootItem::Category)) { + QList children = m_selectedItem->getRecursiveChildren(); + QStringList stringy_ids; - switch (m_selectedItem->kind()) { - case FeedsModelRootItem::RecycleBin: - return "is_deleted = 1 AND is_pdeleted = 0"; + children.append(m_selectedItem); - case FeedsModelRootItem::Category: - case FeedsModelRootItem::Feed: { - QList children = m_selectedItem->getRecursiveChildren(); - QStringList stringy_ids; - - children.append(m_selectedItem); - - foreach (FeedsModelRootItem *child, children) { - if (child->kind() == FeedsModelRootItem::Feed) { - stringy_ids.append(QString::number(child->id())); - } + foreach (FeedsModelRootItem *child, children) { + if (child->kind() == FeedsModelRootItem::Feed) { + stringy_ids.append(QString::number(child->id())); } - - return QString("feed IN (%1) AND is_deleted = 0").arg(stringy_ids.join(", ")); } - default: - return "feed IN () AND is_deleted = 0"; + return stringy_ids.join(", "); + } + else { + return QString(); } } diff --git a/src/core/feedsselection.h b/src/core/feedsselection.h index c5ef85b4d..970d21a5d 100644 --- a/src/core/feedsselection.h +++ b/src/core/feedsselection.h @@ -21,7 +21,7 @@ class FeedsSelection { MessageMode mode(); FeedsModelRootItem *selectedItem() const; - QString generateDatabaseFilter(); + QString generateListOfIds(); private: FeedsModelRootItem *m_selectedItem; diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index 8861857d8..ec8159ec0 100755 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -55,8 +55,8 @@ void MessagesModel::setupIcons() { m_unreadIcon = qApp->icons()->fromTheme("mail-mark-unread"); } -FeedsSelection MessagesModel::currentFeeds() const { - return m_currentFeeds; +FeedsSelection MessagesModel::loadedSelection() const { + return m_currentSelection; } void MessagesModel::fetchAll() { @@ -72,21 +72,18 @@ void MessagesModel::setupFonts() { } void MessagesModel::loadMessages(const FeedsSelection &selection) { - m_currentFeeds = selection; + m_currentSelection = selection; -/* if (selection.size() == 1 && selection[0] == ID_RECYCLE_BIN) { - m_messageMode = MessagesFromRecycleBin; + if (m_currentSelection.mode() == FeedsSelection::MessagesFromRecycleBin) { setFilter("is_deleted = 1 AND is_pdeleted = 0"); } else { - m_messageMode = MessagesFromFeeds; - QString assembled_ids = textualFeeds().join(", "); + QString assembled_ids = m_currentSelection.generateListOfIds(); setFilter(QString("feed IN (%1) AND is_deleted = 0").arg(assembled_ids)); qDebug("Loading messages from feeds: %s.", qPrintable(assembled_ids)); - }*/ + } - setFilter(m_currentFeeds.generateDatabaseFilter()); select(); fetchAll(); } @@ -282,7 +279,7 @@ bool MessagesModel::setMessageRead(int row_index, int read) { // If commit succeeded, then emit changes, so that view // can reflect. emit dataChanged(index(row_index, 0), index(row_index, columnCount() - 1)); - emit messageCountsChanged(m_currentFeeds.mode(), false, false); + emit messageCountsChanged(m_currentSelection.mode(), false, false); return true; } else { @@ -381,7 +378,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int QString sql_delete_query; - if (m_currentFeeds.mode() == FeedsSelection::MessagesFromFeeds) { + if (m_currentSelection.mode() == FeedsSelection::MessagesFromFeeds) { sql_delete_query = QString("UPDATE Messages SET is_deleted = %2 WHERE id IN (%1);").arg(message_ids.join(", "), QString::number(deleted)); } @@ -394,7 +391,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int select(); fetchAll(); - emit messageCountsChanged(m_currentFeeds.mode(), true, false); + emit messageCountsChanged(m_currentSelection.mode(), true, false); return true; } else { @@ -419,7 +416,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re select(); fetchAll(); - emit messageCountsChanged(m_currentFeeds.mode(), false, false); + emit messageCountsChanged(m_currentSelection.mode(), false, false); return true; } else { @@ -428,7 +425,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re } bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) { - if (m_currentFeeds.mode() == FeedsSelection::MessagesFromFeeds) { + if (m_currentSelection.mode() == FeedsSelection::MessagesFromFeeds) { qDebug("Cannot restore non-deleted messages."); return false; } @@ -450,7 +447,7 @@ bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) { select(); fetchAll(); - emit messageCountsChanged(m_currentFeeds.mode(), true, true); + emit messageCountsChanged(m_currentSelection.mode(), true, true); return true; } else { diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h index 2d3ca864b..2799f8e64 100755 --- a/src/core/messagesmodel.h +++ b/src/core/messagesmodel.h @@ -99,9 +99,7 @@ class MessagesModel : public QSqlTableModel { Message messageAt(int row_index) const; int messageId(int row_index) const; - void updateDateFormat(); - - FeedsSelection currentFeeds() const; + FeedsSelection loadedSelection() const; public slots: // To disable persistent changes submissions. @@ -110,6 +108,7 @@ class MessagesModel : public QSqlTableModel { return false; } + void updateDateFormat(); void reloadWholeLayout(); // CORE messages manipulators. @@ -155,7 +154,7 @@ class MessagesModel : public QSqlTableModel { MessageFilter m_messageFilter; QString m_customDateFormat; - FeedsSelection m_currentFeeds; + FeedsSelection m_currentSelection; QList m_headerData; QList m_tooltipData; diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp index 879b7944d..04872593e 100755 --- a/src/gui/feedsview.cpp +++ b/src/gui/feedsview.cpp @@ -624,24 +624,7 @@ void FeedsView::setupAppearance() { } void FeedsView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { - /*QTreeView::selectionChanged(selected, deselected); - - QList selected_feeds = selectedFeeds(); - QList selected_ids; - - if (!selected_feeds.isEmpty()) { - foreach (FeedsModelFeed *feed, selected_feeds) { -#if defined(DEBUG) - QModelIndex index_for_feed = m_sourceModel->indexForItem(feed); - qDebug("Selecting feed '%s' (source index [%d, %d]).", qPrintable(feed->title()), index_for_feed.row(), index_for_feed.column()); -#endif - - selected_ids << feed->id(); - } - } - else if (selectedRecycleBin() != NULL) { - selected_ids << ID_RECYCLE_BIN; - }*/ + QTreeView::selectionChanged(selected, deselected); emit feedsSelected(FeedsSelection(selectedItem())); } diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index d504837ba..efd470eae 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -148,7 +148,7 @@ void MessagesView::contextMenuEvent(QContextMenuEvent *event) { initializeContextMenu(); } - if (sourceModel()->currentFeeds().mode() != FeedsSelection::MessagesFromRecycleBin) { + if (sourceModel()->loadedSelection().mode() != FeedsSelection::MessagesFromRecycleBin) { m_contextMenu->removeAction(qApp->mainForm()->m_ui->m_actionRestoreSelectedMessagesFromRecycleBin); } else {