annotate demos/browser/cookiejar.d @ 45:71b382c10ef6

add coarse and incomplete QT browser port
author mandel
date Sun, 17 May 2009 18:49:59 +0000
parents
children b5d10b2218da
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1 /****************************************************************************
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
2 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
5 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
6 ** This file is part of the demonstration applications of the Qt Toolkit.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
7 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
9 ** Commercial Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
13 ** a written agreement between you and Nokia.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
14 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
22 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
26 ** package.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
27 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
28 ** GNU General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
35 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
37 ** contact the sales department at qt-sales@nokia.com.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
38 ** $QT_END_LICENSE$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
39 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
40 ****************************************************************************/
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
41 module cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
42
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
43 import QtNetwork.QNetworkCookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
44
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
45 import QtCore.QAbstractItemModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
46 import QtCore.QStringList;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
47
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
48 import QtGui.QDialog;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
49 import QtGui.QTableView;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
50
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
51
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
52 #include "cookiejar.h"
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
53
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
54 #include "autosaver.h"
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
55
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
56 import QtCore.QDateTime;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
57 import QtCore.QDir;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
58 import QtCore.QFile;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
59 import QtCore.QMetaEnum;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
60 import QtCore.QSettings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
61 import QtCore.QUrl;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
62
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
63 import QtGui.QCompleter;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64 import QtGui.QDesktopServices;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
65 import QtGui.QFont;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
66 import QtGui.QFontMetrics;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
67 import QtGui.QHeaderView;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
68 import QtGui.QKeyEvent;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
69 import QtGui.QSortFilterProxyModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
70
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
71 import QtWebKit.QWebSettings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
72
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
73 import QtCore.QDebug;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
74
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
75 /*
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
76 QT_BEGIN_NAMESPACE
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
77 class QSortFilterProxyModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
78 class QKeyEvent;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
79 QT_END_NAMESPACE
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
80
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
81 class AutoSaver;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
82 */
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
83
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
84 static const unsigned int JAR_VERSION = 23;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
85
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
86 QDataStream &operator<<(QDataStream &stream, const QList<QNetworkCookie> &list)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
87 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
88 stream << JAR_VERSION;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
89 stream << quint32(list.size());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
90 for (int i = 0; i < list.size(); ++i)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
91 stream << list.at(i).toRawForm();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
92 return stream;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
93 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
94
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
95 QDataStream &operator>>(QDataStream &stream, QList<QNetworkCookie> &list)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
96 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
97 list.clear();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
98
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
99 quint32 version;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
100 stream >> version;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
101
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
102 if (version != JAR_VERSION)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
103 return stream;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
104
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
105 quint32 count;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
106 stream >> count;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
107 for(quint32 i = 0; i < count; ++i)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
108 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
109 QByteArray value;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
110 stream >> value;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
111 QList<QNetworkCookie> newCookies = QNetworkCookie::parseCookies(value);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
112 if (newCookies.count() == 0 && value.length() != 0) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
113 qWarning() << "CookieJar: Unable to parse saved cookie:" << value;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
114 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
115 for (int j = 0; j < newCookies.count(); ++j)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
116 list.append(newCookies.at(j));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
117 if (stream.atEnd())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
118 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
119 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
120 return stream;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
121 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
122
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
123
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
124 class CookieJar : public QNetworkCookieJar
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
125 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
126 friend class CookieModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
127 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
128 Q_PROPERTY(AcceptPolicy acceptPolicy READ acceptPolicy WRITE setAcceptPolicy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
129 Q_PROPERTY(KeepPolicy keepPolicy READ keepPolicy WRITE setKeepPolicy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
130 Q_PROPERTY(QStringList blockedCookies READ blockedCookies WRITE setBlockedCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
131 Q_PROPERTY(QStringList allowedCookies READ allowedCookies WRITE setAllowedCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
132 Q_PROPERTY(QStringList allowForSessionCookies READ allowForSessionCookies WRITE setAllowForSessionCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
133 Q_ENUMS(KeepPolicy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
134 Q_ENUMS(AcceptPolicy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
135
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
136 signals:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
137 void cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
138
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
139 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
140 enum AcceptPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
141 AcceptAlways,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
142 AcceptNever,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
143 AcceptOnlyFromSitesNavigatedTo
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
144 };
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
145
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
146 enum KeepPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
147 KeepUntilExpire,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
148 KeepUntilExit,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
149 KeepUntilTimeLimit
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
150 };
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
151
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
152 this(QObject *parent = null)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
153 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
154 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
155 m_loaded = false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
156 m_saveTimer = new AutoSaver(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
157 m_acceptCookies = AcceptOnlyFromSitesNavigatedTo;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
158 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
159
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
160 ~this()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
161 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
162 if (m_keepCookies == KeepUntilExit)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
163 clear();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
164 m_saveTimer.saveIfNeccessary();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
165 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
166
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
167 QList<QNetworkCookie> cookiesForUrl(const QUrl &url)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
168 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
169 CookieJar *that = const_cast<CookieJar*>(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
170 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
171 that.load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
172
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
173 QWebSettings *globalSettings = QWebSettings::globalSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
174 if (globalSettings.testAttribute(QWebSettings::PrivateBrowsingEnabled)) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
175 QList<QNetworkCookie> noCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
176 return noCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
177 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
178
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
179 return QNetworkCookieJar::cookiesForUrl(url);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
180 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
181
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
182
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
183 bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
184 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
185 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
186 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
187
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
188 QWebSettings *globalSettings = QWebSettings::globalSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
189 if (globalSettings.testAttribute(QWebSettings::PrivateBrowsingEnabled))
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
190 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
191
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
192 QString host = url.host();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
193 bool eBlock = qBinaryFind(m_exceptions_block.begin(), m_exceptions_block.end(), host) != m_exceptions_block.end();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
194 bool eAllow = qBinaryFind(m_exceptions_allow.begin(), m_exceptions_allow.end(), host) != m_exceptions_allow.end();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
195 bool eAllowSession = qBinaryFind(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end(), host) != m_exceptions_allowForSession.end();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
196
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
197 bool addedCookies = false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
198 // pass exceptions
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
199 bool acceptInitially = (m_acceptCookies != AcceptNever);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
200 if ((acceptInitially && !eBlock)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
201 || (!acceptInitially && (eAllow || eAllowSession))) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
202 // pass url domain == cookie domain
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
203 QDateTime soon = QDateTime::currentDateTime();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
204 soon = soon.addDays(90);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
205 foreach(QNetworkCookie cookie, cookieList) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
206 QList<QNetworkCookie> lst;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
207 if (m_keepCookies == KeepUntilTimeLimit
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
208 && !cookie.isSessionCookie()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
209 && cookie.expirationDate() > soon) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
210 cookie.setExpirationDate(soon);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
211 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
212 lst += cookie;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
213 if (QNetworkCookieJar::setCookiesFromUrl(lst, url)) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
214 addedCookies = true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
215 } else {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
216 // finally force it in if wanted
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
217 if (m_acceptCookies == AcceptAlways) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
218 QList<QNetworkCookie> cookies = allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
219 cookies += cookie;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
220 setAllCookies(cookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
221 addedCookies = true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
222 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
223 #if 0
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
224 else
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
225 qWarning() << "setCookiesFromUrl failed" << url << cookieList.value(0).toRawForm();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
226 #endif
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
227 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
228 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
229 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
230
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
231 if (addedCookies) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
232 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
233 emit cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
234 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
235 return addedCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
236 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
237
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
238 AcceptPolicy acceptPolicy()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
240 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
241 (const_cast<CookieJar*>(this)).load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
242 return m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
243 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
244
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
245 void setAcceptPolicy(AcceptPolicy policy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
246 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
247 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
248 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
249 if (policy == m_acceptCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
250 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
251 m_acceptCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
252 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
253 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
254
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
255 KeepPolicy keepPolicy()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
256 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
257 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
258 (const_cast<CookieJar*>(this)).load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
259 return m_keepCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
260 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
261
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
262 void setKeepPolicy(KeepPolicy policy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
263 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
264 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
265 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266 if (policy == m_keepCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
267 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
268 m_keepCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
269 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
270 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
271
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
272
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
273 QStringList blockedCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
274 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
275 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
276 (const_cast<CookieJar*>(this)).load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
277 return m_exceptions_block;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
278 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
279
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
280 QStringList allowedCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
281 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
282 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
283 (const_cast<CookieJar*>(this)).load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
284 return m_exceptions_allow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
285 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
286
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
287 QStringList allowForSessionCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
288 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
289 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
290 (const_cast<CookieJar*>(this)).load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
291 return m_exceptions_allowForSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
292 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
293
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
294 void setBlockedCookies(const QStringList &list)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
295 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
296 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
297 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
298 m_exceptions_block = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
299 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
300 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
301 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
302
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
303 void setAllowedCookies(const QStringList &list)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
304 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
305 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
306 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
307 m_exceptions_allow = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
308 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
309 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
310 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
311
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
312 void setAllowForSessionCookies(const QStringList &list)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
313 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
314 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
315 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
316 m_exceptions_allowForSession = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
317 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
318 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
319 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
320
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
321 public slots:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
322
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
323 void clear()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
324 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
325 setAllCookies(QList<QNetworkCookie>());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
326 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
327 emit cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
328 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
329
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
330 void loadSettings()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
331 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
332 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
333 settings.beginGroup(QLatin1String("cookies"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
334 QByteArray value = settings.value(QLatin1String("acceptCookies"),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
335 QLatin1String("AcceptOnlyFromSitesNavigatedTo")).toByteArray();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
336 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
337 m_acceptCookies = acceptPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
338 AcceptOnlyFromSitesNavigatedTo :
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
339 static_cast<AcceptPolicy>(acceptPolicyEnum.keyToValue(value));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
340
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
341 value = settings.value(QLatin1String("keepCookiesUntil"), QLatin1String("KeepUntilExpire")).toByteArray();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
342 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
343 m_keepCookies = keepPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
344 KeepUntilExpire :
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
345 static_cast<KeepPolicy>(keepPolicyEnum.keyToValue(value));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
346
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
347 if (m_keepCookies == KeepUntilExit)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
348 setAllCookies(QList<QNetworkCookie>());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
349
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
350 m_loaded = true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
351 emit cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
352 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
353
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
354 private slots:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
355 void save()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
356 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
357 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
358 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
359 purgeOldCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
360 QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
361 if (directory.isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
362 directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
363 if (!QFile::exists(directory)) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
364 QDir dir;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
365 dir.mkpath(directory);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
366 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
367 QSettings cookieSettings(directory + QLatin1String("/cookies.ini"), QSettings::IniFormat);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
368 QList<QNetworkCookie> cookies = allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
369 for (int i = cookies.count() - 1; i >= 0; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
370 if (cookies.at(i).isSessionCookie())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
371 cookies.removeAt(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
372 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
373 cookieSettings.setValue(QLatin1String("cookies"), qVariantFromValue<QList<QNetworkCookie> >(cookies));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
374 cookieSettings.beginGroup(QLatin1String("Exceptions"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
375 cookieSettings.setValue(QLatin1String("block"), m_exceptions_block);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
376 cookieSettings.setValue(QLatin1String("allow"), m_exceptions_allow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
377 cookieSettings.setValue(QLatin1String("allowForSession"), m_exceptions_allowForSession);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
378
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
379 // save cookie settings
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
380 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
381 settings.beginGroup(QLatin1String("cookies"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
382 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
383 settings.setValue(QLatin1String("acceptCookies"), QLatin1String(acceptPolicyEnum.valueToKey(m_acceptCookies)));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
384
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
385 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
386 settings.setValue(QLatin1String("keepCookiesUntil"), QLatin1String(keepPolicyEnum.valueToKey(m_keepCookies)));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
387 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
388
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
389 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
390 void purgeOldCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
391 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
392 QList<QNetworkCookie> cookies = allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
393 if (cookies.isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
394 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
395 int oldCount = cookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
396 QDateTime now = QDateTime::currentDateTime();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
397 for (int i = cookies.count() - 1; i >= 0; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
398 if (!cookies.at(i).isSessionCookie() && cookies.at(i).expirationDate() < now)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
399 cookies.removeAt(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
400 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
401 if (oldCount == cookies.count())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
402 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
403 setAllCookies(cookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
404 emit cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
405 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
406
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
407 void load()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
408 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
409 if (m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
410 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
411 // load cookies and exceptions
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
412 qRegisterMetaTypeStreamOperators<QList<QNetworkCookie> >("QList<QNetworkCookie>");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
413 QSettings cookieSettings(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QLatin1String("/cookies.ini"), QSettings::IniFormat);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
414 setAllCookies(qvariant_cast<QList<QNetworkCookie> >(cookieSettings.value(QLatin1String("cookies"))));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
415 cookieSettings.beginGroup(QLatin1String("Exceptions"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
416 m_exceptions_block = cookieSettings.value(QLatin1String("block")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
417 m_exceptions_allow = cookieSettings.value(QLatin1String("allow")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
418 m_exceptions_allowForSession = cookieSettings.value(QLatin1String("allowForSession")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
419 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
420 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
421 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
422
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
423 loadSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
424 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
425
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
426 bool m_loaded;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
427 AutoSaver *m_saveTimer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
428
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
429 AcceptPolicy m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
430 KeepPolicy m_keepCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
431
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
432 QStringList m_exceptions_block;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
433 QStringList m_exceptions_allow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
434 QStringList m_exceptions_allowForSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
435 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
436
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
437 class CookieModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
438 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
439 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
440
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
441 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
442 this(CookieJar *jar, QObject *parent = null )
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
443 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
444 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
445 m_cookieJar = cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
446 connect(m_cookieJar, SIGNAL(cookiesChanged()), this, SLOT(cookiesChanged()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
447 m_cookieJar.load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
448 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
449
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
450 QVariant headerData(int section, Qt.Orientation orientation, int role)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
451 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
452 if (role == Qt.SizeHintRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
453 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
454 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
455 QFontMetrics fm(font);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
456 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
457 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
458 return QSize(width, height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
459 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
460
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
461 if (orientation == Qt.Horizontal) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
462 if (role != Qt.DisplayRole)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
463 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
464
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
465 switch (section) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
466 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
467 return tr("Website");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
468 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
469 return tr("Name");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
470 case 2:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
471 return tr("Path");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
472 case 3:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
473 return tr("Secure");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
474 case 4:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
475 return tr("Expires");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
476 case 5:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
477 return tr("Contents");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
478 default:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
479 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
480 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
481 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
482 return QAbstractTableModel.headerData(section, orientation, role);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
483 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
484
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
485
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
486 QVariant data(const QModelIndex &index, int role = Qt.DisplayRole)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
487 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
488 QList<QNetworkCookie> lst;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
489 if (m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
490 lst = m_cookieJar.allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
491 if (index.row() < 0 || index.row() >= lst.size())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
492 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
493
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
494 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
495 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
496 case Qt.EditRole: {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
497 QNetworkCookie cookie = lst.at(index.row());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
498 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
499 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
500 return cookie.domain();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
501 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
502 return cookie.name();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
503 case 2:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
504 return cookie.path();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
505 case 3:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
506 return cookie.isSecure();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
507 case 4:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
508 return cookie.expirationDate();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
509 case 5:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
510 return cookie.value();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
511 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
512 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
513 case Qt.FontRole:{
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
514 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
515 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
516 return font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
517 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
518 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
519
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
520 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
521 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
522
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
523 int columnCount(const QModelIndex &parent = QModelIndex())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
524 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
525 return (parent.isValid()) ? 0 : 6;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
526 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
527
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
528
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
529 int rowCount(const QModelIndex &parent = QModelIndex())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
530 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
531 return (parent.isValid() || !m_cookieJar) ? 0 : m_cookieJar.allCookies().count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
532 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
533
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
534
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
535 bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
536 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
537 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
538 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
539 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
540 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
541 QList<QNetworkCookie> lst = m_cookieJar.allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
542 for (int i = lastRow; i >= row; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
543 lst.removeAt(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
544 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
545 m_cookieJar.setAllCookies(lst);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
546 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
547 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
548 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
549
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
550 private slots:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
551
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
552 void cookiesChanged()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
553 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
554 reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
555 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
556
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
557 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
558 CookieJar *m_cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
559 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
560
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
561 #include "ui_cookies.h"
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
562 #include "ui_cookiesexceptions.h"
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
563
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
564 class CookiesDialog : public QDialog, public Ui_CookiesDialog
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
565 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
566 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
567
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
568 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
569
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
570 this(CookieJar *cookieJar, QWidget *parent = this) : QDialog(parent)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
571 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
572 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
573 setWindowFlags(Qt.Sheet);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
574 CookieModel *model = new CookieModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
575 m_proxyModel = new QSortFilterProxyModel(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
576 connect(search, SIGNAL(textChanged(QString)),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
577 m_proxyModel, SLOT(setFilterFixedString(QString)));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
578 connect(removeButton, SIGNAL(clicked()), cookiesTable, SLOT(removeOne()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
579 connect(removeAllButton, SIGNAL(clicked()), cookiesTable, SLOT(removeAll()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
580 m_proxyModel.setSourceModel(model);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
581 cookiesTable.verticalHeader().hide();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
582 cookiesTable.setSelectionBehavior(QAbstractItemView::SelectRows);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
583 cookiesTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
584 cookiesTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
585 cookiesTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
586 cookiesTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
587 cookiesTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
588 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
589 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
590 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
591 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
592 cookiesTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
593 cookiesTable.verticalHeader().setMinimumSectionSize(-1);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
594 for (int i = 0; i < model.columnCount(); ++i){
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
595 int header = cookiesTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
596 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
597 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
598 header = fm.width(QLatin1String("averagehost.domain.com"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
599 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
600 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
601 header = fm.width(QLatin1String("_session_id"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
602 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
603 case 4:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
604 header = fm.width(QDateTime::currentDateTime().toString(Qt.LocalDate));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
605 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
606 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
607 int buffer = fm.width(QLatin1String("xx"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
608 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
609 cookiesTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
610 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
611 cookiesTable.horizontalHeader().setStretchLastSection(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
612 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
613
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
614 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
615
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
616 QSortFilterProxyModel *m_proxyModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
617 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
618
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
619 class CookieExceptionsModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
620 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
621 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
622 friend class CookiesExceptionsDialog;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
623
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
624 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
625 zhis(CookieJar *cookieJar, QObject *parent = null)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
626 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
627 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
628 m_cookieJar = cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
629 m_allowedCookies = m_cookieJar.allowedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
630 m_blockedCookies = m_cookieJar.blockedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
631 m_sessionCookies = m_cookieJar.allowForSessionCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
632 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
633
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
634 QVariant headerData(int section, Qt.Orientation orientation, int role)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
635 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
636 if (role == Qt.SizeHintRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
637 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
638 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
639 QFontMetrics fm(font);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
640 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
641 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
642 return QSize(width, height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
643 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
644
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
645 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
646 switch (section) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
647 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
648 return tr("Website");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
649 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
650 return tr("Status");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
651 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
652 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
653 return QAbstractTableModel::headerData(section, orientation, role);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
654 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
655
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
656
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
657
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
658 QVariant data(const QModelIndex &index, int role = Qt.DisplayRole)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
659 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
660 if (index.row() < 0 || index.row() >= rowCount())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
661 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
662
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
663 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
664 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
665 case Qt.EditRole: {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
666 int row = index.row();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
667 if (row < m_allowedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
668 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
669 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
670 return m_allowedCookies.at(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
671 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
672 return tr("Allow");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
673 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
674 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
675 row = row - m_allowedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
676 if (row < m_blockedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
677 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
678 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
679 return m_blockedCookies.at(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
680 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
681 return tr("Block");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
682 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
683 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
684 row = row - m_blockedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
685 if (row < m_sessionCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
686 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
687 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
688 return m_sessionCookies.at(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
689 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
690 return tr("Allow For Session");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
691 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
692 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
693 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
694 case Qt.FontRole:{
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
695 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
696 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
697 return font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
698 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
699 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
700 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
701 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
702
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
703 int columnCount(const QModelIndex &parent = QModelIndex());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
704 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
705 return (parent.isValid()) ? 0 : 2;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
706 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
707
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
708 int rowCount(const QModelIndex &parent = QModelIndex())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
709 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
710 return (parent.isValid() || !m_cookieJar) ? 0 : m_allowedCookies.count() + m_blockedCookies.count() + m_sessionCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
711 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
712
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
713 bool removeRows(int row, int count, const QModelIndex &parent)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
714 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
715 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
716 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
717
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
718 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
719 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
720 for (int i = lastRow; i >= row; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
721 if (i < m_allowedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
722 m_allowedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
723 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
724 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
725 i = i - m_allowedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
726 if (i < m_blockedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
727 m_blockedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
728 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
729 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
730 i = i - m_blockedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
731 if (i < m_sessionCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
732 m_sessionCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
733 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
734 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
735 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
736
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
737 m_cookieJar.setAllowedCookies(m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
738 m_cookieJar.setBlockedCookies(m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
739 m_cookieJar.setAllowForSessionCookies(m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
740 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
741 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
742 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
743 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
744 CookieJar *m_cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
745
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746 // Domains we allow, Domains we block, Domains we allow for this session
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
747 QStringList m_allowedCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
748 QStringList m_blockedCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
749 QStringList m_sessionCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
750 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
751
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
752 class CookiesExceptionsDialog : public QDialog, public Ui_CookiesExceptionsDialog
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
753 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
754 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
755
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
756 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
757 this(CookieJar *cookieJar, QWidget *parent = null)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
758 : QDialog(parent)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
759 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
760 m_cookieJar = cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
761 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
762 setWindowFlags(Qt.Sheet);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
763 connect(removeButton, SIGNAL(clicked()), exceptionTable, SLOT(removeOne()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
764 connect(removeAllButton, SIGNAL(clicked()), exceptionTable, SLOT(removeAll()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
765 exceptionTable.verticalHeader().hide();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
766 exceptionTable.setSelectionBehavior(QAbstractItemView::SelectRows);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
767 exceptionTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
768 exceptionTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
769 exceptionTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
770 exceptionTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
771 m_exceptionsModel = new CookieExceptionsModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
772 m_proxyModel = new QSortFilterProxyModel(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
773 m_proxyModel.setSourceModel(m_exceptionsModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
774 connect(search, SIGNAL(textChanged(QString)),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
775 m_proxyModel, SLOT(setFilterFixedString(QString)));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
776 exceptionTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
777
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
778 CookieModel *cookieModel = new CookieModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
779 domainLineEdit.setCompleter(new QCompleter(cookieModel, domainLineEdit));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
780
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
781 connect(domainLineEdit, SIGNAL(textChanged(const QString &)),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
782 this, SLOT(textChanged(const QString &)));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
783 connect(blockButton, SIGNAL(clicked()), this, SLOT(block()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
784 connect(allowButton, SIGNAL(clicked()), this, SLOT(allow()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
785 connect(allowForSessionButton, SIGNAL(clicked()), this, SLOT(allowForSession()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
786
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
787 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
788 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
789 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
790 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
791 exceptionTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
792 exceptionTable.verticalHeader().setMinimumSectionSize(-1);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
793 for (int i = 0; i < m_exceptionsModel.columnCount(); ++i){
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
794 int header = exceptionTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
795 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
796 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
797 header = fm.width(QLatin1String("averagebiglonghost.domain.com"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
798 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
799 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
800 header = fm.width(QLatin1String("Allow For Session"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
801 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
802 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
803 int buffer = fm.width(QLatin1String("xx"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
804 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
805 exceptionTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
806 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
807 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
808
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
809 private slots:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
810 void block()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
811 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
812 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
813 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
814 m_exceptionsModel.m_blockedCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
815 m_cookieJar.setBlockedCookies(m_exceptionsModel.m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
816 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
817 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
818
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
819 void allow()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
820 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
821 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
822 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
823 m_exceptionsModel.m_allowedCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
824 m_cookieJar.setAllowedCookies(m_exceptionsModel.m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
825 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
826 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
827 void allowForSession()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
828 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
829 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
830 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
831 m_exceptionsModel.m_sessionCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
832 m_cookieJar.setAllowForSessionCookies(m_exceptionsModel.m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
833 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
834 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
835
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
836 void textChanged(const QString &text)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
837 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
838 bool enabled = !text.isEmpty();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
839 blockButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
840 allowButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
841 allowForSessionButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
842 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
843
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
844 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
845
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
846 CookieExceptionsModel *m_exceptionsModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
847 QSortFilterProxyModel *m_proxyModel;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
848 CookieJar *m_cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
849 }