annotate demos/browser/cookiejar.d @ 80:85c59c4e5f19

remove QLatin1String and other fixes
author mandel
date Sun, 24 May 2009 15:25:41 +0000
parents 0654fc9bac95
children 5c8c9c5d9ee1
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.QDateTime;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
48 import qt.core.QDir;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
49 import qt.core.QFile;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
50 import qt.core.QMetaEnum;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
51 import qt.core.QSettings;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
52 import qt.core.QUrl;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
53
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
54 import qt.gui.QDialog;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
55 import qt.gui.QTableView;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
56 import qt.gui.QCompleter;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
57 import qt.gui.QDesktopServices;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
58 import qt.gui.QFont;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
59 import qt.gui.QFontMetrics;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
60 import qt.gui.QHeaderView;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
61 import qt.gui.QKeyEvent;
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
62 import qt.gui.QSortFilterProxyModel;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
63
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
64 import QtWebKit.QWebSettings;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
65
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
66 import cookiejar;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
67 import autosaver;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
68
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
69
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
70 static const uint JAR_VERSION = 23;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
71
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
72 QDataStream opShl(QDataStream stream, QNetworkCookie[] list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
73 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
74 stream << JAR_VERSION;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
75 stream << cast(uint) list.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
76 for (int i = 0; i < list.length; ++i)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
77 stream << list[i].toRawForm();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
78 return stream;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
79 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
80
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
81 QDataStream opShr(QDataStream stream, ref QNetworkCookie[] list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
82 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
83 list.clear();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
84
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
85 uint version_;
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
86 stream >> version_;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
87
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
88 if (version_ != JAR_VERSION)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
89 return stream;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
90
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
91 uint count;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
92 stream >> count;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
93 for(uint i = 0; i < count; ++i)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
94 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
95 QByteArray value;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
96 stream >> value;
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
97 QNetworkCookie[] newCookies = QNetworkCookie.parseCookies(value);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
98 if (newCookies.length == 0 && value.length() != 0) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
99 qWarning() << "CookieJar: Unable to parse saved cookie:" << value;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
100 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
101
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
102 for (int j = 0; j < newCookies.length; ++j)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
103 list ~= newCookies[j];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
104
b5d10b2218da more porting
mandel
parents: 45
diff changeset
105 if (stream.atEnd())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
106 break;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
107 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
108 return stream;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
109 }
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 class CookieJar : public QNetworkCookieJar
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
112 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
113 mixin Signal!("cookiesChanged");
45
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 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
116
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
117 enum AcceptPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
118 AcceptAlways,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
119 AcceptNever,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
120 AcceptOnlyFromSitesNavigatedTo
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
121 }
45
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 enum KeepPolicy {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
124 KeepUntilExpire,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
125 KeepUntilExit,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
126 KeepUntilTimeLimit
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
127 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
128
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
129 this(QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
130 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
131 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
132 m_loaded = false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
133 m_saveTimer = new AutoSaver(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
134 m_acceptCookies = AcceptOnlyFromSitesNavigatedTo;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
135 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
136
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
137 ~this()
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 if (m_keepCookies == KeepUntilExit)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
140 clear();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
141 m_saveTimer.saveIfNeccessary();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
142 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
143
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
144 QNetworkCookie[] cookiesForUrl(QUrl url)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
145 {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
146 CookieJar that = cast(CookieJar) this;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
147 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
148 that.load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
149
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
150 QWebSettings globalSettings = QWebSettings.globalSettings();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
151 if (globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled)) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
152 QNetworkCookie[] noCookies;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
153 return noCookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
154 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
155
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
156 return QNetworkCookieJar.cookiesForUrl(url);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
157 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
158
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
159 bool setCookiesFromUrl(QNetworkCookie[] cookieList, QUrl url)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
160 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
161 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
162 load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
163
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
164 QWebSettings globalSettings = QWebSettings.globalSettings();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
165 if (globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled))
b5d10b2218da more porting
mandel
parents: 45
diff changeset
166 return false;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
167
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
168 string host = url.host();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
169 bool eBlock = qBinaryFind(m_exceptions_block.begin(), m_exceptions_block.end(), host) != m_exceptions_block.end();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
170 bool eAllow = qBinaryFind(m_exceptions_allow.begin(), m_exceptions_allow.end(), host) != m_exceptions_allow.end();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
171 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
172
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
173 bool addedCookies = false;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
174 // pass exceptions
b5d10b2218da more porting
mandel
parents: 45
diff changeset
175 bool acceptInitially = (m_acceptCookies != AcceptNever);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
176 if ((acceptInitially && !eBlock) || (!acceptInitially && (eAllow || eAllowSession))) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
177 // pass url domain == cookie domain
b5d10b2218da more porting
mandel
parents: 45
diff changeset
178 QDateTime soon = QDateTime.currentDateTime();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
179 soon = soon.addDays(90);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
180 foreach(QNetworkCookie cookie; cookieList) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
181 QNetworkCookie[] lst;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
182 if (m_keepCookies == KeepUntilTimeLimit && !cookie.isSessionCookie() && cookie.expirationDate() > soon) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
183 cookie.setExpirationDate(soon);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
184 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
185 lst += cookie;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
186 if (QNetworkCookieJar.setCookiesFromUrl(lst, url)) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
187 addedCookies = true;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
188 } else {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
189 // finally force it in if wanted
b5d10b2218da more porting
mandel
parents: 45
diff changeset
190 if (m_acceptCookies == AcceptAlways) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
191 QNetworkCookie[] cookies = allCookies();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
192 cookies += cookie;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
193 setAllCookies(cookies);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
194 addedCookies = true;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
195 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
196 /*
b5d10b2218da more porting
mandel
parents: 45
diff changeset
197 else
b5d10b2218da more porting
mandel
parents: 45
diff changeset
198 qWarning() << "setCookiesFromUrl failed" << url << cookieList.value(0).toRawForm();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
199 */
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 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
203
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
204 if (addedCookies) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
205 m_saveTimer.changeOccurred();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
206 cookiesChanged.emit();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
207 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
208 return addedCookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
209 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
210
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
211 AcceptPolicy acceptPolicy()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
212 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
213 if (!m_loaded)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
214 (cast(CookieJar) this).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
215 return m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
216 }
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 void setAcceptPolicy(AcceptPolicy policy)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
219 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
220 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
221 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
222 if (policy == m_acceptCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
223 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
224 m_acceptCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
225 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
226 }
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 KeepPolicy keepPolicy()
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 if (!m_loaded)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
231 (cast(CookieJar) this).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
232 return m_keepCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
233 }
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 void setKeepPolicy(KeepPolicy policy)
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 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
238 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239 if (policy == m_keepCookies)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
240 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
241 m_keepCookies = policy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
242 m_saveTimer.changeOccurred();
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
246 string[] blockedCookies()
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
247 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
248 if (!m_loaded)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
249 (cast(CookieJar) this).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
250 return m_exceptions_block;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
251 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
252
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
253 string[] allowedCookies()
45
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 if (!m_loaded)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
256 (cast(CookieJar) this).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
257 return m_exceptions_allow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
258 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
259
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
260 string[] allowForSessionCookies()
45
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 if (!m_loaded)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
263 (cast(CookieJar) this).load();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
264 return m_exceptions_allowForSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
265 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
267 void setBlockedCookies(string[] list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
268 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
269 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
270 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
271 m_exceptions_block = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
272 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
273 m_saveTimer.changeOccurred();
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
276 void setAllowedCookies(string[] list)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
277 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
278 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
279 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
280 m_exceptions_allow = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
281 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
282 m_saveTimer.changeOccurred();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
283 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
284
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
285 void setAllowForSessionCookies(string[] list)
45
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 if (!m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
288 load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
289 m_exceptions_allowForSession = list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
290 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
291 m_saveTimer.changeOccurred();
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
73
7bfd46c330dc more porting
mandel
parents: 67
diff changeset
294 public:
45
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 void clear()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
297 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
298 setAllCookies(QNetworkCookie[]());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
299 m_saveTimer.changeOccurred();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
300 cookiesChanged.emit();
45
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 loadSettings()
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 QSettings settings;
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
306 settings.beginGroup("cookies");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
307 QByteArray value = settings.value("acceptCookies",
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
308 "AcceptOnlyFromSitesNavigatedTo").toByteArray();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
309 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
310 m_acceptCookies = acceptPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
311 AcceptOnlyFromSitesNavigatedTo :
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
312 cast(AcceptPolicy) acceptPolicyEnum.keyToValue(value);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
313
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
314 value = settings.value("keepCookiesUntil", "KeepUntilExpire").toByteArray();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
315 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
316 m_keepCookies = keepPolicyEnum.keyToValue(value) == -1 ?
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
317 KeepUntilExpire :
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
318 cast(KeepPolicy) keepPolicyEnum.keyToValue(value);
45
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 if (m_keepCookies == KeepUntilExit)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
321 setAllCookies(null);
45
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 m_loaded = true;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
324 cookiesChanged.emit();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
325 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
326
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
327 private:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
328
67
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();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
334 string directory = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
335 if (directory.isEmpty())
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
336 directory = QDir.homePath() ~ "/." ~ QCoreApplication.applicationName();
67
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 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
341 auto cookieSettings = new QSettings(directory ~ "/cookies.ini", QSettings.IniFormat);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
342 QNetworkCookie[] cookies = allCookies();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
343 for (int i = cookies.count() - 1; i >= 0; --i) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
344 if (cookies[i].isSessionCookie())
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
345 cookies.removeAt(i);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
346 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
347 cookieSettings.setValue("cookies", qVariantFromValue<QNetworkCookie[] >(cookies));
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
348 cookieSettings.beginGroup("Exceptions");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
349 cookieSettings.setValue("block", m_exceptions_block);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
350 cookieSettings.setValue("allow", m_exceptions_allow);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
351 cookieSettings.setValue("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;
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
355 settings.beginGroup("cookies");
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
356 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
357 settings.setValue("acceptCookies", 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"));
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
360 settings.setValue("keepCookiesUntil", keepPolicyEnum.valueToKey(m_keepCookies));
67
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 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
367 QNetworkCookie[] cookies = allCookies();
67
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();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
372 for (int i = cookies.length - 1; i >= 0; --i) {
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
373 if (!cookies[i].isSessionCookie() && cookies[i].expirationDate() < now)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
374 cookies.removeAt(i);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
375 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
376 if (oldCount == cookies.length)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
377 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
378 setAllCookies(cookies);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
379 cookiesChanged.emit();
67
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
387 qRegisterMetaTypeStreamOperators!(QNetworkCookie[])("QNetworkCookie[]");
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
388 auto cookieSettings = new QSettings(QDesktopServices.storageLocation(QDesktopServices.DataLocation) ~ "/cookies.ini", QSettings.IniFormat);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
389 setAllCookies(cast(QNetworkCookie[]) (cookieSettings.value("cookies")));
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
390 cookieSettings.beginGroup("Exceptions");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
391 m_exceptions_block = cookieSettings.value("block").toStringList();
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
392 m_exceptions_allow = cookieSettings.value("allow").toStringList();
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
393 m_exceptions_allowForSession = cookieSettings.value("allowForSession").toStringList();
45
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
407 string[] m_exceptions_block;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
408 string[] m_exceptions_allow;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
409 string[] m_exceptions_allowForSession;
45
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) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
428 auto font = new QFont;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
429 font.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
430 auto fm = new QFontMetrics(font);
67
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:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
454 return new QVariant();
67
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 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
462 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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
467 if (index.row() < 0 || index.row() >= lst.length)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
468 return new 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: {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
473 QNetworkCookie cookie = lst[index.row];
45
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:{
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
490 auto font = new QFont;
45
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
510 bool removeRows(int row, int count, QModelIndex parent = QModelIndex())
45
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 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
513 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
514 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
515 beginRemoveRows(parent, row, lastRow);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
516 QNetworkCookie[] lst = m_cookieJar.allCookies();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
517 for (int i = lastRow; i >= row; --i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
518 lst.removeAt(i);
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 m_cookieJar.setAllCookies(lst);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
521 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
522 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
523 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
524
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
525 private:
45
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 void cookiesChanged()
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 reset();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
532 private:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
533
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
546 this(CookieJar cookieJar, QWidget parent = this)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
547 //: QDialog(parent)
45
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 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
550 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
551 CookieModel model = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
552 m_proxyModel = new QSortFilterProxyModel(this);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
553 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
554 removeButton.clicked.connect(&cookiesTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
555 removeAllButton.clicked.connect(&cookiesTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
556 m_proxyModel.setSourceModel(model);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
557 cookiesTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
558 cookiesTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
559 cookiesTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
560 cookiesTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
561 cookiesTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
562 cookiesTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
563 cookiesTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
564 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
565 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
566 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
567 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
568 cookiesTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
569 cookiesTable.verticalHeader().setMinimumSectionSize(-1);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
570 for (int i = 0; i < model.columnCount(); ++i){
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
571 int header = cookiesTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
572 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
573 case 0:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
574 header = fm.width("averagehost.domain.com");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
575 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
576 case 1:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
577 header = fm.width("_session_id");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
578 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
579 case 4:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
580 header = fm.width(QDateTime.currentDateTime().toString(Qt.LocalDate));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
581 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
582 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
583 int buffer = fm.width("xx");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
584 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
585 cookiesTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
586 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
587 cookiesTable.horizontalHeader().setStretchLastSection(true);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
590 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
591
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
592 QSortFilterProxyModel m_proxyModel;
45
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
595 class CookieExceptionsModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
596 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
597 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
598
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
599 this(CookieJar cookieJar, QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
600 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
601 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
602 m_cookieJar = cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
603 m_allowedCookies = m_cookieJar.allowedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
604 m_blockedCookies = m_cookieJar.blockedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
605 m_sessionCookies = m_cookieJar.allowForSessionCookies();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
608 QVariant headerData(int section, Qt.Orientation orientation, int role)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
609 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
610 if (role == Qt.SizeHintRole) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
611 auto font = new QFont;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
612 font.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
613 auto fm =new QFontMetrics(font);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
614 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
615 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
616 return QSize(width, height);
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 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
620 switch (section) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
621 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
622 return tr("Website");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
623 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
624 return tr("Status");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
625 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
626 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
627 return QAbstractTableModel.headerData(section, orientation, role);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
628 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
629
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
630 QVariant data(QModelIndex index, int role = Qt.DisplayRole)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
631 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
632 if (index.row() < 0 || index.row() >= rowCount())
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
633 return QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
634
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
635 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
636 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
637 case Qt.EditRole: {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
638 int row = index.row();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
639 if (row < m_allowedCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
640 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
641 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
642 return m_allowedCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
643 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
644 return tr("Allow");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
645 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
646 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
647 row = row - m_allowedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
648 if (row < m_blockedCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
649 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
650 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
651 return m_blockedCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
652 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
653 return tr("Block");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
654 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
655 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
656 row = row - m_blockedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
657 if (row < m_sessionCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
658 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
659 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
660 return m_sessionCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
661 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
662 return tr("Allow For Session");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
663 }
45
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
666 case Qt.FontRole:{
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
667 auto font = new QFont;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
668 font.setPointSize(10);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
669 return font;
45
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
672 return QVariant();
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
675 int columnCount(QModelIndex parent = QModelIndex());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
676 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
677 return (parent.isValid()) ? 0 : 2;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
678 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
679
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
680 int rowCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
681 {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
682 return (parent.isValid() || !m_cookieJar) ? 0 : m_allowedCookies.length + m_blockedCookies.length + m_sessionCookies.length;
45
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
685 bool removeRows(int row, int count, QModelIndex parent)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
686 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
687 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
688 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
689
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
690 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
691 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
692 for (int i = lastRow; i >= row; --i) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
693 if (i < m_allowedCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
694 m_allowedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
695 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
696 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
697 i = i - m_allowedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
698 if (i < m_blockedCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
699 m_blockedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
700 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
701 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
702 i = i - m_blockedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
703 if (i < m_sessionCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
704 m_sessionCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
705 continue;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
709 m_cookieJar.setAllowedCookies(m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
710 m_cookieJar.setBlockedCookies(m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
711 m_cookieJar.setAllowForSessionCookies(m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
712 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
713 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
714 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
715
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
716 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
717
b5d10b2218da more porting
mandel
parents: 45
diff changeset
718 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
719
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
720 // Domains we allow, Domains we block, Domains we allow for this session
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
721 string[] m_allowedCookies;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
722 string[] m_blockedCookies;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
723 string[] m_sessionCookies;
45
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
726
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
727 class CookiesExceptionsDialog : public QDialog, public Ui_CookiesExceptionsDialog
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
730 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
731
b5d10b2218da more porting
mandel
parents: 45
diff changeset
732 this(CookieJar cookieJar, QWidget parent = null)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
733 //: QDialog(parent)
45
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 m_cookieJar = cookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
736 setupUi(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
737 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
738 removeButton.clicked.connect(&exceptionTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
739 removeAllButton.clicked.connect(&exceptionTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
740 exceptionTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
741 exceptionTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
742 exceptionTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
743 exceptionTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
744 exceptionTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
745 exceptionTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746 m_exceptionsModel = new CookieExceptionsModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
747 m_proxyModel = new QSortFilterProxyModel(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
748 m_proxyModel.setSourceModel(m_exceptionsModel);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
749 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
750 exceptionTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
751
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
752 CookieModel cookieModel = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
753 domainLineEdit.setCompleter(new QCompleter(cookieModel, domainLineEdit));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
754
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
755 domainLineEdit.textChanged.connect(&this.textChanged);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
756 blockButton.clicked.connect(&this.block);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
757 allowButton.clicked.connect(&this.allow);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
758 allowForSessionButton.clicked.connect(&this.allowForSession);
45
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 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
761 f.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
762 auto fm = new QFontMetrics(f);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
763 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
764 exceptionTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
765 exceptionTable.verticalHeader().setMinimumSectionSize(-1);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
766 for (int i = 0; i < m_exceptionsModel.columnCount(); ++i) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
767 int header = exceptionTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
768 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
769 case 0:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
770 header = fm.width("averagebiglonghost.domain.com");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
771 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
772 case 1:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
773 header = fm.width("Allow For Session");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
774 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
775 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
776 int buffer = fm.width("xx");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
777 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
778 exceptionTable.horizontalHeader().resizeSection(i, header);
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
781
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
782 private:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
783
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
784 void block()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
785 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
786 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
787 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
788 m_exceptionsModel.m_blockedCookies ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
789 m_cookieJar.setBlockedCookies(m_exceptionsModel.m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
790 m_exceptionsModel.reset();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
793 void allow()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
794 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
795 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
796 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
797 m_exceptionsModel.m_allowedCookies ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
798 m_cookieJar.setAllowedCookies(m_exceptionsModel.m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
799 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
800 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
801 void allowForSession()
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 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
804 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
805 m_exceptionsModel.m_sessionCookie ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
806 m_cookieJar.setAllowForSessionCookies(m_exceptionsModel.m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
807 m_exceptionsModel.reset();
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
810 void textChanged(string text)
45
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 bool enabled = !text.isEmpty();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
813 blockButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
814 allowButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
815 allowForSessionButton.setEnabled(enabled);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
818 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
819
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
820 CookieExceptionsModel m_exceptionsModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
821 QSortFilterProxyModel m_proxyModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
822 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
823 }