RSS code clean up

- Also drops support for Qt 4.5
This commit is contained in:
Christophe Dumez
2012-02-20 20:49:31 +02:00
parent f3448125c3
commit 8e529fc179
13 changed files with 70 additions and 138 deletions

View File

@@ -61,39 +61,9 @@ void RssDownloadRuleList::saveRulesToStorage()
void RssDownloadRuleList::loadRulesFromStorage()
{
QIniSettings qBTRSS("qBittorrent", "qBittorrent-rss");
if (qBTRSS.contains("feed_filters")) {
importFeedsInOldFormat(qBTRSS.value("feed_filters").toHash());
// Remove outdated rules
qBTRSS.remove("feed_filters");
// Save to new format
saveRulesToStorage();
return;
}
// Load from new format
loadRulesFromVariantHash(qBTRSS.value("download_rules").toHash());
}
void RssDownloadRuleList::importFeedsInOldFormat(const QHash<QString, QVariant> &rules)
{
foreach (const QString &feed_url, rules.keys()) {
importFeedRulesInOldFormat(feed_url, rules.value(feed_url).toHash());
}
}
void RssDownloadRuleList::importFeedRulesInOldFormat(const QString &feed_url, const QHash<QString, QVariant> &rules)
{
foreach (const QString &rule_name, rules.keys()) {
RssDownloadRulePtr rule = RssDownloadRule::fromOldFormat(rules.value(rule_name).toHash(), feed_url, rule_name);
if (!rule) continue;
// Check for rule name clash
while(m_rules.contains(rule->name())) {
rule->setName(rule->name()+"_");
}
// Add the rule to the list
saveRule(rule);
}
}
QVariantHash RssDownloadRuleList::toVariantHash() const
{
QVariantHash ret;
@@ -105,11 +75,10 @@ QVariantHash RssDownloadRuleList::toVariantHash() const
void RssDownloadRuleList::loadRulesFromVariantHash(const QVariantHash &h)
{
foreach (const QVariant& v, h.values()) {
RssDownloadRulePtr rule = RssDownloadRule::fromNewFormat(v.toHash());
if (rule && !rule->name().isEmpty()) {
for (QVariantHash::ConstIterator it = h.begin(); it != h.end(); it++) {
RssDownloadRulePtr rule = RssDownloadRule::fromVariantHash(it.value().toHash());
if (rule && !rule->name().isEmpty())
saveRule(rule);
}
}
}
@@ -182,30 +151,18 @@ bool RssDownloadRuleList::unserialize(const QString &path)
QFile f(path);
if (f.open(QIODevice::ReadOnly)) {
QDataStream in(&f);
if (path.endsWith(".filters", Qt::CaseInsensitive)) {
// Old format (< 2.5.0)
qDebug("Old serialization format detected, processing...");
in.setVersion(QDataStream::Qt_4_3);
QVariantHash tmp;
in >> tmp;
f.close();
if (tmp.isEmpty()) return false;
qDebug("Processing was successful!");
// Unfortunately the feed_url is lost
importFeedRulesInOldFormat("", tmp);
} else {
qDebug("New serialization format detected, processing...");
in.setVersion(QDataStream::Qt_4_5);
QVariantHash tmp;
in >> tmp;
f.close();
if (tmp.isEmpty()) return false;
qDebug("Processing was successful!");
loadRulesFromVariantHash(tmp);
}
in.setVersion(QDataStream::Qt_4_5);
QVariantHash tmp;
in >> tmp;
f.close();
if (tmp.isEmpty())
return false;
qDebug("Processing was successful!");
loadRulesFromVariantHash(tmp);
return true;
} else {
qDebug("Error: could not open file at %s", qPrintable(path));
return false;
}
qDebug("Error: could not open file at %s", qPrintable(path));
return false;
}