annotate demos/browser/cookiejar.d @ 100:dcd36d8db2da

more porting
author mandel
date Fri, 29 May 2009 11:36:51 +0000
parents 87bb4e622f9e
children 8636c819ce4d
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;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
44 //import qt.core.QDebug;
73
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;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
50 //import qt.core.QMetaEnum;
73
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;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
63 import qt.gui.QAbstractTableModel;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
65 import qt.webkit.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
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
71 static const uint JAR_VERSION = 23;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
72
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
73 QDataStream opShl(QDataStream stream, 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;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
76 stream << cast(uint) list.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
77 for (int i = 0; i < list.length; ++i)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
78 stream << list[i].toRawForm();
67
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
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
82 QDataStream opShr(QDataStream stream, ref 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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
86 uint version_;
73
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
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
89 if (version_ != JAR_VERSION)
67
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
92 uint count;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
93 stream >> count;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
94 for(uint i = 0; i < count; ++i)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
95 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
96 auto value = new QByteArray;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
97 stream >> value;
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
98 QNetworkCookie[] newCookies = QNetworkCookie.parseCookies(value);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
99 if (newCookies.length == 0 && value.length() != 0) {
100
dcd36d8db2da more porting
mandel
parents: 94
diff changeset
100 qWarning("CookieJar: Unable to parse saved cookie:" ~ cast(string) value.data());
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
101 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
102
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
103 for (int j = 0; j < newCookies.length; ++j)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
104 list ~= newCookies[j];
67
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
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
145 QNetworkCookie[] cookiesForUrl(QUrl url)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
146 {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
147 CookieJar that = cast(CookieJar) this;
67
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)) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
153 QNetworkCookie[] noCookies;
67
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
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
160 bool setCookiesFromUrl(QNetworkCookie[] cookieList, QUrl url)
67
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
169 string host = url.host();
67
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);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
181 foreach(QNetworkCookie cookie; cookieList) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
182 QNetworkCookie[] lst;
67
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) {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
192 QNetworkCookie[] cookies = allCookies();
67
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();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
207 cookiesChanged.emit();
67
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)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
215 (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)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
232 (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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
247 string[] blockedCookies()
45
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)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
250 (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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
254 string[] allowedCookies()
45
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)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
257 (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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
261 string[] allowForSessionCookies()
45
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)
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
264 (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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
268 void setBlockedCookies(string[] 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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
277 void setAllowedCookies(string[] 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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
286 void setAllowForSessionCookies(string[] 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 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
299 setAllCookies(QNetworkCookie[]());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
300 m_saveTimer.changeOccurred();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
301 cookiesChanged.emit();
45
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;
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
307 settings.beginGroup("cookies");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
308 QByteArray value = settings.value("acceptCookies",
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
309 "AcceptOnlyFromSitesNavigatedTo").toByteArray();
45
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 :
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
313 cast(AcceptPolicy) acceptPolicyEnum.keyToValue(value);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
314
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
315 value = settings.value("keepCookiesUntil", "KeepUntilExpire").toByteArray();
45
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 :
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
319 cast(KeepPolicy) keepPolicyEnum.keyToValue(value);
45
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)
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
322 setAllCookies(null);
45
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;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
325 cookiesChanged.emit();
45
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:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
329
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
330 void save()
b5d10b2218da more porting
mandel
parents: 45
diff changeset
331 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
332 if (!m_loaded)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
333 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
334 purgeOldCookies();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
335 string directory = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
336 if (directory.isEmpty())
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
337 directory = QDir.homePath() ~ "/." ~ QCoreApplication.applicationName();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
338 if (!QFile.exists(directory)) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
339 QDir dir;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
340 dir.mkpath(directory);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
341 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
342 auto cookieSettings = new QSettings(directory ~ "/cookies.ini", QSettings.IniFormat);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
343 QNetworkCookie[] cookies = allCookies();
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
344 for (int i = cookies.length - 1; i >= 0; --i) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
345 if (cookies[i].isSessionCookie())
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
346 cookies.removeAt(i);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
347 }
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
348 //cookieSettings.setValue("cookies", qVariantFromValue<QNetworkCookie[] >(cookies)); //TODO!
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
349 cookieSettings.beginGroup("Exceptions");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
350 cookieSettings.setValue("block", m_exceptions_block);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
351 cookieSettings.setValue("allow", m_exceptions_allow);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
352 cookieSettings.setValue("allowForSession", m_exceptions_allowForSession);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
353
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
354 // save cookie settings
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
355 auto settings = new QSettings;
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
356 settings.beginGroup("cookies");
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
357 QMetaEnum acceptPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("AcceptPolicy"));
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
358 settings.setValue("acceptCookies", acceptPolicyEnum.valueToKey(m_acceptCookies));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
359
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
360 QMetaEnum keepPolicyEnum = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("KeepPolicy"));
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
361 settings.setValue("keepCookiesUntil", keepPolicyEnum.valueToKey(m_keepCookies));
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
362 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
363
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
364 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
365
b5d10b2218da more porting
mandel
parents: 45
diff changeset
366 void purgeOldCookies()
b5d10b2218da more porting
mandel
parents: 45
diff changeset
367 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
368 QNetworkCookie[] cookies = allCookies();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
369 if (cookies.isEmpty())
b5d10b2218da more porting
mandel
parents: 45
diff changeset
370 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
371 int oldCount = cookies.count();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
372 QDateTime now = QDateTime.currentDateTime();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
373 for (int i = cookies.length - 1; i >= 0; --i) {
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
374 if (!cookies[i].isSessionCookie() && cookies[i].expirationDate() < now)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
375 cookies.removeAt(i);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
376 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
377 if (oldCount == cookies.length)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
378 return;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
379 setAllCookies(cookies);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
380 cookiesChanged.emit();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
381 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
382
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
383 void load()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
384 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
385 if (m_loaded)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
386 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
387 // load cookies and exceptions
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
388 qRegisterMetaTypeStreamOperators!(QNetworkCookie[])("QNetworkCookie[]");
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
389 auto cookieSettings = new QSettings(QDesktopServices.storageLocation(QDesktopServices.DataLocation) ~ "/cookies.ini", QSettings.IniFormat);
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
390 setAllCookies(cast(QNetworkCookie[]) (cookieSettings.value("cookies")));
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
391 cookieSettings.beginGroup("Exceptions");
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
392 m_exceptions_block = cookieSettings.value("block").toStringList();
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
393 m_exceptions_allow = cookieSettings.value("allow").toStringList();
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
394 m_exceptions_allowForSession = cookieSettings.value("allowForSession").toStringList();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
395 qSort(m_exceptions_block.begin(), m_exceptions_block.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
396 qSort(m_exceptions_allow.begin(), m_exceptions_allow.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
397 qSort(m_exceptions_allowForSession.begin(), m_exceptions_allowForSession.end());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
398
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
399 loadSettings();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
402 bool m_loaded;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
403 AutoSaver m_saveTimer;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
404
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
405 AcceptPolicy m_acceptCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
406 KeepPolicy m_keepCookies;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
407
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
408 string[] m_exceptions_block;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
409 string[] m_exceptions_allow;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
410 string[] m_exceptions_allowForSession;
45
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
413 class CookieModel : public QAbstractTableModel
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
416 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
417
b5d10b2218da more porting
mandel
parents: 45
diff changeset
418 this(CookieJar jar, QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
419 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
420 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
421 m_cookieJar = cookieJar;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
422 m_cookieJar.cookiesChanged.connect(&this.cookiesChanged);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
423 m_cookieJar.load();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
424 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
425
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
426 QVariant headerData(int section, Qt.Orientation orientation, int role)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
427 {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
428 if (role == Qt.SizeHintRole) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
429 auto font = new QFont;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
430 font.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
431 auto fm = new QFontMetrics(font);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
432 int height = fm.height() + fm.height()/3;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
433 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
b5d10b2218da more porting
mandel
parents: 45
diff changeset
434 return QSize(width, height);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
435 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
436
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
437 if (orientation == Qt.Horizontal) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
438 if (role != Qt.DisplayRole)
b5d10b2218da more porting
mandel
parents: 45
diff changeset
439 return QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
440
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
441 switch (section) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
442 case 0:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
443 return tr("Website");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
444 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
445 return tr("Name");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
446 case 2:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
447 return tr("Path");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
448 case 3:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
449 return tr("Secure");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
450 case 4:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
451 return tr("Expires");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
452 case 5:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
453 return tr("Contents");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
454 default:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
455 return new QVariant();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
456 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
457 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
458 return QAbstractTableModel.headerData(section, orientation, role);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
459 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
460
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
461 QVariant data(QModelIndex index, int role = Qt.DisplayRole)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
462 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
463 QNetworkCookie[] lst;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
464
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
465 if (m_cookieJar)
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
466 lst = m_cookieJar.allCookies();
b5d10b2218da more porting
mandel
parents: 45
diff changeset
467
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
468 if (index.row() < 0 || index.row() >= lst.length)
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
469 return new QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
470
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
471 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
472 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
473 case Qt.EditRole: {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
474 QNetworkCookie cookie = lst[index.row];
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
475 switch (index.column()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
476 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
477 return cookie.domain();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
478 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
479 return cookie.name();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
480 case 2:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
481 return cookie.path();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
482 case 3:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
483 return cookie.isSecure();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
484 case 4:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
485 return cookie.expirationDate();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
486 case 5:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
487 return cookie.value();
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
490 case Qt.FontRole:{
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
491 auto font = new QFont;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
492 font.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
493 return font;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
497 return QVariant();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
498 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
499
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
500 int columnCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
501 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
502 return (parent.isValid()) ? 0 : 6;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
505
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
506 int rowCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
507 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
508 return (parent.isValid() || !m_cookieJar) ? 0 : m_cookieJar.allCookies().count();
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);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
517 QNetworkCookie[] lst = m_cookieJar.allCookies();
45
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
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
526 private:
45
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:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
534
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
535 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
536 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
537
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
538
b5d10b2218da more porting
mandel
parents: 45
diff changeset
539 import ui_cookies;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
540 import ui_cookiesexceptions;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
541
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
542
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
543 class CookiesDialog : public QDialog //, public Ui_CookiesDialog
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
544 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
545 CookiesDialog ui;
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
546
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
547 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
548
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
549 this(CookieJar cookieJar, QWidget parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
550 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
551 super(parent);
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
552 ui.setupUi(this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
553 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
554 CookieModel model = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
555 m_proxyModel = new QSortFilterProxyModel(this);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
556 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
557 removeButton.clicked.connect(&cookiesTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
558 removeAllButton.clicked.connect(&cookiesTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
559 m_proxyModel.setSourceModel(model);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
560 cookiesTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
561 cookiesTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
562 cookiesTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
563 cookiesTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
564 cookiesTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
565 cookiesTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
566 cookiesTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
567 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
568 f.setPointSize(10);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
569 QFontMetrics fm(f);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
570 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
571 cookiesTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
572 cookiesTable.verticalHeader().setMinimumSectionSize(-1);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
573 for (int i = 0; i < model.columnCount(); ++i){
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
574 int header = cookiesTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
575 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
576 case 0:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
577 header = fm.width("averagehost.domain.com");
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 1:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
580 header = fm.width("_session_id");
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 case 4:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
583 header = fm.width(QDateTime.currentDateTime().toString(Qt.LocalDate));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
584 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
585 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
586 int buffer = fm.width("xx");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
587 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
588 cookiesTable.horizontalHeader().resizeSection(i, header);
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 cookiesTable.horizontalHeader().setStretchLastSection(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
591 }
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 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
594
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
595 QSortFilterProxyModel m_proxyModel;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
596 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
597
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
598 class CookieExceptionsModel : public QAbstractTableModel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
599 {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
600 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
601
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
602 this(CookieJar cookieJar, QObject parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
603 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
604 super(parent);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
605 m_cookieJar = cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
606 m_allowedCookies = m_cookieJar.allowedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
607 m_blockedCookies = m_cookieJar.blockedCookies();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
608 m_sessionCookies = m_cookieJar.allowForSessionCookies();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
611 QVariant headerData(int section, Qt.Orientation orientation, int role)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
612 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
613 if (role == Qt.SizeHintRole) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
614 auto font = new QFont;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
615 font.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
616 auto fm =new QFontMetrics(font);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
617 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
618 int width = fm.width(headerData(section, orientation, Qt.DisplayRole).toString());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
619 return QSize(width, height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
620 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
621
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
622 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
623 switch (section) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
624 case 0:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
625 return tr("Website");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
626 case 1:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
627 return tr("Status");
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 return QAbstractTableModel.headerData(section, orientation, role);
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
633 QVariant data(QModelIndex index, int role = Qt.DisplayRole)
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 if (index.row() < 0 || index.row() >= rowCount())
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
636 return QVariant();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
637
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
638 switch (role) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
639 case Qt.DisplayRole:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
640 case Qt.EditRole: {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
641 int row = index.row();
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
642 if (row < m_allowedCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
643 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
644 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
645 return m_allowedCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
646 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
647 return tr("Allow");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
648 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
649 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
650 row = row - m_allowedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
651 if (row < m_blockedCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
652 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
653 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
654 return m_blockedCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
655 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
656 return tr("Block");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
657 }
b5d10b2218da more porting
mandel
parents: 45
diff changeset
658 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
659 row = row - m_blockedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
660 if (row < m_sessionCookies.length) {
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
661 switch (index.column()) {
b5d10b2218da more porting
mandel
parents: 45
diff changeset
662 case 0:
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
663 return m_sessionCookies[row];
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
664 case 1:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
665 return tr("Allow For Session");
b5d10b2218da more porting
mandel
parents: 45
diff changeset
666 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
667 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
668 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
669 case Qt.FontRole:{
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
670 auto font = new QFont;
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
671 font.setPointSize(10);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
672 return font;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
673 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
674 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
675 return QVariant();
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
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
678 int columnCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
679 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
680 return (parent.isValid()) ? 0 : 2;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
681 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
682
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
683 int rowCount(QModelIndex parent = QModelIndex())
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
684 {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
685 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
686 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
687
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
688 bool removeRows(int row, int count, QModelIndex parent)
45
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 if (parent.isValid() || !m_cookieJar)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
691 return false;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
692
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
693 int lastRow = row + count - 1;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
694 beginRemoveRows(parent, row, lastRow);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
695 for (int i = lastRow; i >= row; --i) {
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
696 if (i < m_allowedCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
697 m_allowedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
698 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
699 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
700 i = i - m_allowedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
701 if (i < m_blockedCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
702 m_blockedCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
703 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
704 }
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
705 i = i - m_blockedCookies.length;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
706 if (i < m_sessionCookies.length) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
707 m_sessionCookies.removeAt(row);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
708 continue;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
709 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
710 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
711
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
712 m_cookieJar.setAllowedCookies(m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
713 m_cookieJar.setBlockedCookies(m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
714 m_cookieJar.setAllowForSessionCookies(m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
715 endRemoveRows();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
716 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
717 }
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
718
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
719 private:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
720
b5d10b2218da more porting
mandel
parents: 45
diff changeset
721 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
722
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
723 // Domains we allow, Domains we block, Domains we allow for this session
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
724 string[] m_allowedCookies;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
725 string[] m_blockedCookies;
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
726 string[] m_sessionCookies;
45
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
729
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
730 class CookiesExceptionsDialog : public QDialog //, public Ui_CookiesExceptionsDialog
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
731 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
732 CookiesExceptionsDialog ui;
45
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 public:
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
735
b5d10b2218da more porting
mandel
parents: 45
diff changeset
736 this(CookieJar cookieJar, QWidget parent = null)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
737 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
738 super(parent);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
739 m_cookieJar = cookieJar;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
740 ui.setupUi(this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
741 setWindowFlags(Qt.Sheet);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
742 removeButton.clicked.connect(&exceptionTable.removeOne);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
743 removeAllButton.clicked.connect(&exceptionTable.removeAll);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
744 exceptionTable.verticalHeader().hide();
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
745 exceptionTable.setSelectionBehavior(QAbstractItemView.SelectRows);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746 exceptionTable.setAlternatingRowColors(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
747 exceptionTable.setTextElideMode(Qt.ElideMiddle);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
748 exceptionTable.setShowGrid(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
749 exceptionTable.setSortingEnabled(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
750 m_exceptionsModel = new CookieExceptionsModel(cookieJar, this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
751 m_proxyModel = new QSortFilterProxyModel(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
752 m_proxyModel.setSourceModel(m_exceptionsModel);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
753 search.textChanged.connect(&m_proxyModel.setFilterFixedString);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
754 exceptionTable.setModel(m_proxyModel);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
755
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
756 CookieModel cookieModel = new CookieModel(cookieJar, this);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
757 domainLineEdit.setCompleter(new QCompleter(cookieModel, domainLineEdit));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
758
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
759 domainLineEdit.textChanged.connect(&this.textChanged);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
760 blockButton.clicked.connect(&this.block);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
761 allowButton.clicked.connect(&this.allow);
b5d10b2218da more porting
mandel
parents: 45
diff changeset
762 allowForSessionButton.clicked.connect(&this.allowForSession);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
763
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
764 QFont f = font();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
765 f.setPointSize(10);
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
766 auto fm = new QFontMetrics(f);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
767 int height = fm.height() + fm.height()/3;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
768 exceptionTable.verticalHeader().setDefaultSectionSize(height);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
769 exceptionTable.verticalHeader().setMinimumSectionSize(-1);
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
770 for (int i = 0; i < m_exceptionsModel.columnCount(); ++i) {
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
771 int header = exceptionTable.horizontalHeader().sectionSizeHint(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
772 switch (i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
773 case 0:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
774 header = fm.width("averagebiglonghost.domain.com");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
775 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
776 case 1:
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
777 header = fm.width("Allow For Session");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
778 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
779 }
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
780 int buffer = fm.width("xx");
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
781 header += buffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
782 exceptionTable.horizontalHeader().resizeSection(i, header);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
783 }
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
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
786 private:
b5d10b2218da more porting
mandel
parents: 45
diff changeset
787
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
788 void block()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
789 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
790 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
791 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
792 m_exceptionsModel.m_blockedCookies ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
793 m_cookieJar.setBlockedCookies(m_exceptionsModel.m_blockedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
794 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
795 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
796
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
797 void allow()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
798 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
799 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
800 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
801 m_exceptionsModel.m_allowedCookies ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
802 m_cookieJar.setAllowedCookies(m_exceptionsModel.m_allowedCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
803 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
804 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
805 void allowForSession()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
806 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
807 if (domainLineEdit.text().isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
808 return;
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
809 m_exceptionsModel.m_sessionCookie ~= domainLineEdit.text();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
810 m_cookieJar.setAllowForSessionCookies(m_exceptionsModel.m_sessionCookies);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
811 m_exceptionsModel.reset();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
812 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
813
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
814 void textChanged(string text)
45
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 bool enabled = !text.isEmpty();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
817 blockButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
818 allowButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
819 allowForSessionButton.setEnabled(enabled);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
820 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
821
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
822 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
823
67
b5d10b2218da more porting
mandel
parents: 45
diff changeset
824 CookieExceptionsModel m_exceptionsModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
825 QSortFilterProxyModel m_proxyModel;
b5d10b2218da more porting
mandel
parents: 45
diff changeset
826 CookieJar m_cookieJar;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
827 }