Skip to content

Commit ec085de

Browse files
authored
Add action item to mark all entries in a feed as read
Add action to mark all entries in a feed as read
1 parent a3d65b6 commit ec085de

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

src/core/FeedsManager.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,21 @@ void Feed::markEntryAsRead(const QString &identifier)
6666
}
6767
}
6868

69+
void Feed::markAllEntriesAsRead()
70+
{
71+
const QDateTime currentDateTime(QDateTime::currentDateTimeUtc());
72+
73+
for (int i = 0; i < m_entries.count(); ++i)
74+
{
75+
if (!m_entries[i].lastReadTime.isValid())
76+
{
77+
m_entries[i].lastReadTime = currentDateTime;
78+
}
79+
}
80+
81+
emit feedModified(this);
82+
}
83+
6984
void Feed::markEntryAsRemoved(const QString &identifier)
7085
{
7186
if (!m_removedEntries.contains(identifier))

src/core/FeedsManager.h

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class Feed final : public QObject
6363
explicit Feed(const QString &title, const QUrl &url, const QIcon &icon, int updateInterval, QObject *parent = nullptr);
6464

6565
void markEntryAsRead(const QString &identifier);
66+
void markAllEntriesAsRead();
6667
void markEntryAsRemoved(const QString &identifier);
6768
void setTitle(const QString &title);
6869
void setDescription(const QString &description);

src/modules/windows/feeds/FeedsContentsWidget.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,16 @@ void FeedsContentsWidget::showFeedsContextMenu(const QPoint &position)
394394
menu.addAction(ThemesManager::createIcon(QLatin1String("view-refresh")), QCoreApplication::translate("actions", "Update"), this, &FeedsContentsWidget::updateFeed);
395395
menu.addSeparator();
396396
menu.addAction(ThemesManager::createIcon(QLatin1String("document-open")), QCoreApplication::translate("actions", "Open"), this, &FeedsContentsWidget::openFeed);
397+
menu.addSeparator();
398+
menu.addAction(tr("Mark All as Read"), this, [&]()
399+
{
400+
if (m_feed)
401+
{
402+
m_feed->markAllEntriesAsRead();
403+
404+
updateFeedModel();
405+
}
406+
});
397407
}
398408

399409
menu.addSeparator();

0 commit comments

Comments
 (0)