work on article ignore/limit
This commit is contained in:
parent
869e0d1f70
commit
796fbf916e
11 changed files with 93 additions and 92 deletions
|
@ -518,14 +518,16 @@ void FeedDownloader::removeDuplicateMessages(QList<Message>& messages) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedDownloader::removeTooOldMessages(Feed* feed, QList<Message>& msgs) {
|
void FeedDownloader::removeTooOldMessages(Feed* feed, QList<Message>& msgs) {
|
||||||
if (!feed->addAnyDatetimeArticles()) {
|
const Feed::ArticleIgnoreLimit art = feed->articleIgnoreLimit();
|
||||||
|
|
||||||
|
if (!art.m_addAnyArticlesToDb) {
|
||||||
QDateTime dt_to_avoid;
|
QDateTime dt_to_avoid;
|
||||||
|
|
||||||
if (feed->datetimeToAvoid().isValid() && feed->datetimeToAvoid().toMSecsSinceEpoch() > 0) {
|
if (art.m_dtToAvoid.isValid() && art.m_dtToAvoid.toMSecsSinceEpoch() > 0) {
|
||||||
dt_to_avoid = feed->datetimeToAvoid();
|
dt_to_avoid = art.m_dtToAvoid;
|
||||||
}
|
}
|
||||||
else if (feed->hoursToAvoid() > 0) {
|
else if (art.m_hoursToAvoid > 0) {
|
||||||
dt_to_avoid = QDateTime::currentDateTimeUtc().addSecs((feed->hoursToAvoid() * -3600));
|
dt_to_avoid = QDateTime::currentDateTimeUtc().addSecs((art.m_hoursToAvoid * -3600));
|
||||||
}
|
}
|
||||||
else if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::AvoidOldArticles)).toBool()) {
|
else if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::AvoidOldArticles)).toBool()) {
|
||||||
QDateTime global_dt_to_avoid =
|
QDateTime global_dt_to_avoid =
|
||||||
|
|
|
@ -2554,11 +2554,14 @@ void DatabaseQueries::createOverwriteFeed(const QSqlDatabase& db, Feed* feed, in
|
||||||
q.bindValue(QSL(":is_quiet"), feed->isQuiet());
|
q.bindValue(QSL(":is_quiet"), feed->isQuiet());
|
||||||
q.bindValue(QSL(":open_articles"), feed->openArticlesDirectly());
|
q.bindValue(QSL(":open_articles"), feed->openArticlesDirectly());
|
||||||
q.bindValue(QSL(":is_rtl"), feed->isRtl());
|
q.bindValue(QSL(":is_rtl"), feed->isRtl());
|
||||||
q.bindValue(QSL(":add_any_datetime_articles"), feed->addAnyDatetimeArticles());
|
|
||||||
|
const Feed::ArticleIgnoreLimit art = feed->articleIgnoreLimit();
|
||||||
|
|
||||||
|
q.bindValue(QSL(":add_any_datetime_articles"), art.m_addAnyArticlesToDb);
|
||||||
q.bindValue(QSL(":datetime_to_avoid"),
|
q.bindValue(QSL(":datetime_to_avoid"),
|
||||||
(feed->datetimeToAvoid().isValid() && feed->datetimeToAvoid().toMSecsSinceEpoch() > 0)
|
(art.m_dtToAvoid.isValid() && art.m_dtToAvoid.toMSecsSinceEpoch() > 0)
|
||||||
? feed->datetimeToAvoid().toMSecsSinceEpoch()
|
? art.m_dtToAvoid.toMSecsSinceEpoch()
|
||||||
: feed->hoursToAvoid());
|
: art.m_hoursToAvoid);
|
||||||
|
|
||||||
auto custom_data = feed->customDatabaseData();
|
auto custom_data = feed->customDatabaseData();
|
||||||
QString serialized_custom_data = serializeCustomData(custom_data);
|
QString serialized_custom_data = serializeCustomData(custom_data);
|
||||||
|
|
|
@ -381,17 +381,21 @@ Assignment DatabaseQueries::getFeeds(const QSqlDatabase& db,
|
||||||
feed->setIsSwitchedOff(query.value(FDS_DB_IS_OFF_INDEX).toBool());
|
feed->setIsSwitchedOff(query.value(FDS_DB_IS_OFF_INDEX).toBool());
|
||||||
feed->setIsQuiet(query.value(FDS_DB_IS_QUIET_INDEX).toBool());
|
feed->setIsQuiet(query.value(FDS_DB_IS_QUIET_INDEX).toBool());
|
||||||
feed->setIsRtl(query.value(FDS_DB_IS_RTL_INDEX).toBool());
|
feed->setIsRtl(query.value(FDS_DB_IS_RTL_INDEX).toBool());
|
||||||
feed->setAddAnyDatetimeArticles(query.value(FDS_DB_ADD_ANY_DATETIME_ARTICLES_INDEX).toBool());
|
|
||||||
|
Feed::ArticleIgnoreLimit art;
|
||||||
|
|
||||||
|
art.m_addAnyArticlesToDb = query.value(FDS_DB_ADD_ANY_DATETIME_ARTICLES_INDEX).toBool();
|
||||||
|
|
||||||
qint64 time_to_avoid = query.value(FDS_DB_DATETIME_TO_AVOID_INDEX).value<qint64>();
|
qint64 time_to_avoid = query.value(FDS_DB_DATETIME_TO_AVOID_INDEX).value<qint64>();
|
||||||
|
|
||||||
if (time_to_avoid > 10000) {
|
if (time_to_avoid > 10000) {
|
||||||
feed->setDatetimeToAvoid(TextFactory::parseDateTime(time_to_avoid));
|
art.m_dtToAvoid = TextFactory::parseDateTime(time_to_avoid);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
feed->setHoursToAvoid(time_to_avoid);
|
art.m_hoursToAvoid = time_to_avoid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
feed->setArticleIgnoreLimit(art);
|
||||||
feed->setOpenArticlesDirectly(query.value(FDS_DB_OPEN_ARTICLES_INDEX).toBool());
|
feed->setOpenArticlesDirectly(query.value(FDS_DB_OPEN_ARTICLES_INDEX).toBool());
|
||||||
|
|
||||||
qDebugNN << LOGSEC_CORE << "Custom ID of feed when loading from DB is" << QUOTE_W_SPACE_DOT(feed->customId());
|
qDebugNN << LOGSEC_CORE << "Custom ID of feed when loading from DB is" << QUOTE_W_SPACE_DOT(feed->customId());
|
||||||
|
|
|
@ -19,7 +19,7 @@ ArticleAmountControl::ArticleAmountControl(QWidget* parent) : QWidget(parent) {
|
||||||
false);
|
false);
|
||||||
|
|
||||||
m_ui.m_spinArticleCount->setSpecialValueText(tr("all articles"));
|
m_ui.m_spinArticleCount->setSpecialValueText(tr("all articles"));
|
||||||
m_ui.m_cbAddAnyDateArticles->setChecked(true);
|
// m_ui.m_cbAddAnyDateArticles->setChecked(true);
|
||||||
m_ui.m_dtDateTimeToAvoid->setEnabled(false);
|
m_ui.m_dtDateTimeToAvoid->setEnabled(false);
|
||||||
m_ui.m_spinHoursAvoid->setEnabled(false);
|
m_ui.m_spinHoursAvoid->setEnabled(false);
|
||||||
m_ui.m_spinHoursAvoid->setMode(TimeSpinBox::Mode::DaysHours);
|
m_ui.m_spinHoursAvoid->setMode(TimeSpinBox::Mode::DaysHours);
|
||||||
|
@ -57,7 +57,7 @@ void ArticleAmountControl::setForAppWideFeatures(bool app_wide, bool batch_edit)
|
||||||
m_ui.m_cbAddAnyDateArticles->setVisible(false);
|
m_ui.m_cbAddAnyDateArticles->setVisible(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
connect(m_ui.m_cbAddAnyDateArticles, &QCheckBox::toggled, m_ui.m_gbAvoidOldArticles, &QGroupBox::setEnabled);
|
connect(m_ui.m_cbAddAnyDateArticles, &QCheckBox::toggled, m_ui.m_wdgAvoidOldArticles, &QGroupBox::setDisabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (batch_edit) {
|
if (batch_edit) {
|
||||||
|
@ -78,7 +78,7 @@ void ArticleAmountControl::setForAppWideFeatures(bool app_wide, bool batch_edit)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArticleAmountControl::load(const Setup& setup) {
|
void ArticleAmountControl::load(const Feed::ArticleIgnoreLimit& setup) {
|
||||||
// Ignoring articles.
|
// Ignoring articles.
|
||||||
if (setup.m_dtToAvoid.isValid() && setup.m_dtToAvoid.toMSecsSinceEpoch() > 0) {
|
if (setup.m_dtToAvoid.isValid() && setup.m_dtToAvoid.toMSecsSinceEpoch() > 0) {
|
||||||
m_ui.m_rbAvoidAbsolute->setChecked(true);
|
m_ui.m_rbAvoidAbsolute->setChecked(true);
|
||||||
|
@ -90,6 +90,7 @@ void ArticleAmountControl::load(const Setup& setup) {
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui.m_gbAvoidOldArticles->setChecked(setup.m_avoidOldArticles);
|
m_ui.m_gbAvoidOldArticles->setChecked(setup.m_avoidOldArticles);
|
||||||
|
m_ui.m_cbAddAnyDateArticles->setChecked(setup.m_addAnyArticlesToDb);
|
||||||
|
|
||||||
// Limitting articles.
|
// Limitting articles.
|
||||||
m_ui.m_spinArticleCount->setValue(setup.m_keepCountOfArticles);
|
m_ui.m_spinArticleCount->setValue(setup.m_keepCountOfArticles);
|
||||||
|
@ -98,8 +99,8 @@ void ArticleAmountControl::load(const Setup& setup) {
|
||||||
m_ui.m_cbNoRemoveUnread->setChecked(setup.m_doNotRemoveUnread);
|
m_ui.m_cbNoRemoveUnread->setChecked(setup.m_doNotRemoveUnread);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArticleAmountControl::Setup ArticleAmountControl::save() const {
|
Feed::ArticleIgnoreLimit ArticleAmountControl::save() const {
|
||||||
Setup setup;
|
Feed::ArticleIgnoreLimit setup;
|
||||||
|
|
||||||
// Ignoring articles.
|
// Ignoring articles.
|
||||||
setup.m_addAnyArticlesToDb = m_ui.m_cbAddAnyDateArticles->isChecked();
|
setup.m_addAnyArticlesToDb = m_ui.m_cbAddAnyDateArticles->isChecked();
|
||||||
|
@ -121,29 +122,31 @@ ArticleAmountControl::Setup ArticleAmountControl::save() const {
|
||||||
return setup;
|
return setup;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isChangeAllowed(MultiFeedEditCheckBox* mcb) {
|
bool isChangeAllowed(MultiFeedEditCheckBox* mcb, bool batch_edit) {
|
||||||
return mcb->isChecked();
|
return !batch_edit || mcb->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArticleAmountControl::saveFeed(Feed* fd) const {
|
void ArticleAmountControl::saveFeed(Feed* fd, bool batch_edit) const {
|
||||||
if (isChangeAllowed(m_ui.m_mcbAddAnyDateArticles)) {
|
Feed::ArticleIgnoreLimit& art = fd->articleIgnoreLimit();
|
||||||
fd->setAddAnyDatetimeArticles(m_ui.m_cbAddAnyDateArticles->isChecked());
|
|
||||||
|
if (isChangeAllowed(m_ui.m_mcbAddAnyDateArticles, batch_edit)) {
|
||||||
|
art.m_addAnyArticlesToDb = m_ui.m_cbAddAnyDateArticles->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isChangeAllowed(m_ui.m_mcbAvoidOldArticles)) {
|
if (isChangeAllowed(m_ui.m_mcbAvoidOldArticles, batch_edit)) {
|
||||||
if (m_ui.m_gbAvoidOldArticles->isChecked()) {
|
if (m_ui.m_gbAvoidOldArticles->isChecked()) {
|
||||||
if (m_ui.m_rbAvoidAbsolute->isChecked()) {
|
if (m_ui.m_rbAvoidAbsolute->isChecked()) {
|
||||||
fd->setDatetimeToAvoid(m_ui.m_dtDateTimeToAvoid->dateTime());
|
art.m_dtToAvoid = m_ui.m_dtDateTimeToAvoid->dateTime();
|
||||||
fd->setHoursToAvoid(0);
|
art.m_hoursToAvoid = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fd->setDatetimeToAvoid({});
|
art.m_dtToAvoid = {};
|
||||||
fd->setHoursToAvoid(m_ui.m_spinHoursAvoid->value());
|
art.m_hoursToAvoid = m_ui.m_spinHoursAvoid->value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fd->setDatetimeToAvoid({});
|
art.m_dtToAvoid = {};
|
||||||
fd->setHoursToAvoid(0);
|
art.m_hoursToAvoid = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "ui_articleamountcontrol.h"
|
#include "ui_articleamountcontrol.h"
|
||||||
|
|
||||||
class Feed;
|
#include "services/abstract/feed.h"
|
||||||
|
|
||||||
class ArticleAmountControl : public QWidget {
|
class ArticleAmountControl : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -15,28 +15,14 @@ class ArticleAmountControl : public QWidget {
|
||||||
friend class FormFeedDetails;
|
friend class FormFeedDetails;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
struct Setup {
|
|
||||||
// Ignoring articles.
|
|
||||||
bool m_avoidOldArticles = false;
|
|
||||||
bool m_addAnyArticlesToDb = false;
|
|
||||||
QDateTime m_dtToAvoid = QDateTime();
|
|
||||||
int m_hoursToAvoid = 0;
|
|
||||||
|
|
||||||
// Limitting articles.
|
|
||||||
int m_keepCountOfArticles = 0;
|
|
||||||
bool m_doNotRemoveStarred = true;
|
|
||||||
bool m_doNotRemoveUnread = true;
|
|
||||||
bool m_moveToBinDontPurge = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
explicit ArticleAmountControl(QWidget* parent = nullptr);
|
explicit ArticleAmountControl(QWidget* parent = nullptr);
|
||||||
|
|
||||||
void setForAppWideFeatures(bool app_wide, bool batch_edit);
|
void setForAppWideFeatures(bool app_wide, bool batch_edit);
|
||||||
|
|
||||||
void load(const Setup& setup);
|
void load(const Feed::ArticleIgnoreLimit& setup);
|
||||||
Setup save() const;
|
Feed::ArticleIgnoreLimit save() const;
|
||||||
|
|
||||||
void saveFeed(Feed* fd) const;
|
void saveFeed(Feed* fd, bool batch_edit) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateArticleCountSuffix(int count);
|
void updateArticleCountSuffix(int count);
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_tabIgnore">
|
<widget class="QWidget" name="m_tabIgnore">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -72,9 +72,6 @@
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="m_gbAvoidOldArticles">
|
<widget class="QGroupBox" name="m_gbAvoidOldArticles">
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Avoid adding articles before this date/time into the database</string>
|
<string>Avoid adding articles before this date/time into the database</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -283,7 +283,7 @@ void SettingsFeedsMessages::loadSettings() {
|
||||||
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::UseLegacyArticleFormat)).toBool());
|
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::UseLegacyArticleFormat)).toBool());
|
||||||
}
|
}
|
||||||
|
|
||||||
ArticleAmountControl::Setup art_limit;
|
Feed::ArticleIgnoreLimit art_limit;
|
||||||
art_limit.m_avoidOldArticles = settings()->value(GROUP(Messages), SETTING(Messages::AvoidOldArticles)).toBool();
|
art_limit.m_avoidOldArticles = settings()->value(GROUP(Messages), SETTING(Messages::AvoidOldArticles)).toBool();
|
||||||
art_limit.m_dtToAvoid = settings()->value(GROUP(Messages), SETTING(Messages::DateTimeToAvoidArticle)).toDateTime();
|
art_limit.m_dtToAvoid = settings()->value(GROUP(Messages), SETTING(Messages::DateTimeToAvoidArticle)).toDateTime();
|
||||||
art_limit.m_hoursToAvoid = settings()->value(GROUP(Messages), SETTING(Messages::HoursToAvoidArticle)).toInt();
|
art_limit.m_hoursToAvoid = settings()->value(GROUP(Messages), SETTING(Messages::HoursToAvoidArticle)).toInt();
|
||||||
|
@ -413,7 +413,7 @@ void SettingsFeedsMessages::saveSettings() {
|
||||||
m_ui->m_cbLegacyArticleFormatting->isChecked());
|
m_ui->m_cbLegacyArticleFormatting->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
ArticleAmountControl::Setup art_limit = m_ui->m_wdgArticleLimiting->save();
|
Feed::ArticleIgnoreLimit art_limit = m_ui->m_wdgArticleLimiting->save();
|
||||||
|
|
||||||
settings()->setValue(GROUP(Messages), Messages::AvoidOldArticles, art_limit.m_avoidOldArticles);
|
settings()->setValue(GROUP(Messages), Messages::AvoidOldArticles, art_limit.m_avoidOldArticles);
|
||||||
settings()->setValue(GROUP(Messages), Messages::DateTimeToAvoidArticle, art_limit.m_dtToAvoid);
|
settings()->setValue(GROUP(Messages), Messages::DateTimeToAvoidArticle, art_limit.m_dtToAvoid);
|
||||||
|
|
|
@ -16,8 +16,7 @@ Feed::Feed(RootItem* parent)
|
||||||
: RootItem(parent), m_source(QString()), m_status(Status::Normal), m_statusString(QString()),
|
: RootItem(parent), m_source(QString()), m_status(Status::Normal), m_statusString(QString()),
|
||||||
m_autoUpdateType(AutoUpdateType::DefaultAutoUpdate), m_autoUpdateInterval(DEFAULT_AUTO_UPDATE_INTERVAL),
|
m_autoUpdateType(AutoUpdateType::DefaultAutoUpdate), m_autoUpdateInterval(DEFAULT_AUTO_UPDATE_INTERVAL),
|
||||||
m_lastUpdated(QDateTime::currentDateTimeUtc()), m_isSwitchedOff(false), m_isQuiet(false),
|
m_lastUpdated(QDateTime::currentDateTimeUtc()), m_isSwitchedOff(false), m_isQuiet(false),
|
||||||
m_openArticlesDirectly(false), m_isRtl(false), m_addAnyDatetimeArticles(false), m_datetimeToAvoid(QDateTime()),
|
m_openArticlesDirectly(false), m_isRtl(false), m_messageFilters(QList<QPointer<MessageFilter>>()) {
|
||||||
m_hoursToAvoid(0), m_messageFilters(QList<QPointer<MessageFilter>>()) {
|
|
||||||
setKind(RootItem::Kind::Feed);
|
setKind(RootItem::Kind::Feed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,9 +38,7 @@ Feed::Feed(const Feed& other) : RootItem(other) {
|
||||||
setLastUpdated(other.lastUpdated());
|
setLastUpdated(other.lastUpdated());
|
||||||
setMessageFilters(other.messageFilters());
|
setMessageFilters(other.messageFilters());
|
||||||
setOpenArticlesDirectly(other.openArticlesDirectly());
|
setOpenArticlesDirectly(other.openArticlesDirectly());
|
||||||
setAddAnyDatetimeArticles(other.addAnyDatetimeArticles());
|
setArticleIgnoreLimit(Feed::ArticleIgnoreLimit(other.articleIgnoreLimit()));
|
||||||
setDatetimeToAvoid(other.datetimeToAvoid());
|
|
||||||
setHoursToAvoid(other.hoursToAvoid());
|
|
||||||
setIsRtl(other.isRtl());
|
setIsRtl(other.isRtl());
|
||||||
setIsSwitchedOff(other.isSwitchedOff());
|
setIsSwitchedOff(other.isSwitchedOff());
|
||||||
setIsQuiet(other.isQuiet());
|
setIsQuiet(other.isQuiet());
|
||||||
|
@ -203,22 +200,6 @@ void Feed::setIsRtl(bool rtl) {
|
||||||
m_isRtl = rtl;
|
m_isRtl = rtl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Feed::addAnyDatetimeArticles() const {
|
|
||||||
return m_addAnyDatetimeArticles;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Feed::setAddAnyDatetimeArticles(bool add_any_articles) {
|
|
||||||
m_addAnyDatetimeArticles = add_any_articles;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDateTime Feed::datetimeToAvoid() const {
|
|
||||||
return m_datetimeToAvoid;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Feed::setDatetimeToAvoid(const QDateTime& dt) {
|
|
||||||
m_datetimeToAvoid = dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Feed::appendMessageFilter(MessageFilter* filter) {
|
void Feed::appendMessageFilter(MessageFilter* filter) {
|
||||||
m_messageFilters.append(QPointer<MessageFilter>(filter));
|
m_messageFilters.append(QPointer<MessageFilter>(filter));
|
||||||
}
|
}
|
||||||
|
@ -313,12 +294,16 @@ QString Feed::getStatusDescription() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Feed::hoursToAvoid() const {
|
Feed::ArticleIgnoreLimit& Feed::articleIgnoreLimit() {
|
||||||
return m_hoursToAvoid;
|
return m_articleIgnoreLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Feed::setHoursToAvoid(int hours_to_avoid) {
|
const Feed::ArticleIgnoreLimit& Feed::articleIgnoreLimit() const {
|
||||||
m_hoursToAvoid = hours_to_avoid;
|
return m_articleIgnoreLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Feed::setArticleIgnoreLimit(const ArticleIgnoreLimit& ignore_limit) {
|
||||||
|
m_articleIgnoreLimit = ignore_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Feed::isQuiet() const {
|
bool Feed::isQuiet() const {
|
||||||
|
|
|
@ -16,6 +16,20 @@ class Feed : public RootItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
struct ArticleIgnoreLimit {
|
||||||
|
// Ignoring articles.
|
||||||
|
bool m_avoidOldArticles = false;
|
||||||
|
bool m_addAnyArticlesToDb = false;
|
||||||
|
QDateTime m_dtToAvoid = QDateTime();
|
||||||
|
int m_hoursToAvoid = 0;
|
||||||
|
|
||||||
|
// Limitting articles.
|
||||||
|
int m_keepCountOfArticles = 0;
|
||||||
|
bool m_doNotRemoveStarred = true;
|
||||||
|
bool m_doNotRemoveUnread = true;
|
||||||
|
bool m_moveToBinDontPurge = false;
|
||||||
|
};
|
||||||
|
|
||||||
// Specifies the auto-download strategy for the feed.
|
// Specifies the auto-download strategy for the feed.
|
||||||
enum class AutoUpdateType {
|
enum class AutoUpdateType {
|
||||||
DontAutoUpdate = 0,
|
DontAutoUpdate = 0,
|
||||||
|
@ -91,14 +105,9 @@ class Feed : public RootItem {
|
||||||
bool isRtl() const;
|
bool isRtl() const;
|
||||||
void setIsRtl(bool rtl);
|
void setIsRtl(bool rtl);
|
||||||
|
|
||||||
bool addAnyDatetimeArticles() const;
|
ArticleIgnoreLimit& articleIgnoreLimit();
|
||||||
void setAddAnyDatetimeArticles(bool add_any_articles);
|
const ArticleIgnoreLimit& articleIgnoreLimit() const;
|
||||||
|
void setArticleIgnoreLimit(const ArticleIgnoreLimit& ignore_limit);
|
||||||
QDateTime datetimeToAvoid() const;
|
|
||||||
void setDatetimeToAvoid(const QDateTime& dt);
|
|
||||||
|
|
||||||
int hoursToAvoid() const;
|
|
||||||
void setHoursToAvoid(int hours_to_avoid);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void updateCounts(bool including_total_count);
|
virtual void updateCounts(bool including_total_count);
|
||||||
|
@ -122,9 +131,8 @@ class Feed : public RootItem {
|
||||||
// NOTE: These are used to filter out older articles
|
// NOTE: These are used to filter out older articles
|
||||||
// than needed. Either absolute value is given (date/time)
|
// than needed. Either absolute value is given (date/time)
|
||||||
// or relative value given in minutes.
|
// or relative value given in minutes.
|
||||||
bool m_addAnyDatetimeArticles;
|
// Amount
|
||||||
QDateTime m_datetimeToAvoid;
|
ArticleIgnoreLimit m_articleIgnoreLimit;
|
||||||
int m_hoursToAvoid;
|
|
||||||
|
|
||||||
int m_totalCount{};
|
int m_totalCount{};
|
||||||
int m_unreadCount{};
|
int m_unreadCount{};
|
||||||
|
@ -133,5 +141,6 @@ class Feed : public RootItem {
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(Feed::AutoUpdateType)
|
Q_DECLARE_METATYPE(Feed::AutoUpdateType)
|
||||||
Q_DECLARE_METATYPE(Feed::Status)
|
Q_DECLARE_METATYPE(Feed::Status)
|
||||||
|
Q_DECLARE_METATYPE(Feed::ArticleIgnoreLimit)
|
||||||
|
|
||||||
#endif // FEED_H
|
#endif // FEED_H
|
||||||
|
|
|
@ -55,7 +55,7 @@ void FormFeedDetails::apply() {
|
||||||
fd->setIsRtl(m_ui.m_cbFeedRTL->isChecked());
|
fd->setIsRtl(m_ui.m_cbFeedRTL->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui.m_wdgArticleLimiting->saveFeed(fd);
|
m_ui.m_wdgArticleLimiting->saveFeed(fd, m_isBatchEdit);
|
||||||
|
|
||||||
if (isChangeAllowed(m_ui.m_mcbDisableFeed)) {
|
if (isChangeAllowed(m_ui.m_mcbDisableFeed)) {
|
||||||
fd->setIsSwitchedOff(m_ui.m_cbDisableFeed->isChecked());
|
fd->setIsSwitchedOff(m_ui.m_cbDisableFeed->isChecked());
|
||||||
|
@ -149,8 +149,9 @@ void FormFeedDetails::loadFeedData() {
|
||||||
m_ui.m_cbDisableFeed->setChecked(fd->isSwitchedOff());
|
m_ui.m_cbDisableFeed->setChecked(fd->isSwitchedOff());
|
||||||
m_ui.m_cbSuppressFeed->setChecked(fd->isQuiet());
|
m_ui.m_cbSuppressFeed->setChecked(fd->isQuiet());
|
||||||
|
|
||||||
ArticleAmountControl::Setup art_limit;
|
Feed::ArticleIgnoreLimit art_limit = Feed::ArticleIgnoreLimit(fd->articleIgnoreLimit());
|
||||||
|
|
||||||
|
/*
|
||||||
art_limit.m_addAnyArticlesToDb = fd->addAnyDatetimeArticles();
|
art_limit.m_addAnyArticlesToDb = fd->addAnyDatetimeArticles();
|
||||||
art_limit.m_avoidOldArticles =
|
art_limit.m_avoidOldArticles =
|
||||||
(fd->datetimeToAvoid().isValid() && fd->datetimeToAvoid().toMSecsSinceEpoch() > 0) || fd->hoursToAvoid() > 0;
|
(fd->datetimeToAvoid().isValid() && fd->datetimeToAvoid().toMSecsSinceEpoch() > 0) || fd->hoursToAvoid() > 0;
|
||||||
|
@ -161,6 +162,7 @@ void FormFeedDetails::loadFeedData() {
|
||||||
art_limit.m_doNotRemoveUnread = false;
|
art_limit.m_doNotRemoveUnread = false;
|
||||||
art_limit.m_keepCountOfArticles = 4;
|
art_limit.m_keepCountOfArticles = 4;
|
||||||
art_limit.m_moveToBinDontPurge = false;
|
art_limit.m_moveToBinDontPurge = false;
|
||||||
|
*/
|
||||||
|
|
||||||
m_ui.m_wdgArticleLimiting->load(art_limit);
|
m_ui.m_wdgArticleLimiting->load(art_limit);
|
||||||
}
|
}
|
||||||
|
|
|
@ -492,11 +492,15 @@ QMap<QString, QVariantMap> ServiceRoot::storeCustomFeedsData() {
|
||||||
feed_custom_data.insert(QSL("is_quiet"), feed->isQuiet());
|
feed_custom_data.insert(QSL("is_quiet"), feed->isQuiet());
|
||||||
feed_custom_data.insert(QSL("open_articles_directly"), feed->openArticlesDirectly());
|
feed_custom_data.insert(QSL("open_articles_directly"), feed->openArticlesDirectly());
|
||||||
feed_custom_data.insert(QSL("is_rtl"), feed->isRtl());
|
feed_custom_data.insert(QSL("is_rtl"), feed->isRtl());
|
||||||
feed_custom_data.insert(QSL("add_any_datetime_articles"), feed->addAnyDatetimeArticles());
|
|
||||||
|
feed_custom_data.insert(QSL("article_limit_ignore"), QVariant::fromValue(feed->articleIgnoreLimit()));
|
||||||
|
|
||||||
|
/*
|
||||||
feed_custom_data.insert(QSL("datetime_to_avoid"),
|
feed_custom_data.insert(QSL("datetime_to_avoid"),
|
||||||
(feed->datetimeToAvoid().isValid() && feed->datetimeToAvoid().toMSecsSinceEpoch() > 0)
|
(feed->datetimeToAvoid().isValid() && feed->datetimeToAvoid().toMSecsSinceEpoch() > 0)
|
||||||
? feed->datetimeToAvoid().toMSecsSinceEpoch()
|
? feed->datetimeToAvoid().toMSecsSinceEpoch()
|
||||||
: feed->hoursToAvoid());
|
: feed->hoursToAvoid());
|
||||||
|
*/
|
||||||
|
|
||||||
// NOTE: This is here specifically to be able to restore custom sort order.
|
// NOTE: This is here specifically to be able to restore custom sort order.
|
||||||
// Otherwise the information is lost when list of feeds/folders is refreshed from remote
|
// Otherwise the information is lost when list of feeds/folders is refreshed from remote
|
||||||
|
@ -547,6 +551,11 @@ void ServiceRoot::restoreCustomFeedsData(const QMap<QString, QVariantMap>& data,
|
||||||
feed->setIsQuiet(feed_custom_data.value(QSL("is_quiet")).toBool());
|
feed->setIsQuiet(feed_custom_data.value(QSL("is_quiet")).toBool());
|
||||||
feed->setOpenArticlesDirectly(feed_custom_data.value(QSL("open_articles_directly")).toBool());
|
feed->setOpenArticlesDirectly(feed_custom_data.value(QSL("open_articles_directly")).toBool());
|
||||||
feed->setIsRtl(feed_custom_data.value(QSL("is_rtl")).toBool());
|
feed->setIsRtl(feed_custom_data.value(QSL("is_rtl")).toBool());
|
||||||
|
|
||||||
|
feed
|
||||||
|
->setArticleIgnoreLimit(feed_custom_data.value(QSL("article_limit_ignore")).value<Feed::ArticleIgnoreLimit>());
|
||||||
|
|
||||||
|
/*
|
||||||
feed->setAddAnyDatetimeArticles(feed_custom_data.value(QSL("add_any_datetime_articles")).toBool());
|
feed->setAddAnyDatetimeArticles(feed_custom_data.value(QSL("add_any_datetime_articles")).toBool());
|
||||||
|
|
||||||
qint64 time_to_avoid = feed_custom_data.value(QSL("datetime_to_avoid")).value<qint64>();
|
qint64 time_to_avoid = feed_custom_data.value(QSL("datetime_to_avoid")).value<qint64>();
|
||||||
|
@ -557,6 +566,7 @@ void ServiceRoot::restoreCustomFeedsData(const QMap<QString, QVariantMap>& data,
|
||||||
else {
|
else {
|
||||||
feed->setHoursToAvoid(time_to_avoid);
|
feed->setHoursToAvoid(time_to_avoid);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue