FacebookLoginBrowser to use cookies, re-writing NetworkCookieJar
authorSami Rämö <sami.ramo@ixonos.com>
Fri, 24 Sep 2010 13:04:39 +0000 (16:04 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Fri, 24 Sep 2010 13:04:39 +0000 (16:04 +0300)
 - Implemented FacebookLoginBrowser to use cookies

 - Re-writing NetworkCookieJar: Removed old self made implementation,
   moved reading and saving the cookies into the class.

src/network/networkcookiejar.cpp
src/network/networkcookiejar.h
src/ui/facebookloginbrowser.cpp
src/ui/facebookloginbrowser.h
src/ui/mainwindow.cpp

index da28e2f..d1ccaea 100644 (file)
@@ -3,6 +3,7 @@
     Copyright (C) 2010  Ixonos Plc. Authors:
 
         Henri Lampela - henri.lampela@ixonos.com
+        Sami Rämö - sami.ramo@ixonos.com
 
     Situare is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     USA.
 */
 
-#include "networkcookiejar.h"
 #include <QDebug>
+#include <QSettings>
 
-NetworkCookieJar::NetworkCookieJar(QObject *parent) :
-    QNetworkCookieJar(parent)
-{
-    m_cookieList.clear();
-}
+#include "common.h"
+
+#include "networkcookiejar.h"
 
-void NetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
+NetworkCookieJar::NetworkCookieJar(QObject *parent)
+    : QNetworkCookieJar(parent)
 {
-    m_cookieList = cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    loadCookies();
 }
 
-QList<QNetworkCookie> NetworkCookieJar::allCookies() const
+NetworkCookieJar::~NetworkCookieJar()
 {
-    return m_cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    saveCookies();
 }
 
-bool NetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
+void NetworkCookieJar::loadCookies()
 {
-    Q_UNUSED(url);
+    qWarning() << __PRETTY_FUNCTION__;
 
-    QList<QNetworkCookie> cookies = allCookies();
-    foreach(QNetworkCookie cookie, cookieList) {
-        cookies += cookie;
-    }
-    setAllCookies(cookies);
+    QSettings settings(DIRECTORY_NAME, FILE_NAME);
 
-    return true;
+    QStringList list = settings.value(COOKIES, EMPTY).toStringList();
+
+    if(!list.isEmpty()) {
+        QList<QNetworkCookie> cookieList;
+        for(int i = 0; i < list.count(); i++) {
+            cookieList.append(QNetworkCookie::parseCookies(list.at(i).toAscii()));
+        }
+
+        setAllCookies(cookieList);
+    }
 }
 
-QList<QNetworkCookie> NetworkCookieJar::cookiesForUrl ( const QUrl & url ) const
+void NetworkCookieJar::saveCookies()
 {
-    Q_UNUSED(url);
-    return m_cookieList;
+    qWarning() << __PRETTY_FUNCTION__;
+
+    QList<QNetworkCookie> cookieList = allCookies();
+    QStringList list;
+
+    for(int i = 0; i < cookieList.count(); i++) {
+        QNetworkCookie cookie = cookieList.at(i);
+        QByteArray byteArray = cookie.toRawForm(QNetworkCookie::Full);
+        list.append(QString(byteArray));
+    }
+    list.removeDuplicates();
+
+    QSettings settings(DIRECTORY_NAME, FILE_NAME);
+    settings.setValue(COOKIES, list);
 }
index ff05178..8f6ef62 100644 (file)
@@ -3,6 +3,7 @@
     Copyright (C) 2010  Ixonos Plc. Authors:
 
         Henri Lampela - henri.lampela@ixonos.com
+        Sami Rämö - sami.ramo@ixonos.com
 
     Situare is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
 * @brief Sub-class of QNetworkCookieJar, needed for cookie saving
 *
 * @author Henri Lampela
+* @author Sami Rämö - sami.ramo (at) ixonos.com
 */
 class NetworkCookieJar : public QNetworkCookieJar
 {
     Q_OBJECT
 
 public:
-
     /**
     * @brief Constructor
     *
@@ -42,49 +43,15 @@ public:
     */
     explicit NetworkCookieJar(QObject *parent = 0);
 
-/*******************************************************************************
- * BASE CLASS INHERITED AND REIMPLEMENTED MEMBER FUNCTIONS
- ******************************************************************************/
-
-    /**
-    * @brief Sets all network cookies
-    *
-    * @param cookieList Network cookie list
-    */
-    void setAllCookies ( const QList<QNetworkCookie> & cookieList );
-
-    /**
-    * @brief Gets all networks cookies
-    *
-    * @return QList<QNetworkCookie> Network cookie list
-    */
-    QList<QNetworkCookie> allCookies() const;
-
-    /**
-    * @brief Sets network cookies from url
-    *
-    * @param cookieList Network cookie list
-    * @param url Url
-    * @return bool Return value
-    */
-    bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url);
-
-    /**
-    * @brief Empty implementation
-    *
-    * @param url Url
-    * @return QList<QNetworkCookie> Network cookie list
-    */
-    QList<QNetworkCookie> cookiesForUrl(const QUrl & url) const;
+    ~NetworkCookieJar();
 
 /*******************************************************************************
- * DATA MEMBERS
+ * MEMBER FUNCTIONS AND SLOTS
  ******************************************************************************/
-
 private:
+    void loadCookies();
 
-    QList<QNetworkCookie> m_cookieList; ///< Placeholder for network cookies
-
+    void saveCookies();
 };
 
 #endif // NETWORKCOOKIEJAR_H
