annotate demos/browser/cookiejar.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents b5d10b2218da
children 37caa90ce503
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
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
43 import qt.network.QNetworkCookieJar;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
44 import qt.core.QDebug;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
45
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
46 import qt.core.QAbstractItemModel;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
47 import qt.core.QStringList;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
48 import qt.core.QDateTime;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
49 import qt.core.QDir;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
50 import qt.core.QFile;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
51 import qt.core.QMetaEnum;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
52 import qt.core.QSettings;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
53 import qt.core.QUrl;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
54
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
55 import qt.gui.QDialog;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
56 import qt.gui.QTableView;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
57 import qt.gui.QCompleter;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
58 import qt.gui.QDesktopServices;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
59 import qt.gui.QFont;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
60 import qt.gui.QFontMetrics;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
61 import qt.gui.QHeaderView;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
62 import qt.gui.QKeyEvent;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
63 import qt.gui.QSortFilterProxyModel;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
65 import QtWebKit.QWebSettings;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
66
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
67 import cookiejar;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
68 import autosaver;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
69
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 static const unsigned int JAR_VERSION = 23;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
72
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
73 QDataStream &operator<<(QDataStream stream, QList<QNetworkCookie> list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
74 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
75 stream << JAR_VERSION;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
76 stream << quint32(list.size());
b5d10b2218da more porting
mandel
parents: 45
diff changeset
77 for (int i = 0; i < list.size(); ++i)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
78 stream << list.at(i).toRawForm();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
79 return stream;
45
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
82 QDataStream &operator>>(QDataStream stream, QList<QNetworkCookie> list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
83 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
84 list.clear();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
85
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
86 quint32 version_;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
87 stream >> version_;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
88
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
89 if (version != JAR_VERSION)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
90 return stream;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
91
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
92 quint32 count;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
93 stream >> count;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
94 for(quint32 i = 0; i < count; ++i)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
95 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
96 QByteArray value;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
97 stream >> value;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
98 QList<QNetworkCookie> newCookies = QNetworkCookie.parseCookies(value);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
99 if (newCookies.count() == 0 && value.length() != 0) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
100 qWarning() << "CookieJar: Unable to parse saved cookie:" << value;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
101 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
102
b5d10b2218da more porting
mandel
parents: 45
diff changeset
103 for (int j = 0; j < newCookies.count(); ++j)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
104 list.append(newCookies.at(j));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
105
b5d10b2218da more porting
mandel
parents: 45
diff changeset
106 if (stream.atEnd())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
107 break;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
108 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
109 return stream;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
110 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
111
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
112 class CookieJar : public QNetworkCookieJar
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
113 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
114 mixin Signal!("cookiesChanged");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
115
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
116 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
117
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
118 enum AcceptPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
119 AcceptAlways,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
120 AcceptNever,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
121 AcceptOnlyFromSitesNavigatedTo
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
122 }
45
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 enum KeepPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
125 KeepUntilExpire,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
126 KeepUntilExit,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
127 KeepUntilTimeLimit
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
128 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
129
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
130 this(QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
131 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
132 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
133 m_loaded = false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
134 m_saveTimer = new AutoSaver(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
135 m_acceptCookies = AcceptOnlyFromSitesNavigatedTo;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
136 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
137
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
138 ~this()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
139 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
140 if (m_keepCookies == KeepUntilExit)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
141 clear();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
142 m_saveTimer.saveIfNeccessary();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
143 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
144
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
145 QList<QNetworkCookie> cookiesForUrl(QUrl url)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
146 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
147 CookieJar that = const_cast<CookieJar>(this);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
148 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
149 that.load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
150
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
151 QWebSettings globalSettings = QWebSettings.globalSettings();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
152 if (globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled)) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
153 QList<QNetworkCookie> noCookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
154 return noCookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
155 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
156
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
157 return QNetworkCookieJar.cookiesForUrl(url);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
158 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
159
b5d10b2218da more porting
mandel
parents: 45
diff changeset
160 bool setCookiesFromUrl(QList<QNetworkCookie> cookieList, QUrl url)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
161 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
162 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
163 load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
164
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
165 QWebSettings globalSettings = QWebSettings.globalSettings();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
166 if (globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled))
b5d10b2218da more porting
mandel
parents: 45
diff changeset
167 return false;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
168
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
169 QString host = url.host();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
170 bool eBlock = qBinaryFind(m_exceptions_block.begin(), m_exceptions_block.end(), host) != m_exceptions_block.end();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
171 bool eAllow = qBinaryFind(m_exceptions_allow.begin(), m_exceptions_allow.end(), host) != m_exceptions_allow.end();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
172 bool eAllowSession = qBinaryFind(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end(), host) != m_exceptions_allowForSession.end();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
173
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
174 bool addedCookies = false;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
175 // pass exceptions
b5d10b2218da more porting
mandel
parents: 45
diff changeset
176 bool acceptInitially = (m_acceptCookies != AcceptNever);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
177 if ((acceptInitially && !eBlock) || (!acceptInitially && (eAllow || eAllowSession))) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
178 // pass url domain == cookie domain
b5d10b2218da more porting
mandel
parents: 45
diff changeset
179 QDateTime soon = QDateTime.currentDateTime();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
180 soon = soon.addDays(90);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
181 foreach(QNetworkCookie cookie, cookieList) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
182 QList<QNetworkCookie> lst;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
183 if (m_keepCookies == KeepUntilTimeLimit && !cookie.isSessionCookie() && cookie.expirationDate() > soon) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
184 cookie.setExpirationDate(soon);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
185 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
186 lst += cookie;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
187 if (QNetworkCookieJar.setCookiesFromUrl(lst, url)) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
188 addedCookies = true;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
189 } else {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
190 // finally force it in if wanted
b5d10b2218da more porting
mandel
parents: 45
diff changeset
191 if (m_acceptCookies == AcceptAlways) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
192 QList<QNetworkCookie> cookies = allCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
193 cookies += cookie;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
194 setAllCookies(cookies);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
195 addedCookies = true;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
196 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
197 /*
b5d10b2218da more porting
mandel
parents: 45
diff changeset
198 else
b5d10b2218da more porting
mandel
parents: 45
diff changeset
199 qWarning() << "setCookiesFromUrl failed" << url << cookieList.value(0).toRawForm();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
200 */
b5d10b2218da more porting
mandel
parents: 45
diff changeset
201 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
202 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
203 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
204
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
205 if (addedCookies) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
206 m_saveTimer.changeOccurred();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
207 emit cookiesChanged();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
208 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
209 return addedCookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
210 }
45
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 AcceptPolicy acceptPolicy()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
213 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
214 if (!m_loaded)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
215 (const_cast<CookieJar>(this)).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
216 return m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
217 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
218
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
219 void setAcceptPolicy(AcceptPolicy policy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
220 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
221 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
222 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
223 if (policy == m_acceptCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
224 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
225 m_acceptCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
226 m_saveTimer.changeOccurred();
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 KeepPolicy keepPolicy()
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 (!m_loaded)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
232 (const_cast<CookieJar>(this)).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
233 return m_keepCookies;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
236 void setKeepPolicy(KeepPolicy policy)
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 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
240 if (policy == m_keepCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
241 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
242 m_keepCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
243 m_saveTimer.changeOccurred();
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
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 QStringList blockedCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
248 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
249 if (!m_loaded)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
250 (const_cast<CookieJar>(this)).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
251 return m_exceptions_block;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
252 }
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 QStringList allowedCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
255 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
256 if (!m_loaded)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
257 (const_cast<CookieJar>(this)).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
258 return m_exceptions_allow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
259 }
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 QStringList allowForSessionCookies()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
262 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
263 if (!m_loaded)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
264 (const_cast<CookieJar>(this)).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
265 return m_exceptions_allowForSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
267
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
268 void setBlockedCookies(QStringList list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
269 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
270 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
271 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
272 m_exceptions_block = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
273 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
274 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
275 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
276
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
277 void setAllowedCookies(QStringList list)
45
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 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
280 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
281 m_exceptions_allow = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
282 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
283 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
284 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
285
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
286 void setAllowForSessionCookies(QStringList list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
287 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
288 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
289 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
290 m_exceptions_allowForSession = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
291 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
292 m_saveTimer.changeOccurred();
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
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
295 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
296
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
297 void clear()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
298 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
299 setAllCookies(QList<QNetworkCookie>());
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 emit cookiesChanged();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
304 void loadSettings()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
305 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
306 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
307 settings.beginGroup(QLatin1String("cookies"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
308 QByteArray value = settings.value(QLatin1String("acceptCookies"),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
309 QLatin1String("AcceptOnlyFromSitesNavigatedTo")).toByteArray();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
310 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
311 m_acceptCookies = acceptPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
312 AcceptOnlyFromSitesNavigatedTo :
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
313 static_cast<AcceptPolicy>(acceptPolicyEnum.keyToValue(value));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
314
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
315 value = settings.value(QLatin1String("keepCookiesUntil"), QLatin1String("KeepUntilExpire")).toByteArray();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
316 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
317 m_keepCookies = keepPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
318 KeepUntilExpire :
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
319 static_cast<KeepPolicy>(keepPolicyEnum.keyToValue(value));
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 if (m_keepCookies == KeepUntilExit)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
322 setAllCookies(QList<QNetworkCookie>());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
323
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
324 m_loaded = true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
325 emit cookiesChanged();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
326 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
327
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
328 private:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
329 void save()
b5d10b2218da more porting
mandel
parents: 45
diff changeset
330 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
331 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
332 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
333 purgeOldCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
334 QString directory = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
335 if (directory.isEmpty())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
336 directory = QDir.homePath() + QLatin1String("/.") + QCoreApplication.applicationName();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
337 if (!QFile.exists(directory)) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
338 QDir dir;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
339 dir.mkpath(directory);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
340 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
341 QSettings cookieSettings(directory + QLatin1String("/cookies.ini"), QSettings.IniFormat);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
342 QList<QNetworkCookie> cookies = allCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
343 for (int i = cookies.count() - 1; i >= 0; --i) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
344 if (cookies.at(i).isSessionCookie())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
345 cookies.removeAt(i);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
346 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
347 cookieSettings.setValue(QLatin1String("cookies"), qVariantFromValue<QList<QNetworkCookie> >(cookies));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
348 cookieSettings.beginGroup(QLatin1String("Exceptions"));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
349 cookieSettings.setValue(QLatin1String("block"), m_exceptions_block);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
350 cookieSettings.setValue(QLatin1String("allow"), m_exceptions_allow);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
351 cookieSettings.setValue(QLatin1String("allowForSession"), m_exceptions_allowForSession);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
352
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
353 // save cookie settings
b5d10b2218da more porting
mandel
parents: 45
diff changeset
354 QSettings settings;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
355 settings.beginGroup(QLatin1String("cookies"));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
356 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
357 settings.setValue(QLatin1String("acceptCookies"), QLatin1String(acceptPolicyEnum.valueToKey(m_acceptCookies)));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
358
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
359 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
360 settings.setValue(QLatin1String("keepCookiesUntil"), QLatin1String(keepPolicyEnum.valueToKey(m_keepCookies)));
b5d10b2218da more porting
mandel
parents: 45
diff changeset
361 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
362
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
363 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
364
b5d10b2218da more porting
mandel
parents: 45
diff changeset
365 void purgeOldCookies()
b5d10b2218da more porting
mandel
parents: 45
diff changeset
366 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
367 QList<QNetworkCookie> cookies = allCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
368 if (cookies.isEmpty())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
369 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
370 int oldCount = cookies.count();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
371 QDateTime now = QDateTime.currentDateTime();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
372 for (int i = cookies.count() - 1; i >= 0; --i) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
373 if (!cookies.at(i).isSessionCookie() && cookies.at(i).expirationDate() < now)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
374 cookies.removeAt(i);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
375 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
376 if (oldCount == cookies.count())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
377 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
378 setAllCookies(cookies);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
379 emit cookiesChanged();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
380 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
381
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
382 void load()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
383 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
384 if (m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
385 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
386 // load cookies and exceptions
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
387 qRegisterMetaTypeStreamOperators<QList<QNetworkCookie> >("QList<QNetworkCookie>");
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
388 auto cookieSettings = new QSettings(QDesktopServices.storageLocation(QDesktopServices.DataLocation) + QLatin1String("/cookies.ini"), QSettings.IniFormat);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
389 setAllCookies(qvariant_cast<QList<QNetworkCookie> >(cookieSettings.value(QLatin1String("cookies"))));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
390 cookieSettings.beginGroup(QLatin1String("Exceptions"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
391 m_exceptions_block = cookieSettings.value(QLatin1String("block")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
392 m_exceptions_allow = cookieSettings.value(QLatin1String("allow")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
393 m_exceptions_allowForSession = cookieSettings.value(QLatin1String("allowForSession")).toStringList();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
394 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
395 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
396 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
397
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
398 loadSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
399 }
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 bool m_loaded;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
402 AutoSaver m_saveTimer;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
403
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
404 AcceptPolicy m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
405 KeepPolicy m_keepCookies;
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 QStringList m_exceptions_block;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
408 QStringList m_exceptions_allow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
409 QStringList m_exceptions_allowForSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
410 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
411
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
412 class CookieModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
413 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
414
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
415 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
416
b5d10b2218da more porting
mandel
parents: 45
diff changeset
417 this(CookieJar jar, QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
418 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
419 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
420 m_cookieJar = cookieJar;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
421 m_cookieJar.cookiesChanged.connect(&this.cookiesChanged);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
422 m_cookieJar.load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
423 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
424
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
425 QVariant headerData(int section, Qt.Orientation orientation, int role)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
426 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
427 if (role == Qt.SizeHintRole) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
428 QFont font;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
429 font.setPointSize(10);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
430 QFontMetrics fm(font);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
431 int height = fm.height() + fm.height()/3;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
432 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
b5d10b2218da more porting
mandel
parents: 45
diff changeset
433 return QSize(width, height);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
434 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
435
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
436 if (orientation == Qt.Horizontal) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
437 if (role != Qt.DisplayRole)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
438 return QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
439
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
440 switch (section) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
441 case 0:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
442 return tr("Website");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
443 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
444 return tr("Name");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
445 case 2:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
446 return tr("Path");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
447 case 3:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
448 return tr("Secure");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
449 case 4:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
450 return tr("Expires");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
451 case 5:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
452 return tr("Contents");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
453 default:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
454 return QVariant();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
455 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
456 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
457 return QAbstractTableModel.headerData(section, orientation, role);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
458 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
459
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
460 QVariant data(QModelIndex index, int role = Qt.DisplayRole)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
461 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
462 QList<QNetworkCookie> lst;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
463
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
464 if (m_cookieJar)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
465 lst = m_cookieJar.allCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
466
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
467 if (index.row() < 0 || index.row() >= lst.size())
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
468 return QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
469
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
470 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
471 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
472 case Qt.EditRole: {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
473 QNetworkCookie cookie = lst.at(index.row());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
474 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
475 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
476 return cookie.domain();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
477 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
478 return cookie.name();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
479 case 2:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
480 return cookie.path();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
481 case 3:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
482 return cookie.isSecure();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
483 case 4:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
484 return cookie.expirationDate();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
485 case 5:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
486 return cookie.value();
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
489 case Qt.FontRole:{
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
490 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
491 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
492 return font;
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
495
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
496 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
497 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
498
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
499 int columnCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
500 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
501 return (parent.isValid()) ? 0 : 6;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
502 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
503
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
504
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
505 int rowCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
506 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
507 return (parent.isValid() || !m_cookieJar) ? 0 : m_cookieJar.allCookies().count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
508 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
509
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
510
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
511 bool removeRows(int row, int count, QModelIndex parent = QModelIndex())
45
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 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
514 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
515 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
516 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
517 QList<QNetworkCookie> lst = m_cookieJar.allCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
518 for (int i = lastRow; i >= row; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
519 lst.removeAt(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
520 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
521 m_cookieJar.setAllCookies(lst);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
522 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
523 return true;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
526 private slots:
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 void cookiesChanged()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
529 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
530 reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
531 }
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 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
534 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
535 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
536
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
537
b5d10b2218da more porting
mandel
parents: 45
diff changeset
538 import ui_cookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
539 import ui_cookiesexceptions;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
540
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
541
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
542 class CookiesDialog : public QDialog, public Ui_CookiesDialog
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
543 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
544 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
545
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
546 this(CookieJar cookieJar, QWidget parent = this) : QDialog(parent)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
547 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
548 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
549 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
550 CookieModel model = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
551 m_proxyModel = new QSortFilterProxyModel(this);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
552 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
553 removeButton.clicked.connect(&cookiesTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
554 removeAllButton.clicked.connect(&cookiesTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
555 m_proxyModel.setSourceModel(model);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
556 cookiesTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
557 cookiesTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
558 cookiesTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
559 cookiesTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
560 cookiesTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
561 cookiesTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
562 cookiesTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
563 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
564 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
565 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
566 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
567 cookiesTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
568 cookiesTable.verticalHeader().setMinimumSectionSize(-1);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
569 for (int i = 0; i < model.columnCount(); ++i){
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
570 int header = cookiesTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
571 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
572 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
573 header = fm.width(QLatin1String("averagehost.domain.com"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
574 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
575 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
576 header = fm.width(QLatin1String("_session_id"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
577 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
578 case 4:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
579 header = fm.width(QDateTime.currentDateTime().toString(Qt.LocalDate));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
580 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
581 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
582 int buffer = fm.width(QLatin1String("xx"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
583 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
584 cookiesTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
585 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
586 cookiesTable.horizontalHeader().setStretchLastSection(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
587 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
588
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
589 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
590
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
591 QSortFilterProxyModel m_proxyModel;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
592 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
593
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
594 class CookieExceptionsModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
595 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
596 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
597
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
598 this(CookieJar cookieJar, QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
599 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
600 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
601 m_cookieJar = cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
602 m_allowedCookies = m_cookieJar.allowedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
603 m_blockedCookies = m_cookieJar.blockedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
604 m_sessionCookies = m_cookieJar.allowForSessionCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
605 }
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 QVariant headerData(int section, Qt.Orientation orientation, int role)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
608 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
609 if (role == Qt.SizeHintRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
610 QFont font;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
611 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
612 QFontMetrics fm(font);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
613 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
614 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
615 return QSize(width, height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
616 }
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 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
619 switch (section) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
620 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
621 return tr("Website");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
622 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
623 return tr("Status");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
624 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
625 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
626 return QAbstractTableModel.headerData(section, orientation, role);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
627 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
628
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
629 QVariant data(QModelIndex index, int role = Qt.DisplayRole)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
630 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
631 if (index.row() < 0 || index.row() >= rowCount())
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
632 return QVariant();
45
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 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
635 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
636 case Qt.EditRole: {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
637 int row = index.row();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
638 if (row < m_allowedCookies.count()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
639 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
640 case 0:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
641 return m_allowedCookies.at(row);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
642 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
643 return tr("Allow");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
644 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
645 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
646 row = row - m_allowedCookies.count();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
647 if (row < m_blockedCookies.count()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
648 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
649 case 0:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
650 return m_blockedCookies.at(row);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
651 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
652 return tr("Block");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
653 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
654 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
655 row = row - m_blockedCookies.count();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
656 if (row < m_sessionCookies.count()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
657 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
658 case 0:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
659 return m_sessionCookies.at(row);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
660 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
661 return tr("Allow For Session");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
662 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
663 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
664 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
665 case Qt.FontRole:{
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
666 QFont font;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
667 font.setPointSize(10);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
668 return font;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
669 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
670 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
671 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
672 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
673
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
674 int columnCount(QModelIndex parent = QModelIndex());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
675 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
676 return (parent.isValid()) ? 0 : 2;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
677 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
678
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
679 int rowCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
680 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
681 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
682 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
683
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
684 bool removeRows(int row, int count, QModelIndex parent)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
685 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
686 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
687 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
688
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
689 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
690 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
691 for (int i = lastRow; i >= row; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
692 if (i < m_allowedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
693 m_allowedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
694 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
695 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
696 i = i - m_allowedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
697 if (i < m_blockedCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
698 m_blockedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
699 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
700 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
701 i = i - m_blockedCookies.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
702 if (i < m_sessionCookies.count()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
703 m_sessionCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
704 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
705 }
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 m_cookieJar.setAllowedCookies(m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
709 m_cookieJar.setBlockedCookies(m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
710 m_cookieJar.setAllowForSessionCookies(m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
711 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
712 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
713 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
714
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
715 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
716
b5d10b2218da more porting
mandel
parents: 45
diff changeset
717 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
718
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
719 // Domains we allow, Domains we block, Domains we allow for this session
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
720 QStringList m_allowedCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
721 QStringList m_blockedCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
722 QStringList m_sessionCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
723 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
724
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
725
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
726 class CookiesExceptionsDialog : public QDialog, public Ui_CookiesExceptionsDialog
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
727 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
728
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
729 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
730
b5d10b2218da more porting
mandel
parents: 45
diff changeset
731 this(CookieJar cookieJar, QWidget parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
732 : QDialog(parent)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
733 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
734 m_cookieJar = cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
735 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
736 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
737 removeButton.clicked.connect(&exceptionTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
738 removeAllButton.clicked.connect(&exceptionTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
739 exceptionTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
740 exceptionTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
741 exceptionTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
742 exceptionTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
743 exceptionTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
744 exceptionTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
745 m_exceptionsModel = new CookieExceptionsModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746 m_proxyModel = new QSortFilterProxyModel(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
747 m_proxyModel.setSourceModel(m_exceptionsModel);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
748 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
749 exceptionTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
750
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
751 CookieModel cookieModel = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
752 domainLineEdit.setCompleter(new QCompleter(cookieModel, domainLineEdit));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
753
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
754 domainLineEdit.textChanged.connect(&this.textChanged);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
755 blockButton.clicked.connect(&this.block);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
756 allowButton.clicked.connect(&this.allow);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
757 allowForSessionButton.clicked.connect(&this.allowForSession);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
758
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
759 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
760 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
761 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
762 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
763 exceptionTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
764 exceptionTable.verticalHeader().setMinimumSectionSize(-1);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
765 for (int i = 0; i < m_exceptionsModel.columnCount(); ++i) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
766 int header = exceptionTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
767 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
768 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
769 header = fm.width(QLatin1String("averagebiglonghost.domain.com"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
770 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
771 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
772 header = fm.width(QLatin1String("Allow For Session"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
773 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
774 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
775 int buffer = fm.width(QLatin1String("xx"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
776 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
777 exceptionTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
778 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
779 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
780
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
781 private:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
782
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
783 void block()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
784 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
785 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
786 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
787 m_exceptionsModel.m_blockedCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
788 m_cookieJar.setBlockedCookies(m_exceptionsModel.m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
789 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
790 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
791
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
792 void allow()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
793 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
794 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
795 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
796 m_exceptionsModel.m_allowedCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
797 m_cookieJar.setAllowedCookies(m_exceptionsModel.m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
798 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
799 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
800 void allowForSession()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
801 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
802 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
803 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
804 m_exceptionsModel.m_sessionCookies.append(domainLineEdit.text());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
805 m_cookieJar.setAllowForSessionCookies(m_exceptionsModel.m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
806 m_exceptionsModel.reset();
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
809 void textChanged(QString text)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
810 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
811 bool enabled = !text.isEmpty();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
812 blockButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
813 allowButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
814 allowForSessionButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
815 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
816
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
817 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
818
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
819 CookieExceptionsModel m_exceptionsModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
820 QSortFilterProxyModel m_proxyModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
821 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
822 }