void AdBlockSubscription::subscriptionDownloaded() {
  if (m_reply != qobject_cast<QNetworkReply*>(sender())) {
    return;
  }

  bool error = false;
  const QByteArray response = QString::fromUtf8(m_reply->readAll()).toUtf8();

  if (m_reply->error() != QNetworkReply::NoError || !response.startsWith(QByteArray("[Adblock")) || !saveDownloadedData(response)) {
    error = true;
  }

  m_reply->manager()->deleteLater();
  m_reply->deleteLater();
  m_reply = 0;

  if (error) {
    emit subscriptionError(tr("Cannot load subscription!"));

    return;
  }

  loadSubscription(AdBlockManager::instance()->disabledRules());
  emit subscriptionUpdated();
  emit subscriptionChanged();
}
Example #2
0
AdBlockSubscription* AdBlockManager::addSubscription(const QString &title, const QString &url)
{
    if (title.isEmpty() || url.isEmpty()) {
        return 0;
    }

    QString fileName = QzTools::filterCharsFromFilename(title.toLower()) + ".txt";
    QString filePath = QzTools::ensureUniqueFilename(DataPaths::currentProfilePath() + "/adblock/" + fileName);

    QByteArray data = QString("Title: %1\nUrl: %2\n[Adblock Plus 1.1.1]").arg(title, url).toLatin1();

    QSaveFile file(filePath);
    if (!file.open(QFile::WriteOnly)) {
        qWarning() << "AdBlockManager: Cannot write to file" << filePath;
        return 0;
    }
    file.write(data);
    file.commit();

    AdBlockSubscription* subscription = new AdBlockSubscription(title, this);
    subscription->setUrl(QUrl(url));
    subscription->setFilePath(filePath);
    subscription->loadSubscription(m_disabledRules);

    m_subscriptions.insert(m_subscriptions.count() - 1, subscription);
    connect(subscription, SIGNAL(subscriptionUpdated()), mApp, SLOT(reloadUserStyleSheet()));
    connect(subscription, SIGNAL(subscriptionChanged()), this, SLOT(updateMatcher()));

    return subscription;
}
const AdBlockRule* AdBlockSubscription::disableRule(int offset) {
  if (!IS_IN_ARRAY(offset, m_rules)) {
    return 0;
  }

  AdBlockRule* rule = m_rules[offset];

  rule->setEnabled(false);
  AdBlockManager::instance()->addDisabledRule(rule->filter());
  emit subscriptionChanged();

  return rule;
}
const AdBlockRule* AdBlockSubscription::enableRule(int offset) {
  if (IS_IN_ARRAY(offset, m_rules)) {
    AdBlockRule* rule = m_rules[offset];

    rule->setEnabled(true);
    AdBlockManager::instance()->removeDisabledRule(rule->filter());
    emit subscriptionChanged();

    return rule;
  }
  else {
    return 0;
  }
}
const AdBlockRule* AdBlockSubscription::disableRule(int offset)
{
    if (!QzTools::containsIndex(m_rules, offset)) {
        return 0;
    }

    AdBlockRule* rule = m_rules[offset];
    rule->setEnabled(false);
    AdBlockManager::instance()->addDisabledRule(rule->filter());

    emit subscriptionChanged();

    if (rule->isCssRule())
        mApp->reloadUserStyleSheet();

    return rule;
}
Example #6
0
void JContact::setContactSubscription(Jreen::RosterItem::SubscriptionType subscription)
{
    d_func()->subscription = subscription;
    emit subscriptionChanged(subscription);
}