From 689ec1f948776a747b640cac2d0aee865948429e Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Fri, 5 Dec 2008 11:55:59 +0100 Subject: Fully using KConfig files to manage cookies and settings --- src/cookiejar.cpp | 153 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 101 insertions(+), 52 deletions(-) (limited to 'src/cookiejar.cpp') diff --git a/src/cookiejar.cpp b/src/cookiejar.cpp index 9a6d8577..396052b9 100644 --- a/src/cookiejar.cpp +++ b/src/cookiejar.cpp @@ -23,21 +23,15 @@ #include "cookiejar.h" #include "autosaver.h" +// KDE Includes +#include +#include + // Qt Includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include + #include static const unsigned int JAR_VERSION = 23; @@ -69,7 +63,8 @@ QDataStream &operator>>(QDataStream &stream, QList &list) QByteArray value; stream >> value; QList newCookies = QNetworkCookie::parseCookies(value); - if (newCookies.count() == 0 && value.length() != 0) { + if (newCookies.count() == 0 && value.length() != 0) + { qWarning() << "CookieJar: Unable to parse saved cookie:" << value; } for (int j = 0; j < newCookies.count(); ++j) @@ -109,31 +104,43 @@ void CookieJar::load() return; // load cookies and exceptions qRegisterMetaTypeStreamOperators >("QList"); - QSettings cookieSettings(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QLatin1String("/cookies.ini"), QSettings::IniFormat); - setAllCookies(qvariant_cast >(cookieSettings.value(QLatin1String("cookies")))); - cookieSettings.beginGroup(QLatin1String("Exceptions")); - m_exceptions_block = cookieSettings.value(QLatin1String("block")).toStringList(); - m_exceptions_allow = cookieSettings.value(QLatin1String("allow")).toStringList(); - m_exceptions_allowForSession = cookieSettings.value(QLatin1String("allowForSession")).toStringList(); - qSort(m_exceptions_block.begin(), m_exceptions_block.end()); - qSort(m_exceptions_allow.begin(), m_exceptions_allow.end()); - qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end()); + + QString filepath = KStandardDirs::locateLocal("appdata", "cookies.ini"); + KConfig iniconfig( filepath ); + + KConfigGroup inigroup1 = iniconfig.group("general"); + + QStringList cookieStringList = inigroup1.readEntry( QString("cookies"), QStringList() ); + QList cookieNetworkList; + foreach( QString str, cookieStringList ) + { + cookieNetworkList << QNetworkCookie( str.toLocal8Bit() ); + } + setAllCookies( cookieNetworkList ); + + KConfigGroup inigroup2 = iniconfig.group("exceptions"); + m_exceptions_block = inigroup2.readEntry( QString("block") , QStringList() ); + m_exceptions_allow = inigroup2.readEntry( QString("allow"), QStringList() ); + m_exceptions_allowForSession = inigroup2.readEntry( QString("allowForSession"), QStringList() ); + + qSort( m_exceptions_block.begin(), m_exceptions_block.end() ); + qSort( m_exceptions_allow.begin(), m_exceptions_allow.end() ); + qSort( m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end() ); loadSettings(); } void CookieJar::loadSettings() { - QSettings settings; - settings.beginGroup(QLatin1String("cookies")); - QByteArray value = settings.value(QLatin1String("acceptCookies"), - QLatin1String("AcceptOnlyFromSitesNavigatedTo")).toByteArray(); + KConfig config("rekonqrc"); + KConfigGroup group = config.group("cookies"); + QByteArray value = group.readEntry( QString("acceptCookies"), QByteArray("AcceptOnlyFromSitesNavigatedTo") ); QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy")); m_acceptCookies = acceptPolicyEnum.keyToValue(value) == -1 ? AcceptOnlyFromSitesNavigatedTo : static_cast(acceptPolicyEnum.keyToValue(value)); - value = settings.value(QLatin1String("keepCookiesUntil"), QLatin1String("KeepUntilExpire")).toByteArray(); + value = group.readEntry( QString("keepCookiesUntil"), QByteArray("KeepUntilExpire") ); QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy")); m_keepCookies = keepPolicyEnum.keyToValue(value) == -1 ? KeepUntilExpire : @@ -154,30 +161,43 @@ void CookieJar::save() QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation); if (directory.isEmpty()) directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); - if (!QFile::exists(directory)) { + if (!QFile::exists(directory)) + { QDir dir; dir.mkpath(directory); } - QSettings cookieSettings(directory + QLatin1String("/cookies.ini"), QSettings::IniFormat); + + QString filepath = KStandardDirs::locateLocal("appdata", "cookies.ini"); + KConfig iniconfig( filepath ); + + KConfigGroup inigroup1 = iniconfig.group("general"); QList cookies = allCookies(); - for (int i = cookies.count() - 1; i >= 0; --i) { + for (int i = cookies.count() - 1; i >= 0; --i) + { if (cookies.at(i).isSessionCookie()) cookies.removeAt(i); } - cookieSettings.setValue(QLatin1String("cookies"), qVariantFromValue >(cookies)); - cookieSettings.beginGroup(QLatin1String("Exceptions")); - cookieSettings.setValue(QLatin1String("block"), m_exceptions_block); - cookieSettings.setValue(QLatin1String("allow"), m_exceptions_allow); - cookieSettings.setValue(QLatin1String("allowForSession"), m_exceptions_allowForSession); + + QStringList cookieStringList; + foreach( QNetworkCookie cook, cookies ) + { + cookieStringList << QString( cook.toRawForm() ); + } + inigroup1.writeEntry( QString("cookies"), cookieStringList ); + + KConfigGroup inigroup2 = iniconfig.group("exceptions"); + inigroup2.writeEntry( QString("block"), m_exceptions_block ); + inigroup2.writeEntry( QString("allow"), m_exceptions_allow ); + inigroup2.writeEntry( QString("allowForSession"), m_exceptions_allowForSession ); // save cookie settings - QSettings settings; - settings.beginGroup(QLatin1String("cookies")); - QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy")); - settings.setValue(QLatin1String("acceptCookies"), QLatin1String(acceptPolicyEnum.valueToKey(m_acceptCookies))); + KConfig config("rekonqrc"); + KConfigGroup group = config.group("cookies"); + QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator( staticMetaObject.indexOfEnumerator("AcceptPolicy") ); + group.writeEntry( QString("acceptCookies"), QString( acceptPolicyEnum.valueToKey(m_acceptCookies) ) ); QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy")); - settings.setValue(QLatin1String("keepCookiesUntil"), QLatin1String(keepPolicyEnum.valueToKey(m_keepCookies))); + group.writeEntry( QString("keepCookiesUntil"), QString( keepPolicyEnum.valueToKey(m_keepCookies) ) ); } void CookieJar::purgeOldCookies() @@ -187,7 +207,8 @@ void CookieJar::purgeOldCookies() return; int oldCount = cookies.count(); QDateTime now = QDateTime::currentDateTime(); - for (int i = cookies.count() - 1; i >= 0; --i) { + for (int i = cookies.count() - 1; i >= 0; --i) + { if (!cookies.at(i).isSessionCookie() && cookies.at(i).expirationDate() < now) cookies.removeAt(i); } @@ -204,7 +225,8 @@ QList CookieJar::cookiesForUrl(const QUrl &url) const that->load(); QWebSettings *globalSettings = QWebSettings::globalSettings(); - if (globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled)) { + if (globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled)) + { QList noCookies; return noCookies; } @@ -229,24 +251,30 @@ bool CookieJar::setCookiesFromUrl(const QList &cookieList, const bool addedCookies = false; // pass exceptions bool acceptInitially = (m_acceptCookies != AcceptNever); - if ((acceptInitially && !eBlock) - || (!acceptInitially && (eAllow || eAllowSession))) { + if ( (acceptInitially && !eBlock) || (!acceptInitially && (eAllow || eAllowSession) ) ) + { // pass url domain == cookie domain QDateTime soon = QDateTime::currentDateTime(); soon = soon.addDays(90); - foreach(QNetworkCookie cookie, cookieList) { + foreach(QNetworkCookie cookie, cookieList) + { QList lst; if (m_keepCookies == KeepUntilTimeLimit && !cookie.isSessionCookie() - && cookie.expirationDate() > soon) { + && cookie.expirationDate() > soon) + { cookie.setExpirationDate(soon); } lst += cookie; - if (QNetworkCookieJar::setCookiesFromUrl(lst, url)) { + if (QNetworkCookieJar::setCookiesFromUrl(lst, url)) + { addedCookies = true; - } else { + } + else + { // finally force it in if wanted - if (m_acceptCookies == AcceptAlways) { + if (m_acceptCookies == AcceptAlways) + { QList cookies = allCookies(); cookies += cookie; setAllCookies(cookies); @@ -260,13 +288,16 @@ bool CookieJar::setCookiesFromUrl(const QList &cookieList, const } } - if (addedCookies) { + if (addedCookies) + { m_saveTimer->changeOccurred(); emit cookiesChanged(); } return addedCookies; } + + CookieJar::AcceptPolicy CookieJar::acceptPolicy() const { if (!m_loaded) @@ -274,6 +305,8 @@ CookieJar::AcceptPolicy CookieJar::acceptPolicy() const return m_acceptCookies; } + + void CookieJar::setAcceptPolicy(AcceptPolicy policy) { if (!m_loaded) @@ -284,6 +317,8 @@ void CookieJar::setAcceptPolicy(AcceptPolicy policy) m_saveTimer->changeOccurred(); } + + CookieJar::KeepPolicy CookieJar::keepPolicy() const { if (!m_loaded) @@ -291,6 +326,8 @@ CookieJar::KeepPolicy CookieJar::keepPolicy() const return m_keepCookies; } + + void CookieJar::setKeepPolicy(KeepPolicy policy) { if (!m_loaded) @@ -301,6 +338,8 @@ void CookieJar::setKeepPolicy(KeepPolicy policy) m_saveTimer->changeOccurred(); } + + QStringList CookieJar::blockedCookies() const { if (!m_loaded) @@ -308,6 +347,8 @@ QStringList CookieJar::blockedCookies() const return m_exceptions_block; } + + QStringList CookieJar::allowedCookies() const { if (!m_loaded) @@ -315,6 +356,8 @@ QStringList CookieJar::allowedCookies() const return m_exceptions_allow; } + + QStringList CookieJar::allowForSessionCookies() const { if (!m_loaded) @@ -322,6 +365,8 @@ QStringList CookieJar::allowForSessionCookies() const return m_exceptions_allowForSession; } + + void CookieJar::setBlockedCookies(const QStringList &list) { if (!m_loaded) @@ -331,6 +376,8 @@ void CookieJar::setBlockedCookies(const QStringList &list) m_saveTimer->changeOccurred(); } + + void CookieJar::setAllowedCookies(const QStringList &list) { if (!m_loaded) @@ -340,6 +387,8 @@ void CookieJar::setAllowedCookies(const QStringList &list) m_saveTimer->changeOccurred(); } + + void CookieJar::setAllowForSessionCookies(const QStringList &list) { if (!m_loaded) -- cgit v1.2.1