Browse Source

Merge pull request #6757 from glassez/rss

Forward add/remove child RSS Item event as set of add/remove Articles events
adaptive-webui-19844
Vladimir Golovnev 8 years ago committed by GitHub
parent
commit
692e4a986a
  1. 21
      src/base/rss/rss_folder.cpp
  2. 1
      src/base/rss/rss_folder.h

21
src/base/rss/rss_folder.cpp

@ -105,12 +105,6 @@ void Folder::handleItemUnreadCountChanged()
emit unreadCountChanged(this); emit unreadCountChanged(this);
} }
void Folder::handleItemAboutToBeDestroyed(Item *item)
{
if (item->unreadCount() > 0)
emit unreadCountChanged(this);
}
void Folder::cleanup() void Folder::cleanup()
{ {
foreach (Item *item, items()) foreach (Item *item, items())
@ -127,14 +121,23 @@ void Folder::addItem(Item *item)
connect(item, &Item::articleRead, this, &Item::articleRead); connect(item, &Item::articleRead, this, &Item::articleRead);
connect(item, &Item::articleAboutToBeRemoved, this, &Item::articleAboutToBeRemoved); connect(item, &Item::articleAboutToBeRemoved, this, &Item::articleAboutToBeRemoved);
connect(item, &Item::unreadCountChanged, this, &Folder::handleItemUnreadCountChanged); connect(item, &Item::unreadCountChanged, this, &Folder::handleItemUnreadCountChanged);
connect(item, &Item::aboutToBeDestroyed, this, &Folder::handleItemAboutToBeDestroyed);
emit unreadCountChanged(this); for (auto article: item->articles())
emit newArticle(article);
if (item->unreadCount() > 0)
emit unreadCountChanged(this);
} }
void Folder::removeItem(Item *item) void Folder::removeItem(Item *item)
{ {
Q_ASSERT(m_items.contains(item)); Q_ASSERT(m_items.contains(item));
for (auto article: item->articles())
emit articleAboutToBeRemoved(article);
item->disconnect(this); item->disconnect(this);
m_items.removeOne(item); m_items.removeOne(item);
emit unreadCountChanged(this); if (item->unreadCount() > 0)
emit unreadCountChanged(this);
} }

1
src/base/rss/rss_folder.h

@ -59,7 +59,6 @@ namespace RSS
private slots: private slots:
void handleItemUnreadCountChanged(); void handleItemUnreadCountChanged();
void handleItemAboutToBeDestroyed(Item *item);
private: private:
void cleanup() override; void cleanup() override;

Loading…
Cancel
Save