Unified category/feed accessors in model.
This commit is contained in:
parent
7dd09cfd89
commit
d48873ab45
@ -312,10 +312,6 @@ QList<Message> FeedsModel::messagesForFeeds(const QList<Feed*> &feeds) {
|
||||
return messages;
|
||||
}
|
||||
|
||||
QList<Category*> FeedsModel::allCategories() {
|
||||
return categoriesForItem(m_rootItem);
|
||||
}
|
||||
|
||||
int FeedsModel::columnCount(const QModelIndex &parent) const {
|
||||
Q_UNUSED(parent)
|
||||
|
||||
@ -543,7 +539,7 @@ QList<Feed*> FeedsModel::allFeeds() {
|
||||
}
|
||||
|
||||
QList<Feed*> FeedsModel::feedsForItem(RootItem *root) {
|
||||
QList<RootItem*> children = root->getRecursiveChildren();
|
||||
QList<RootItem*> children = root->getSubTree();
|
||||
QList<Feed*> feeds;
|
||||
|
||||
foreach (RootItem *child, children) {
|
||||
@ -555,22 +551,18 @@ QList<Feed*> FeedsModel::feedsForItem(RootItem *root) {
|
||||
return feeds;
|
||||
}
|
||||
|
||||
QList<Category*> FeedsModel::allCategories() {
|
||||
return categoriesForItem(m_rootItem);
|
||||
}
|
||||
|
||||
QList<Category*> FeedsModel::categoriesForItem(RootItem *root) {
|
||||
QList<RootItem*> children = root->getSubTree();
|
||||
QList<Category*> categories;
|
||||
QList<RootItem*> parents;
|
||||
|
||||
parents.append(root);
|
||||
|
||||
while (!parents.isEmpty()) {
|
||||
RootItem *item = parents.takeFirst();
|
||||
|
||||
if (item->kind() == RootItemKind::Category) {
|
||||
// This item is category, add it to the output list and
|
||||
// scan its children.
|
||||
categories.append( item->toCategory());
|
||||
foreach (RootItem *child, children) {
|
||||
if (child->kind() == RootItemKind::Category) {
|
||||
categories.append(child->toCategory());
|
||||
}
|
||||
|
||||
parents.append(item->childItems());
|
||||
}
|
||||
|
||||
return categories;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
|
||||
#include "core/messagesmodel.h"
|
||||
#include "core/message.h"
|
||||
#include "core/rootitem.h"
|
||||
|
||||
|
||||
|
@ -58,7 +58,7 @@ RootItem *FeedsSelection::selectedItem() const {
|
||||
QString FeedsSelection::generateListOfIds() {
|
||||
if (m_selectedItem != NULL &&
|
||||
(m_selectedItem->kind() == RootItemKind::Feed || m_selectedItem->kind() == RootItemKind::Category)) {
|
||||
QList<RootItem*> children = m_selectedItem->getRecursiveChildren();
|
||||
QList<RootItem*> children = m_selectedItem->getSubTree();
|
||||
QStringList stringy_ids;
|
||||
|
||||
foreach (RootItem *child, children) {
|
||||
|
@ -74,36 +74,20 @@ int RootItem::countOfAllMessages() const {
|
||||
return total_count;
|
||||
}
|
||||
|
||||
QList<RootItem*> RootItem::getRecursiveChildren() {
|
||||
QList<RootItem*> RootItem::getSubTree() {
|
||||
QList<RootItem*> children;
|
||||
|
||||
if (childCount() == 0) {
|
||||
// Root itself has no children, it is either feed or
|
||||
// empty category?
|
||||
children.append(this);
|
||||
}
|
||||
else {
|
||||
// Root itself is a CATEGORY or ROOT item.
|
||||
QList<RootItem*> traversable_items;
|
||||
// Root itself is a CATEGORY or ROOT item.
|
||||
QList<RootItem*> traversable_items;
|
||||
|
||||
traversable_items.append(this);
|
||||
traversable_items.append(this);
|
||||
|
||||
// Iterate all nested categories.
|
||||
while (!traversable_items.isEmpty()) {
|
||||
RootItem *active_item = traversable_items.takeFirst();
|
||||
children.append(active_item);
|
||||
// Iterate all nested categories.
|
||||
while (!traversable_items.isEmpty()) {
|
||||
RootItem *active_item = traversable_items.takeFirst();
|
||||
|
||||
foreach (RootItem *child, active_item->childItems()) {
|
||||
if (child->childCount() == 0) {
|
||||
// This child is feed or empty category.
|
||||
children.append(child);
|
||||
}
|
||||
else {
|
||||
// This child is category, add its child feeds too.
|
||||
traversable_items.append(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
children.append(active_item);
|
||||
traversable_items.append(active_item->childItems());
|
||||
}
|
||||
|
||||
return children;
|
||||
|
@ -138,7 +138,9 @@ class RootItem {
|
||||
m_childItems.clear();
|
||||
}
|
||||
|
||||
QList<RootItem*> getRecursiveChildren();
|
||||
// Returns flat list of all items from subtree where this item is a root.
|
||||
// Returned list includes this item too.
|
||||
QList<RootItem*> getSubTree();
|
||||
|
||||
// Removes particular child at given index.
|
||||
// NOTE: Child is NOT freed from the memory.
|
||||
|
@ -330,12 +330,14 @@ void FeedsView::markAllFeedsRead() {
|
||||
|
||||
void FeedsView::fetchMetadataForSelectedFeed() {
|
||||
// TODO: fix
|
||||
/*
|
||||
StandardFeed *selected_feed = (StandardFeed*) selectedFeed();
|
||||
|
||||
if (selected_feed != NULL) {
|
||||
selected_feed->fetchMetadataForItself();
|
||||
m_sourceModel->reloadChangedLayout(QModelIndexList() << m_proxyModel->mapToSource(selectionModel()->selectedRows(0).at(0)));
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void FeedsView::clearAllReadMessages() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user