mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-22 00:17:23 -06:00
RSS code clean up
- Also drops support for Qt 4.5
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user