mirror of
https://github.com/martinrotter/rssguard.git
synced 2025-01-29 00:30:12 +01:00
make intelligent downloading in greader be able to download unread msgs only if user wants
This commit is contained in:
parent
2e9792ad59
commit
a894dcd44f
@ -35,11 +35,7 @@ void BaseNetworkAccessManager::loadSettings() {
|
||||
void BaseNetworkAccessManager::onSslErrors(QNetworkReply* reply, const QList<QSslError>& error) {
|
||||
qWarningNN << LOGSEC_NETWORK
|
||||
<< "Ignoring SSL errors for"
|
||||
<< QUOTE_W_SPACE(reply->url().toString())
|
||||
<< ":"
|
||||
<< QUOTE_W_SPACE(reply->errorString())
|
||||
<< "- code"
|
||||
<< QUOTE_W_SPACE_DOT(reply->error());
|
||||
<< QUOTE_W_SPACE_DOT(reply->url().toString());
|
||||
reply->ignoreSslErrors(error);
|
||||
}
|
||||
|
||||
|
@ -316,11 +316,11 @@ bool ServiceRoot::wantsBaggedIdsOfExistingMessages() const {
|
||||
}
|
||||
|
||||
void ServiceRoot::aboutToBeginFeedFetching(const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs) {
|
||||
const QHash<QString, QHash<BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages) {
|
||||
Q_UNUSED(feeds)
|
||||
Q_UNUSED(stated_msgs)
|
||||
Q_UNUSED(tagged_msgs)
|
||||
Q_UNUSED(stated_messages)
|
||||
Q_UNUSED(tagged_messages)
|
||||
}
|
||||
|
||||
void ServiceRoot::itemChanged(const QList<RootItem*>& items) {
|
||||
|
@ -66,8 +66,8 @@ class ServiceRoot : public RootItem {
|
||||
virtual void setCustomDatabaseData(const QVariantHash& data);
|
||||
virtual bool wantsBaggedIdsOfExistingMessages() const;
|
||||
virtual void aboutToBeginFeedFetching(const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs);
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages);
|
||||
|
||||
// Returns list of specific actions for "Add new item" main window menu.
|
||||
// So typical list of returned actions could look like:
|
||||
|
@ -121,11 +121,17 @@ QVariantHash GreaderNetwork::userInfo(const QNetworkProxy& proxy) {
|
||||
return QJsonDocument::fromJson(output).object().toVariantHash();
|
||||
}
|
||||
|
||||
void GreaderNetwork::clearPrefetchedMessages() {
|
||||
m_prefetchedMessages.clear();
|
||||
}
|
||||
|
||||
void GreaderNetwork::prepareFeedFetching(GreaderServiceRoot* root,
|
||||
const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages,
|
||||
const QNetworkProxy& proxy) {
|
||||
Q_UNUSED(tagged_messages)
|
||||
|
||||
m_prefetchedMessages.clear();
|
||||
|
||||
double perc_of_fetching = (feeds.size() * 1.0) / root->getSubTreeFeeds().size();
|
||||
@ -144,7 +150,7 @@ void GreaderNetwork::prepareFeedFetching(GreaderServiceRoot* root,
|
||||
|
||||
QSet<QString> remote_starred_ids(remote_starred_ids_list.begin(), remote_starred_ids_list.end());
|
||||
QSet<QString> local_starred_ids;
|
||||
QList<QHash<ServiceRoot::BagOfMessages, QStringList>> all_states = stated_msgs.values();
|
||||
QList<QHash<ServiceRoot::BagOfMessages, QStringList>> all_states = stated_messages.values();
|
||||
|
||||
for (auto& lst : all_states) {
|
||||
auto s = lst.value(ServiceRoot::BagOfMessages::Starred);
|
||||
@ -183,7 +189,15 @@ void GreaderNetwork::prepareFeedFetching(GreaderServiceRoot* root,
|
||||
local_read_ids.unite(QSet<QString>(r.begin(), r.end()));
|
||||
}
|
||||
|
||||
auto not_downloaded = remote_all_ids - local_read_ids - local_unread_ids;
|
||||
QSet<QString> not_downloaded;
|
||||
|
||||
if (!m_downloadOnlyUnreadMessages) {
|
||||
not_downloaded = remote_all_ids - local_read_ids - local_unread_ids;
|
||||
}
|
||||
else {
|
||||
not_downloaded = remote_unread_ids - local_read_ids - local_unread_ids;
|
||||
}
|
||||
|
||||
auto moved_unread = local_unread_ids.intersect(remote_read_ids);
|
||||
auto moved_read = local_read_ids.intersect(remote_unread_ids);
|
||||
|
||||
@ -204,6 +218,8 @@ QList<Message> GreaderNetwork::getMessagesIntelligently(ServiceRoot* root,
|
||||
const QHash<QString, QStringList>& tagged_messages,
|
||||
Feed::Status& error,
|
||||
const QNetworkProxy& proxy) {
|
||||
Q_UNUSED(tagged_messages)
|
||||
|
||||
QList<Message> msgs;
|
||||
|
||||
if (!m_performGlobalFetching) {
|
||||
@ -238,7 +254,15 @@ QList<Message> GreaderNetwork::getMessagesIntelligently(ServiceRoot* root,
|
||||
local_read_ids_list.end());
|
||||
|
||||
// 3.
|
||||
auto not_downloaded = remote_all_ids - local_read_ids - local_unread_ids;
|
||||
QSet<QString> not_downloaded;
|
||||
|
||||
if (!m_downloadOnlyUnreadMessages) {
|
||||
not_downloaded = remote_all_ids - local_read_ids - local_unread_ids;
|
||||
}
|
||||
else {
|
||||
not_downloaded = remote_unread_ids - local_read_ids - local_unread_ids;
|
||||
}
|
||||
|
||||
auto moved_unread = local_unread_ids.intersect(remote_read_ids);
|
||||
auto moved_read = local_read_ids.intersect(remote_unread_ids);
|
||||
auto to_download = not_downloaded + moved_read + moved_unread;
|
||||
|
@ -40,10 +40,11 @@ class GreaderNetwork : public QObject {
|
||||
|
||||
QVariantHash userInfo(const QNetworkProxy& proxy);
|
||||
|
||||
void clearPrefetchedMessages();
|
||||
void prepareFeedFetching(GreaderServiceRoot* root,
|
||||
const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages,
|
||||
const QNetworkProxy& proxy);
|
||||
|
||||
QList<Message> getMessagesIntelligently(ServiceRoot* root,
|
||||
|
@ -58,14 +58,15 @@ void GreaderServiceRoot::setCustomDatabaseData(const QVariantHash& data) {
|
||||
}
|
||||
|
||||
void GreaderServiceRoot::aboutToBeginFeedFetching(const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs) {
|
||||
const QHash<QString, QHash<BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages) {
|
||||
// Prefetch starred messages.
|
||||
m_network->prepareFeedFetching(this,
|
||||
feeds,
|
||||
stated_msgs,
|
||||
tagged_msgs,
|
||||
networkProxy());
|
||||
if (true /* intelligent downloading */) {
|
||||
m_network->prepareFeedFetching(this, feeds, stated_messages, tagged_messages, networkProxy());
|
||||
}
|
||||
else {
|
||||
m_network->clearPrefetchedMessages();
|
||||
}
|
||||
}
|
||||
|
||||
QList<Message> GreaderServiceRoot::obtainNewMessages(Feed* feed,
|
||||
|
@ -32,8 +32,8 @@ class GreaderServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
virtual QVariantHash customDatabaseData() const;
|
||||
virtual void setCustomDatabaseData(const QVariantHash& data);
|
||||
virtual void aboutToBeginFeedFetching(const QList<Feed*>& feeds,
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_msgs,
|
||||
const QHash<QString, QStringList>& tagged_msgs);
|
||||
const QHash<QString, QHash<ServiceRoot::BagOfMessages, QStringList>>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages);
|
||||
virtual QList<Message> obtainNewMessages(Feed* feed,
|
||||
const QHash<ServiceRoot::BagOfMessages, QStringList>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages);
|
||||
|
Loading…
x
Reference in New Issue
Block a user