45
48
#include <kdebug.h>
47
#include "ksaveioconfig.h"
49
51
// QUrl::fromAce/toAce don't accept a domain that starts with a '.', like we do here.
50
52
// So we use these wrappers.
51
QString tolerantFromAce(const QByteArray& _domain)
53
QByteArray domain(_domain);
54
const bool hasDot = domain.startsWith('.');
57
QString ret = QUrl::fromAce(domain);
64
static QByteArray tolerantToAce(const QString& _domain)
66
QString domain(_domain);
67
const bool hasDot = domain.startsWith('.');
70
QByteArray ret = QUrl::toAce(domain);
78
KCookiesPolicies::KCookiesPolicies(const KComponentData &componentData, QWidget *parent)
79
:KCModule(componentData, parent)
81
QVBoxLayout *mainLayout = new QVBoxLayout(this);
82
mainLayout->setMargin(0);
84
dlg = new KCookiesPolicyDlgUI (this);
85
dlg->kListViewSearchLine->setTreeWidget(dlg->lvDomainPolicy);
53
QString tolerantFromAce (const QByteArray& _domain)
55
QByteArray domain (_domain);
56
const bool hasDot = domain.startsWith ('.');
59
QString ret = QUrl::fromAce (domain);
66
static QByteArray tolerantToAce (const QString& _domain)
68
QString domain (_domain);
69
const bool hasDot = domain.startsWith ('.');
72
QByteArray ret = QUrl::toAce (domain);
80
KCookiesPolicies::KCookiesPolicies (const KComponentData& componentData, QWidget* parent)
81
: KCModule (componentData, parent)
84
mUi.kListViewSearchLine->setTreeWidget (mUi.lvDomainPolicy);
86
85
QList<int> columns;
88
dlg->kListViewSearchLine->setSearchColumns(columns);
90
dlg->pbNew->setIcon(KIcon("list-add"));
91
dlg->pbChange->setIcon(KIcon("edit-rename"));
92
dlg->pbDelete->setIcon(KIcon("list-remove"));
93
dlg->pbDeleteAll->setIcon(KIcon("edit-delete"));
95
mainLayout->addWidget(dlg);
87
mUi.kListViewSearchLine->setSearchColumns (columns);
89
mUi.pbNew->setIcon (KIcon ("list-add"));
90
mUi.pbChange->setIcon (KIcon ("edit-rename"));
91
mUi.pbDelete->setIcon (KIcon ("list-remove"));
92
mUi.pbDeleteAll->setIcon (KIcon ("edit-delete"));
97
94
// Connect the main swicth :) Enable/disable cookie support
98
connect( dlg->cbEnableCookies, SIGNAL( toggled(bool) ),
99
SLOT( cookiesEnabled(bool) ) );
100
connect( dlg->cbEnableCookies, SIGNAL( toggled(bool) ),
101
SLOT( configChanged() ) );
95
connect (mUi.cbEnableCookies, SIGNAL (toggled (bool)),
96
SLOT (cookiesEnabled (bool)));
97
connect (mUi.cbEnableCookies, SIGNAL (toggled (bool)),
98
SLOT (configChanged()));
103
100
// Connect the preference check boxes...
104
connect ( dlg->cbRejectCrossDomainCookies, SIGNAL(toggled(bool)),
105
SLOT(configChanged()));
106
connect ( dlg->cbAutoAcceptSessionCookies, SIGNAL(toggled(bool)),
107
SLOT(configChanged()));
108
connect ( dlg->cbIgnoreCookieExpirationDate, SIGNAL(toggled(bool)),
109
SLOT(configChanged()));
111
connect ( dlg->cbAutoAcceptSessionCookies, SIGNAL(toggled(bool)),
112
SLOT(autoAcceptSessionCookies(bool)));
113
connect ( dlg->cbIgnoreCookieExpirationDate, SIGNAL(toggled(bool)),
114
SLOT(ignoreCookieExpirationDate(bool)));
116
connect ( dlg->rbPolicyAsk, SIGNAL(toggled(bool)),
117
SLOT(configChanged()));
118
connect ( dlg->rbPolicyAccept, SIGNAL(toggled(bool)),
119
SLOT(configChanged()));
120
connect ( dlg->rbPolicyReject, SIGNAL(toggled(bool)),
121
SLOT(configChanged()));
101
connect (mUi.cbRejectCrossDomainCookies, SIGNAL (toggled (bool)),
102
SLOT (configChanged()));
103
connect (mUi.cbAutoAcceptSessionCookies, SIGNAL (toggled (bool)),
104
SLOT (configChanged()));
105
connect (mUi.cbIgnoreCookieExpirationDate, SIGNAL (toggled (bool)),
106
SLOT (configChanged()));
108
connect (mUi.cbAutoAcceptSessionCookies, SIGNAL (toggled (bool)),
109
SLOT (autoAcceptSessionCookies (bool)));
110
connect (mUi.cbIgnoreCookieExpirationDate, SIGNAL (toggled (bool)),
111
SLOT (ignoreCookieExpirationDate (bool)));
113
connect (mUi.rbPolicyAsk, SIGNAL (toggled (bool)),
114
SLOT (configChanged()));
115
connect (mUi.rbPolicyAccept, SIGNAL (toggled (bool)),
116
SLOT (configChanged()));
117
connect (mUi.rbPolicyReject, SIGNAL (toggled (bool)),
118
SLOT (configChanged()));
122
119
// Connect signals from the domain specific policy listview.
123
connect( dlg->lvDomainPolicy, SIGNAL(itemSelectionChanged()),
124
SLOT(selectionChanged()) );
125
connect( dlg->lvDomainPolicy, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)),
126
SLOT(changePressed() ) );
120
connect (mUi.lvDomainPolicy, SIGNAL (itemSelectionChanged()),
121
SLOT (selectionChanged()));
122
connect (mUi.lvDomainPolicy, SIGNAL (itemDoubleClicked (QTreeWidgetItem*, int)),
123
SLOT (changePressed()));
128
125
// Connect the buttons...
129
connect( dlg->pbNew, SIGNAL(clicked()), SLOT( addPressed() ) );
130
connect( dlg->pbChange, SIGNAL( clicked() ), SLOT( changePressed() ) );
131
connect( dlg->pbDelete, SIGNAL( clicked() ), SLOT( deletePressed() ) );
132
connect( dlg->pbDeleteAll, SIGNAL( clicked() ), SLOT( deleteAllPressed() ) );
126
connect (mUi.pbNew, SIGNAL (clicked()), SLOT (addPressed()));
127
connect (mUi.pbChange, SIGNAL (clicked()), SLOT (changePressed()));
128
connect (mUi.pbDelete, SIGNAL (clicked()), SLOT (deletePressed()));
129
connect (mUi.pbDeleteAll, SIGNAL (clicked()), SLOT (deleteAllPressed()));
135
132
KCookiesPolicies::~KCookiesPolicies()
139
136
void KCookiesPolicies::configChanged ()
141
//kDebug() << "KCookiesPolicies::configChanged...";
145
void KCookiesPolicies::cookiesEnabled( bool enable )
147
dlg->bgDefault->setEnabled( enable );
148
dlg->bgPreferences->setEnabled ( enable );
149
dlg->gbDomainSpecific->setEnabled( enable );
153
ignoreCookieExpirationDate ( enable );
154
autoAcceptSessionCookies ( enable );
158
void KCookiesPolicies::ignoreCookieExpirationDate ( bool enable )
160
bool isAutoAcceptChecked = dlg->cbAutoAcceptSessionCookies->isChecked();
161
enable = (enable && isAutoAcceptChecked);
163
dlg->bgDefault->setEnabled( !enable );
164
dlg->gbDomainSpecific->setEnabled( !enable );
167
void KCookiesPolicies::autoAcceptSessionCookies ( bool enable )
169
bool isIgnoreExpirationChecked = dlg->cbIgnoreCookieExpirationDate->isChecked();
170
enable = (enable && isIgnoreExpirationChecked);
172
dlg->bgDefault->setEnabled( !enable );
173
dlg->gbDomainSpecific->setEnabled( !enable );
176
void KCookiesPolicies::addNewPolicy(const QString& domain)
178
PolicyDlg pdlg (i18nc("@title:window", "New Cookie Policy"), this);
179
pdlg.setEnableHostEdit (true, domain);
181
if (dlg->rbPolicyAccept->isChecked())
182
pdlg.setPolicy(KCookieAdvice::Reject);
184
pdlg.setPolicy(KCookieAdvice::Accept);
186
if (pdlg.exec() && !pdlg.domain().isEmpty())
188
QString domain = tolerantFromAce(pdlg.domain().toLatin1());
189
int advice = pdlg.advice();
191
if ( !handleDuplicate(domain, advice) )
193
const char* strAdvice = KCookieAdvice::adviceToStr(advice);
194
QTreeWidgetItem* item = new QTreeWidgetItem (dlg->lvDomainPolicy,
195
QStringList()<< domain << i18n(strAdvice));
196
m_pDomainPolicy.insert (item, strAdvice);
138
//kDebug() << "KCookiesPolicies::configChanged...";
142
void KCookiesPolicies::cookiesEnabled (bool enable)
144
mUi.bgDefault->setEnabled (enable);
145
mUi.bgPreferences->setEnabled (enable);
146
mUi.gbDomainSpecific->setEnabled (enable);
149
ignoreCookieExpirationDate (enable);
150
autoAcceptSessionCookies (enable);
154
void KCookiesPolicies::ignoreCookieExpirationDate (bool enable)
156
bool isAutoAcceptChecked = mUi.cbAutoAcceptSessionCookies->isChecked();
157
enable = (enable && isAutoAcceptChecked);
159
mUi.bgDefault->setEnabled (!enable);
160
mUi.gbDomainSpecific->setEnabled (!enable);
163
void KCookiesPolicies::autoAcceptSessionCookies (bool enable)
165
bool isIgnoreExpirationChecked = mUi.cbIgnoreCookieExpirationDate->isChecked();
166
enable = (enable && isIgnoreExpirationChecked);
168
mUi.bgDefault->setEnabled (!enable);
169
mUi.gbDomainSpecific->setEnabled (!enable);
172
void KCookiesPolicies::addNewPolicy (const QString& domain)
174
KCookiesPolicySelectionDlg pdlg (this);
175
pdlg.setWindowTitle (i18nc ("@title:window", "New Cookie Policy"));
176
pdlg.setEnableHostEdit (true, domain);
178
if (mUi.rbPolicyAccept->isChecked())
179
pdlg.setPolicy (KCookieAdvice::Reject);
181
pdlg.setPolicy (KCookieAdvice::Accept);
183
if (pdlg.exec() && !pdlg.domain().isEmpty()) {
184
QString domain = tolerantFromAce (pdlg.domain().toLatin1());
185
int advice = pdlg.advice();
187
if (!handleDuplicate (domain, advice)) {
188
const char* strAdvice = KCookieAdvice::adviceToStr (advice);
189
QTreeWidgetItem* item = new QTreeWidgetItem (mUi.lvDomainPolicy,
190
QStringList() << domain << i18n (strAdvice));
191
m_pDomainPolicy.insert (item, strAdvice);
203
198
void KCookiesPolicies::addPressed()
205
addNewPolicy (QString());
200
addNewPolicy (QString());
208
203
void KCookiesPolicies::changePressed()
210
QTreeWidgetItem* index = dlg->lvDomainPolicy->currentItem();
215
QString oldDomain = index->text(0);
217
PolicyDlg pdlg (i18nc("@title:window", "Change Cookie Policy"), this);
218
pdlg.setPolicy (KCookieAdvice::strToAdvice(m_pDomainPolicy[index]));
219
pdlg.setEnableHostEdit (true, oldDomain);
221
if( pdlg.exec() && !pdlg.domain().isEmpty())
223
QString newDomain = tolerantFromAce(pdlg.domain().toLatin1());
224
int advice = pdlg.advice();
225
if (newDomain == oldDomain || !handleDuplicate(newDomain, advice))
227
m_pDomainPolicy[index] = KCookieAdvice::adviceToStr(advice);
228
index->setText(0, newDomain);
229
index->setText(1, i18n(m_pDomainPolicy[index]) );
205
QTreeWidgetItem* index = mUi.lvDomainPolicy->currentItem();
210
QString oldDomain = index->text (0);
212
KCookiesPolicySelectionDlg pdlg (this);
213
pdlg.setWindowTitle (i18nc ("@title:window", "Change Cookie Policy"));
214
pdlg.setPolicy (KCookieAdvice::strToAdvice (m_pDomainPolicy[index]));
215
pdlg.setEnableHostEdit (true, oldDomain);
217
if (pdlg.exec() && !pdlg.domain().isEmpty()) {
218
QString newDomain = tolerantFromAce (pdlg.domain().toLatin1());
219
int advice = pdlg.advice();
220
if (newDomain == oldDomain || !handleDuplicate (newDomain, advice)) {
221
m_pDomainPolicy[index] = KCookieAdvice::adviceToStr (advice);
222
index->setText (0, newDomain);
223
index->setText (1, i18n (m_pDomainPolicy[index]));
235
bool KCookiesPolicies::handleDuplicate( const QString& domain, int advice )
229
bool KCookiesPolicies::handleDuplicate (const QString& domain, int advice)
237
QTreeWidgetItem* item = dlg->lvDomainPolicy->topLevelItem(0);
240
if ( item->text(0) == domain )
242
QString msg = i18n("<qt>A policy already exists for"
243
"<center><b>%1</b></center>"
244
"Do you want to replace it?</qt>", domain);
245
int res = KMessageBox::warningContinueCancel(this, msg,
246
i18nc("@title:window", "Duplicate Policy"),
247
KGuiItem(i18n("Replace")));
248
if ( res == KMessageBox::Continue )
250
m_pDomainPolicy[item]= KCookieAdvice::adviceToStr(advice);
251
item->setText(0, domain);
252
item->setText(1, i18n(m_pDomainPolicy[item]));
257
return true; // User Cancelled!!
231
QTreeWidgetItem* item = mUi.lvDomainPolicy->topLevelItem (0);
233
if (item->text (0) == domain) {
234
QString msg = i18n ("<qt>A policy already exists for"
235
"<center><b>%1</b></center>"
236
"Do you want to replace it?</qt>", domain);
237
int res = KMessageBox::warningContinueCancel (this, msg,
238
i18nc ("@title:window", "Duplicate Policy"),
239
KGuiItem (i18n ("Replace")));
240
if (res == KMessageBox::Continue) {
241
m_pDomainPolicy[item] = KCookieAdvice::adviceToStr (advice);
242
item->setText (0, domain);
243
item->setText (1, i18n (m_pDomainPolicy[item]));
247
return true; // User Cancelled!!
249
item = mUi.lvDomainPolicy->itemBelow (item);
259
item = dlg->lvDomainPolicy->itemBelow(item);
264
254
void KCookiesPolicies::deletePressed()
266
QTreeWidgetItem* nextItem = 0L;
268
Q_FOREACH(QTreeWidgetItem* item, dlg->lvDomainPolicy->selectedItems()) {
269
nextItem = dlg->lvDomainPolicy->itemBelow(item);
271
nextItem = dlg->lvDomainPolicy->itemAbove(item);
273
m_pDomainPolicy.remove(item);
278
nextItem->setSelected(true);
256
QTreeWidgetItem* nextItem = 0L;
258
Q_FOREACH (QTreeWidgetItem * item, mUi.lvDomainPolicy->selectedItems()) {
259
nextItem = mUi.lvDomainPolicy->itemBelow (item);
261
nextItem = mUi.lvDomainPolicy->itemAbove (item);
263
m_pDomainPolicy.remove (item);
268
nextItem->setSelected (true);
284
274
void KCookiesPolicies::deleteAllPressed()
286
m_pDomainPolicy.clear();
287
dlg->lvDomainPolicy->clear();
276
m_pDomainPolicy.clear();
277
mUi.lvDomainPolicy->clear();
292
282
void KCookiesPolicies::updateButtons()
294
bool hasItems = dlg->lvDomainPolicy->topLevelItemCount() > 0;
284
bool hasItems = mUi.lvDomainPolicy->topLevelItemCount() > 0;
296
dlg->pbChange->setEnabled ((hasItems && d_itemsSelected == 1));
297
dlg->pbDelete->setEnabled ((hasItems && d_itemsSelected > 0));
298
dlg->pbDeleteAll->setEnabled ( hasItems );
286
mUi.pbChange->setEnabled ( (hasItems && d_itemsSelected == 1));
287
mUi.pbDelete->setEnabled ( (hasItems && d_itemsSelected > 0));
288
mUi.pbDeleteAll->setEnabled (hasItems);
301
void KCookiesPolicies::updateDomainList(const QStringList &domainConfig)
291
void KCookiesPolicies::updateDomainList (const QStringList& domainConfig)
303
dlg->lvDomainPolicy->clear();
305
QStringList::ConstIterator it = domainConfig.begin();
306
for (; it != domainConfig.end(); ++it)
309
KCookieAdvice::Value advice = KCookieAdvice::Dunno;
311
splitDomainAdvice(*it, domain, advice);
313
if (!domain.isEmpty())
315
QTreeWidgetItem* index = new QTreeWidgetItem( dlg->lvDomainPolicy, QStringList() << tolerantFromAce(domain.toLatin1()) <<
316
i18n(KCookieAdvice::adviceToStr(advice)) );
317
m_pDomainPolicy[index] = KCookieAdvice::adviceToStr(advice);
321
dlg->lvDomainPolicy->sortItems(0, Qt::AscendingOrder);
293
mUi.lvDomainPolicy->clear();
295
QStringList::ConstIterator it = domainConfig.begin();
296
for (; it != domainConfig.end(); ++it) {
298
KCookieAdvice::Value advice = KCookieAdvice::Dunno;
300
splitDomainAdvice (*it, domain, advice);
302
if (!domain.isEmpty()) {
303
QTreeWidgetItem* index = new QTreeWidgetItem (mUi.lvDomainPolicy, QStringList() << tolerantFromAce (domain.toLatin1()) <<
304
i18n (KCookieAdvice::adviceToStr (advice)));
305
m_pDomainPolicy[index] = KCookieAdvice::adviceToStr (advice);
309
mUi.lvDomainPolicy->sortItems(0, Qt::AscendingOrder);
324
312
void KCookiesPolicies::selectionChanged ()
326
d_itemsSelected = dlg->lvDomainPolicy->selectedItems().count();
314
d_itemsSelected = mUi.lvDomainPolicy->selectedItems().count();
331
319
void KCookiesPolicies::load()
335
KConfig cfg ("kcookiejarrc");
336
KConfigGroup group = cfg.group ("Cookie Policy");
338
bool enableCookies = group.readEntry("Cookies", true);
339
dlg->cbEnableCookies->setChecked (enableCookies);
340
cookiesEnabled( enableCookies );
342
// Warning: the default values are duplicated in kcookiejar.cpp
343
KCookieAdvice::Value advice = KCookieAdvice::strToAdvice (group.readEntry(
344
"CookieGlobalAdvice", "Accept"));
323
KConfig cfg ("kcookiejarrc");
324
KConfigGroup group = cfg.group ("Cookie Policy");
326
bool enableCookies = group.readEntry ("Cookies", true);
327
mUi.cbEnableCookies->setChecked (enableCookies);
328
cookiesEnabled (enableCookies);
330
// Warning: the default values are duplicated in kcookiejar.cpp
331
KCookieAdvice::Value advice = KCookieAdvice::strToAdvice (group.readEntry (
332
"CookieGlobalAdvice", "Accept"));
347
334
case KCookieAdvice::Accept:
348
dlg->rbPolicyAccept->setChecked (true);
335
mUi.rbPolicyAccept->setChecked (true);
350
337
case KCookieAdvice::Reject:
351
dlg->rbPolicyReject->setChecked (true);
338
mUi.rbPolicyReject->setChecked (true);
353
340
case KCookieAdvice::Ask:
354
341
case KCookieAdvice::Dunno:
356
dlg->rbPolicyAsk->setChecked (true);
359
bool enable = group.readEntry("RejectCrossDomainCookies", true);
360
dlg->cbRejectCrossDomainCookies->setChecked (enable);
362
bool sessionCookies = group.readEntry("AcceptSessionCookies", true);
363
dlg->cbAutoAcceptSessionCookies->setChecked (sessionCookies);
364
bool cookieExpiration = group.readEntry("IgnoreExpirationDate", false);
365
dlg->cbIgnoreCookieExpirationDate->setChecked (cookieExpiration);
366
updateDomainList(group.readEntry("CookieDomainAdvice", QStringList()));
370
ignoreCookieExpirationDate( cookieExpiration );
371
autoAcceptSessionCookies( sessionCookies );
343
mUi.rbPolicyAsk->setChecked (true);
346
bool enable = group.readEntry ("RejectCrossDomainCookies", true);
347
mUi.cbRejectCrossDomainCookies->setChecked (enable);
349
bool sessionCookies = group.readEntry ("AcceptSessionCookies", true);
350
mUi.cbAutoAcceptSessionCookies->setChecked (sessionCookies);
351
bool cookieExpiration = group.readEntry ("IgnoreExpirationDate", false);
352
mUi.cbIgnoreCookieExpirationDate->setChecked (cookieExpiration);
353
updateDomainList (group.readEntry ("CookieDomainAdvice", QStringList()));
356
ignoreCookieExpirationDate (cookieExpiration);
357
autoAcceptSessionCookies (sessionCookies);
376
362
void KCookiesPolicies::save()
378
KConfig cfg ( "kcookiejarrc" );
379
KConfigGroup group = cfg.group( "Cookie Policy" );
381
bool state = dlg->cbEnableCookies->isChecked();
382
group.writeEntry( "Cookies", state );
383
state = dlg->cbRejectCrossDomainCookies->isChecked();
384
group.writeEntry( "RejectCrossDomainCookies", state );
385
state = dlg->cbAutoAcceptSessionCookies->isChecked();
386
group.writeEntry( "AcceptSessionCookies", state );
387
state = dlg->cbIgnoreCookieExpirationDate->isChecked();
388
group.writeEntry( "IgnoreExpirationDate", state );
391
if (dlg->rbPolicyAccept->isChecked())
392
advice = KCookieAdvice::adviceToStr(KCookieAdvice::Accept);
393
else if (dlg->rbPolicyReject->isChecked())
394
advice = KCookieAdvice::adviceToStr(KCookieAdvice::Reject);
396
advice = KCookieAdvice::adviceToStr(KCookieAdvice::Ask);
398
group.writeEntry("CookieGlobalAdvice", advice);
400
QStringList domainConfig;
401
QMapIterator<QTreeWidgetItem*, const char*> it (m_pDomainPolicy);
402
while (it.hasNext()) {
404
QTreeWidgetItem *item = it.key();
405
QString policy = tolerantToAce(item->text(0));
406
policy += QLatin1Char(':');
407
policy += QLatin1String(it.value());
408
domainConfig << policy;
411
group.writeEntry("CookieDomainAdvice", domainConfig);
414
// Update the cookiejar...
415
if (!dlg->cbEnableCookies->isChecked())
417
QDBusInterface kded("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
418
kded.call( "shutdown" );
422
QDBusInterface kded("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
423
QDBusReply<void> reply = kded.call( "reloadPolicy" );
424
if (!reply.isValid())
425
KMessageBox::sorry(0, i18n("Unable to communicate with the cookie handler service.\n"
426
"Any changes you made will not take effect until the service "
430
// Force running io-slave to reload configurations...
431
KSaveIOConfig::updateRunningIOSlaves (this);
432
emit changed( false );
364
KConfig cfg ("kcookiejarrc");
365
KConfigGroup group = cfg.group ("Cookie Policy");
367
bool state = mUi.cbEnableCookies->isChecked();
368
group.writeEntry ("Cookies", state);
369
state = mUi.cbRejectCrossDomainCookies->isChecked();
370
group.writeEntry ("RejectCrossDomainCookies", state);
371
state = mUi.cbAutoAcceptSessionCookies->isChecked();
372
group.writeEntry ("AcceptSessionCookies", state);
373
state = mUi.cbIgnoreCookieExpirationDate->isChecked();
374
group.writeEntry ("IgnoreExpirationDate", state);
377
if (mUi.rbPolicyAccept->isChecked())
378
advice = KCookieAdvice::adviceToStr (KCookieAdvice::Accept);
379
else if (mUi.rbPolicyReject->isChecked())
380
advice = KCookieAdvice::adviceToStr (KCookieAdvice::Reject);
382
advice = KCookieAdvice::adviceToStr (KCookieAdvice::Ask);
384
group.writeEntry ("CookieGlobalAdvice", advice);
386
QStringList domainConfig;
387
QMapIterator<QTreeWidgetItem*, const char*> it (m_pDomainPolicy);
388
while (it.hasNext()) {
390
QTreeWidgetItem* item = it.key();
391
QString policy = tolerantToAce (item->text (0));
392
policy += QLatin1Char (':');
393
policy += QLatin1String (it.value());
394
domainConfig << policy;
397
group.writeEntry ("CookieDomainAdvice", domainConfig);
400
// Update the cookiejar...
401
if (!mUi.cbEnableCookies->isChecked()) {
402
QDBusInterface kded ("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
403
kded.call ("shutdown");
405
QDBusInterface kded ("org.kde.kded", "/modules/kcookiejar", "org.kde.KCookieServer", QDBusConnection::sessionBus());
406
QDBusReply<void> reply = kded.call ("reloadPolicy");
407
if (!reply.isValid())
408
KMessageBox::sorry (0, i18n ("Unable to communicate with the cookie handler service.\n"
409
"Any changes you made will not take effect until the service "
413
// Force running io-slave to reload configurations...
414
KSaveIOConfig::updateRunningIOSlaves (this);
415
emit changed (false);
436
419
void KCookiesPolicies::defaults()
438
dlg->cbEnableCookies->setChecked( true );
439
dlg->rbPolicyAsk->setChecked( true );
440
dlg->rbPolicyAccept->setChecked( false );
441
dlg->rbPolicyReject->setChecked( false );
442
dlg->cbRejectCrossDomainCookies->setChecked( true );
443
dlg->cbAutoAcceptSessionCookies->setChecked( true );
444
dlg->cbIgnoreCookieExpirationDate->setChecked( false );
445
dlg->lvDomainPolicy->clear();
421
mUi.cbEnableCookies->setChecked (true);
422
mUi.rbPolicyAsk->setChecked (true);
423
mUi.rbPolicyAccept->setChecked (false);
424
mUi.rbPolicyReject->setChecked (false);
425
mUi.cbRejectCrossDomainCookies->setChecked (true);
426
mUi.cbAutoAcceptSessionCookies->setChecked (true);
427
mUi.cbIgnoreCookieExpirationDate->setChecked (false);
428
mUi.lvDomainPolicy->clear();
447
cookiesEnabled( dlg->cbEnableCookies->isChecked() );
430
cookiesEnabled (mUi.cbEnableCookies->isChecked());
451
void KCookiesPolicies::splitDomainAdvice (const QString& cfg, QString &domain,
452
KCookieAdvice::Value &advice)
434
void KCookiesPolicies::splitDomainAdvice (const QString& cfg, QString& domain,
435
KCookieAdvice::Value& advice)
454
int sepPos = cfg.lastIndexOf(':');
456
// Ignore any policy that does not contain a domain...
460
domain = cfg.left(sepPos);
461
advice = KCookieAdvice::strToAdvice( cfg.mid( sepPos+1 ) );
437
int sepPos = cfg.lastIndexOf (':');
439
// Ignore any policy that does not contain a domain...
443
domain = cfg.left (sepPos);
444
advice = KCookieAdvice::strToAdvice (cfg.mid (sepPos + 1));
464
447
QString KCookiesPolicies::quickHelp() const
466
return i18n("<p><h1>Cookies</h1> Cookies contain information that Konqueror"
467
" (or any other KDE application using the HTTP protocol) stores"
468
" on your computer from a remote Internet server. This means"
469
" that a web server can store information about you and your"
470
" browsing activities on your machine for later use. You might"
471
" consider this an invasion of privacy.</p><p>However, cookies are"
472
" useful in certain situations. For example, they are often used"
473
" by Internet shops, so you can 'put things into a shopping"
474
" basket'. Some sites require you have a browser that supports"
475
" cookies.</p><p>Because most people want a compromise between privacy"
476
" and the benefits cookies offer, KDE offers you the ability to"
477
" customize the way it handles cookies. You might, for example"
478
" want to set KDE's default policy to ask you whenever a server"
479
" wants to set a cookie or simply reject or accept everything."
480
" For example, you might choose to accept all cookies from your"
481
" favorite shopping web site. For this all you have to do is"
482
" either browse to that particular site and when you are presented"
483
" with the cookie dialog box, click on <i> This domain </i> under"
484
" the 'apply to' tab and choose accept or simply specify the name"
485
" of the site in the <i> Domain Specific Policy </i> tab and set"
486
" it to accept. This enables you to receive cookies from trusted"
487
" web sites without being asked every time KDE receives a cookie.</p>"
449
return i18n ("<p><h1>Cookies</h1> Cookies contain information that Konqueror"
450
" (or any other KDE application using the HTTP protocol) stores"
451
" on your computer from a remote Internet server. This means"
452
" that a web server can store information about you and your"
453
" browsing activities on your machine for later use. You might"
454
" consider this an invasion of privacy.</p><p>However, cookies are"
455
" useful in certain situations. For example, they are often used"
456
" by Internet shops, so you can 'put things into a shopping"
457
" basket'. Some sites require you have a browser that supports"
458
" cookies.</p><p>Because most people want a compromise between privacy"
459
" and the benefits cookies offer, KDE offers you the ability to"
460
" customize the way it handles cookies. You might, for example"
461
" want to set KDE's default policy to ask you whenever a server"
462
" wants to set a cookie or simply reject or accept everything."
463
" For example, you might choose to accept all cookies from your"
464
" favorite shopping web site. For this all you have to do is"
465
" either browse to that particular site and when you are presented"
466
" with the cookie dialog box, click on <i> This domain </i> under"
467
" the 'apply to' tab and choose accept or simply specify the name"
468
" of the site in the <i> Domain Specific Policy </i> tab and set"
469
" it to accept. This enables you to receive cookies from trusted"
470
" web sites without being asked every time KDE receives a cookie.</p>"
491
474
#include "kcookiespolicies.moc"