index 3c46cb6..917a55b 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <QDebug>
 
+#include "network/networkcookiejar.h"
+
 #include "facebookloginbrowser.h"
 
 FacebookLoginBrowser::FacebookLoginBrowser(QWidget *parent) :
@@ -30,4 +32,6 @@ FacebookLoginBrowser::FacebookLoginBrowser(QWidget *parent) :
 
     setWindowFlags(Qt::Dialog);
     setWindowTitle(tr("Login"));
+
+    page()->networkAccessManager()->setCookieJar(new NetworkCookieJar());
 }
index 659f23c..3b5ca45 100644 (file)
@@ -31,10 +31,6 @@ class FacebookLoginBrowser : public QWebView
 public:
     explicit FacebookLoginBrowser(QWidget *parent = 0);
 
-signals:
-
-public slots:
-
 };
 
 #endif // FACEBOOKLOGINBROWSER_H
index 392c34a..bdd2bad 100644 (file)
@@ -539,7 +539,7 @@ void MainWindow::clearCookieJar()
     QList<QNetworkCookie> emptyList;
     emptyList.clear();
 
-    m_cookieJar->setAllCookies(emptyList);
+//    m_cookieJar->setAllCookies(emptyList);
     m_webView->page()->networkAccessManager()->setCookieJar(m_cookieJar);
 }
 
@@ -726,26 +726,27 @@ void MainWindow::keyPressEvent(QKeyEvent* event)
     QWidget::keyPressEvent(event);
 }
 
+///< @todo remove old, duplicate loadCookies()
 void MainWindow::loadCookies()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    QSettings settings(DIRECTORY_NAME, FILE_NAME);
+//    QSettings settings(DIRECTORY_NAME, FILE_NAME);
 
-    QStringList list = settings.value(COOKIES, EMPTY).toStringList();
+//    QStringList list = settings.value(COOKIES, EMPTY).toStringList();
 
-    if(!list.isEmpty()) {
-        QList<QNetworkCookie> cookieList;
-        for(int i=0;i<list.count();i++) {
-            cookieList.append(QNetworkCookie::parseCookies(list.at(i).toAscii()));
-        }
+//    if(!list.isEmpty()) {
+//        QList<QNetworkCookie> cookieList;
+//        for(int i=0;i<list.count();i++) {
+//            cookieList.append(QNetworkCookie::parseCookies(list.at(i).toAscii()));
+//        }
 
-        if(!m_cookieJar)
-               m_cookieJar = new NetworkCookieJar(new QNetworkCookieJar(this));
+//        if(!m_cookieJar)
+//               m_cookieJar = new NetworkCookieJar(new QNetworkCookieJar(this));
 
-        m_cookieJar->setAllCookies(cookieList);
-        m_webView->page()->networkAccessManager()->setCookieJar(m_cookieJar);
-    }
+//        m_cookieJar->setAllCookies(cookieList);
+//        m_webView->page()->networkAccessManager()->setCookieJar(m_cookieJar);
+//    }
 }
 
 void MainWindow::loadDone(bool done)
@@ -914,25 +915,26 @@ void MainWindow::readAutomaticLocationUpdateSettings()
     }
 }
 
+///< @todo remove old, duplicate saveCookies()
 void MainWindow::saveCookies()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if(!m_cookieJar)
-        m_cookieJar = new NetworkCookieJar(new QNetworkCookieJar(this));
+//    if(!m_cookieJar)
+//        m_cookieJar = new NetworkCookieJar(new QNetworkCookieJar(this));
 
-    QList<QNetworkCookie> cookieList = m_cookieJar->allCookies();
-    QStringList list;
+//    QList<QNetworkCookie> cookieList = m_cookieJar->allCookies();
+//    QStringList list;
 
-    for(int i=0;i<cookieList.count();i++) {
-        QNetworkCookie cookie = cookieList.at(i);
-        QByteArray byteArray = cookie.toRawForm(QNetworkCookie::Full);
-        list.append(QString(byteArray));
-    }
-    list.removeDuplicates();
+//    for(int i=0;i<cookieList.count();i++) {
+//        QNetworkCookie cookie = cookieList.at(i);
+//        QByteArray byteArray = cookie.toRawForm(QNetworkCookie::Full);
+//        list.append(QString(byteArray));
+//    }
+//    list.removeDuplicates();
 
-    QSettings settings(DIRECTORY_NAME, FILE_NAME);
-    settings.setValue(COOKIES, list);
+//    QSettings settings(DIRECTORY_NAME, FILE_NAME);
+//    settings.setValue(COOKIES, list);
 }
 
 void MainWindow::setCrosshairVisibility(bool visibility)