Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

cookiejar.h Example File
demos/browser/cookiejar.h

 /****************************************************************************
 **
 ** Copyright (C) 2007-2008 Trolltech ASA. All rights reserved.
 **
 ** This file is part of the documentation of the Qt Toolkit.
 **
 ** This file may be used under the terms of the GNU General Public
** License versions 2.0 or 3.0 as published by the Free Software
** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file.  Alternatively you may (at
** your option) use any later version of the GNU General Public
** License if such license has been publicly approved by Trolltech ASA
** (or its successors, if any) and the KDE Free Qt Foundation. In
** addition, as a special exception, Trolltech gives you certain
** additional rights. These rights are described in the Trolltech GPL
** Exception version 1.2, which can be found at
** http://www.trolltech.com/products/qt/gplexception/ and in the file
** GPL_EXCEPTION.txt in this package.
**
** Please review the following information to ensure GNU General
** Public Licensing requirements will be met:
** http://trolltech.com/products/qt/licenses/licensing/opensource/. If
** you are unsure which license is appropriate for your use, please
** review the following information:
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
** or contact the sales department at sales@trolltech.com.
**
** In addition, as a special exception, Trolltech, as the sole
** copyright holder for Qt Designer, grants users of the Qt/Eclipse
** Integration plug-in the right for the Qt/Eclipse Integration to
** link to functionality provided by Qt Designer and its related
** libraries.
**
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly
** granted herein.
 **
 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 **
 ****************************************************************************/

 #ifndef COOKIEJAR_H
 #define COOKIEJAR_H

 #include <QtNetwork/QNetworkCookieJar>
 #include <QtCore/QStringList>
 #include <QtCore/QAbstractItemModel>
 #include <QtGui/QDialog>
 #include <QtGui/QTableView>

 QT_BEGIN_NAMESPACE
 class QSortFilterProxyModel;
 class QKeyEvent;
 QT_END_NAMESPACE

 class AutoSave;

 class CookieJar : public QNetworkCookieJar
 {
     friend class CookieModel;
     Q_OBJECT
     Q_PROPERTY(AcceptPolicy acceptPolicy READ acceptPolicy WRITE setAcceptPolicy)
     Q_PROPERTY(KeepPolicy keepPolicy READ keepPolicy WRITE setKeepPolicy)
     Q_PROPERTY(QStringList blockedCookies READ blockedCookies WRITE setBlockedCookies)
     Q_PROPERTY(QStringList allowedCookies READ allowedCookies WRITE setAllowedCookies)
     Q_PROPERTY(QStringList allowForSessionCookies READ allowForSessionCookies WRITE setAllowForSessionCookies)
     Q_ENUMS(KeepPolicy)
     Q_ENUMS(AcceptPolicy)

 signals:
     void cookiesChanged();

 public:
     enum AcceptPolicy {
         AcceptAlways,
         AcceptNever,
         AcceptOnlyFromSitesNavigatedTo
     };

     enum KeepPolicy {
         Expire,
         Exit,
         TimeLimit
     };

     CookieJar(QObject *parent = 0);
     ~CookieJar();

     QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const;
     bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url);

     AcceptPolicy acceptPolicy() const;
     void setAcceptPolicy(AcceptPolicy policy);

     KeepPolicy keepPolicy() const;
     void setKeepPolicy(KeepPolicy policy);

     QStringList blockedCookies() const;
     QStringList allowedCookies() const;
     QStringList allowForSessionCookies() const;

     void setBlockedCookies(const QStringList &list);
     void setAllowedCookies(const QStringList &list);
     void setAllowForSessionCookies(const QStringList &list);

 public slots:
     void clear();

 private slots:
     void save();

 private:
     void purgeOldCookies();
     void load();
     bool m_loaded;
     AutoSave *m_saveTimer;

     AcceptPolicy m_acceptCookies;
     KeepPolicy m_keepCookies;

     QStringList m_exceptions_block;
     QStringList m_exceptions_allow;
     QStringList m_exceptions_allowForSession;
 };

 class CookieModel : public QAbstractTableModel
 {
     Q_OBJECT

 public:
     CookieModel(CookieJar *jar, QObject *parent = 0);
     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     int columnCount(const QModelIndex &parent = QModelIndex()) const;
     int rowCount(const QModelIndex &parent = QModelIndex()) const;
     bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());

 private slots:
     void cookiesChanged();

 private:
     CookieJar *m_jar;
 };

 #include "ui_cookies.h"
 #include "ui_cookiesexceptions.h"

 class CookiesDialog : public QDialog, public Ui_CookiesDialog
 {
     Q_OBJECT

 public:
     CookiesDialog(CookieJar *cookieJar, QWidget *parent = 0);

 private:
     QSortFilterProxyModel *m_proxyModel;
 };

 class CookieExceptionsModel : public QAbstractTableModel
 {
     Q_OBJECT
     friend class CookiesExceptionsDialog;

 public:
     CookieExceptionsModel(CookieJar *cookieJar, QObject *parent = 0);
     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     int columnCount(const QModelIndex &parent = QModelIndex()) const;
     int rowCount(const QModelIndex &parent = QModelIndex()) const;
     bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());

 private:
     CookieJar *m_jar;

     // Domains we allow, Domains we block, Domains we allow for this session
     QStringList m_allowedCookies;
     QStringList m_blockedCookies;
     QStringList m_sessionCookies;
 };

 class CookiesExceptionsDialog : public QDialog, public Ui_CookiesExceptionsDialog
 {
     Q_OBJECT

 public:
     CookiesExceptionsDialog(CookieJar *cookieJar, QWidget *parent = 0);

 private slots:
     void block();
     void allow();
     void allowForSession();

 private:
     CookieExceptionsModel *m_model;
     QSortFilterProxyModel *m_proxyModel;
     CookieJar *m_jar;

 };

 #endif // COOKIEJAR_H


Copyright © 2008 Trolltech Trademarks
Qt 4.4.0-beta1