[developerteam getadooble] SF.net SVN: dooble:[1946] trunk/browser
Brought to you by:
textfield
|
From: <tex...@us...> - 2011-02-14 00:08:22
|
Revision: 1946
http://dooble.svn.sourceforge.net/dooble/?rev=1946&view=rev
Author: textfield
Date: 2011-02-14 00:08:16 +0000 (Mon, 14 Feb 2011)
Log Message:
-----------
Fixes to cookie recording and removing.
Modified Paths:
--------------
trunk/browser/Include/dcookies.h
trunk/browser/Source/dcookies.cc
trunk/browser/Source/dcookiewindow.cc
Modified: trunk/browser/Include/dcookies.h
===================================================================
--- trunk/browser/Include/dcookies.h 2011-02-13 22:22:31 UTC (rev 1945)
+++ trunk/browser/Include/dcookies.h 2011-02-14 00:08:16 UTC (rev 1946)
@@ -58,7 +58,6 @@
#include <QDateTime>
#include <QSqlQuery>
#include <QSqlDatabase>
-#include <QWaitCondition>
#include <QNetworkCookieJar>
class dcookiesthread: public QThread
@@ -68,28 +67,22 @@
public:
dcookiesthread(QObject *parent):QThread(parent)
{
- connect(this,
- SIGNAL(finished(void)),
- this,
- SLOT(start(void)));
}
~dcookiesthread()
{
- disconnect(this,
- SIGNAL(finished(void)),
- this,
- SLOT(start(void)));
- m_waitCondition.wakeAll();
wait();
}
void run(void)
{
m_mutex.lock();
- m_waitCondition.wait(&m_mutex);
- if(!m_list.isEmpty())
+ QList<QNetworkCookie> list(m_list);
+
+ m_mutex.unlock();
+
+ if(!list.isEmpty())
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",
"cookies_thread");
@@ -101,9 +94,9 @@
{
QSqlQuery query(db);
- while(!m_list.isEmpty())
+ while(!list.isEmpty())
{
- QNetworkCookie cookie(m_list.takeFirst());
+ QNetworkCookie cookie(list.takeFirst());
if(cookie.isSessionCookie())
continue;
@@ -123,25 +116,29 @@
query.bindValue(6, cookie.value().toBase64());
query.exec();
}
+
+ db.commit();
}
db.close();
}
QSqlDatabase::removeDatabase("cookies_thread");
- m_mutex.unlock();
}
private:
QMutex m_mutex;
- QWaitCondition m_waitCondition;
QList<QNetworkCookie> m_list;
public slots:
void slotSaveCookies(const QList<QNetworkCookie> &list)
{
- m_list = list;
- m_waitCondition.wakeAll();
+ m_mutex.lock();
+ m_list.append(list);
+ m_mutex.unlock();
+
+ if(!isRunning())
+ start();
}
};
@@ -164,6 +161,7 @@
bool m_isSessionContainer;
void populate(void);
void saveCookies(const QList<QNetworkCookie> &list);
+ void removeCookie(const QString &domain);
void removeCookie(const QNetworkCookie &cookie);
void removeAllCookies(void);
void createCookieDatabase(void);
Modified: trunk/browser/Source/dcookies.cc
===================================================================
--- trunk/browser/Source/dcookies.cc 2011-02-13 22:22:31 UTC (rev 1945)
+++ trunk/browser/Source/dcookies.cc 2011-02-14 00:08:16 UTC (rev 1946)
@@ -71,7 +71,6 @@
SIGNAL(writeCookies(const QList<QNetworkCookie> &)),
thread,
SLOT(slotSaveCookies(const QList<QNetworkCookie> &)));
- thread->start();
}
}
@@ -300,14 +299,9 @@
{
QString str(all.at(i).domain());
- if(str.startsWith("."))
- str = str.remove(0, 1);
- else if(str.startsWith("www."))
- str = str.remove(0, 4);
-
if(str == domain)
{
- removeCookie(all.at(i));
+ removeCookie(str);
all.removeAt(i);
break;
}
@@ -327,11 +321,6 @@
{
QString str(all.at(i).domain());
- if(str.startsWith("."))
- str = str.remove(0, 1);
- else if(str.startsWith("www."))
- str = str.remove(0, 4);
-
if(str == domain &&
name == QVariant(all.at(i).name()).toString() &&
path == all.at(i).path())
@@ -348,8 +337,10 @@
void dcookies::saveCookies(const QList<QNetworkCookie> &list)
{
- if(!m_isSessionContainer)
+ if(!dooble::s_settings.value("settingsWindow/cookiesEnabled", true).toBool())
return;
+ else if(!m_isSessionContainer)
+ return;
else if(list.isEmpty())
return;
@@ -357,6 +348,35 @@
emit writeCookies(list);
}
+void dcookies::removeCookie(const QString &domain)
+{
+ if(!m_isSessionContainer)
+ return;
+
+ {
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "cookies");
+
+ db.setDatabaseName(QDir::homePath() + QDir::separator() +
+ ".dooble" + QDir::separator() + "cookies.db");
+
+ if(db.open())
+ {
+ QSqlQuery query(db);
+
+ query.prepare
+ ("DELETE FROM cookies WHERE "
+ "domain = ?");
+ query.bindValue(0, domain);
+ query.exec();
+ db.commit();
+ }
+
+ db.close();
+ }
+
+ QSqlDatabase::removeDatabase("cookies");
+}
+
void dcookies::removeCookie(const QNetworkCookie &cookie)
{
if(!m_isSessionContainer)
@@ -381,6 +401,7 @@
query.bindValue(1, cookie.name().toBase64());
query.bindValue(2, cookie.path());
query.exec();
+ db.commit();
}
db.close();
Modified: trunk/browser/Source/dcookiewindow.cc
===================================================================
--- trunk/browser/Source/dcookiewindow.cc 2011-02-13 22:22:31 UTC (rev 1945)
+++ trunk/browser/Source/dcookiewindow.cc 2011-02-14 00:08:16 UTC (rev 1946)
@@ -219,9 +219,10 @@
index1.parent()));
emit cookieRemoved
- (index1.data().toString(), // Name
- index1.parent().data().toString(), // Domain
- index2.data().toString()); // Path
+ (index1.data().toString(), // Name
+ m_model->itemFromIndex(index1.parent())->
+ data(Qt::UserRole + 1).toString(), // Domain
+ index2.data().toString()); // Path
m_model->removeRows(index1.row(), 1, index1.parent());
if(m_model->rowCount(index1.parent()) == 0)
@@ -243,7 +244,8 @@
*/
index1 = m_model->index(index1.row(), 0);
- emit cookieRemoved(index1.data().toString());
+ emit cookieRemoved
+ (m_model->itemFromIndex(index1)->data(Qt::UserRole + 1).toString());
m_model->removeRows(index1.row(), 1);
}
}
@@ -334,6 +336,7 @@
row = m_model->rowCount() - 1;
item1 = new QStandardItem(icon.icon(QFileIconProvider::Folder),
domain);
+ item1->setData(cookie.domain(), Qt::UserRole + 1);
item1->setEditable(false);
item1->setData(item1->text(), Qt::UserRole);
m_model->setItem(row, 0, item1);
@@ -407,6 +410,7 @@
row = m_model->rowCount() - 1;
item1 = new QStandardItem(icon.icon(QFileIconProvider::Folder),
domain);
+ item1->setData(cookie.domain(), Qt::UserRole + 1);
item1->setEditable(false);
item1->setData(item1->text(), Qt::UserRole);
m_model->setItem(row, 0, item1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|