From 47b574c28983254b6679191f76ddb36fe7da7632 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 7 Aug 2007 20:15:36 +0000 Subject: [PATCH] Removed broken autoconnect (for networks) -- how are we gonna do that anyways? We should not wait for a client to connect... Also I added Storage::renameUser() and a few signals. --- src/client/client.cpp | 2 +- src/core/coresession.cpp | 11 +++++++++++ src/core/sqlitestorage.cpp | 16 ++++++++++++++-- src/core/sqlitestorage.h | 1 + src/core/storage.h | 14 +++++++++++++- src/qtgui/serverlist.cpp | 5 +++-- 6 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index 41707606..938d1072 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -176,7 +176,7 @@ void Client::coreSocketDisconnected() { } void Client::recvCoreState(const QVariant &state) { - disconnect(this, SIGNAL(recvPartialItem(quint32, quint32)), this, SIGNAL(coreConnectionProgress(uint, uint))); + disconnect(this, SIGNAL(recvPartialItem(uint, uint)), this, SIGNAL(coreConnectionProgress(uint, uint))); syncToCore(state); } diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 4c502215..ccfa2a1b 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -48,6 +48,17 @@ CoreSession::CoreSession(UserId uid, Storage *_storage) : user(uid), storage(_st connect(storage, SIGNAL(bufferIdUpdated(BufferId)), coreProxy, SLOT(csUpdateBufferId(BufferId))); connect(this, SIGNAL(sessionDataChanged(const QString &, const QVariant &)), coreProxy, SLOT(csSessionDataChanged(const QString &, const QVariant &))); connect(coreProxy, SIGNAL(gsSessionDataChanged(const QString &, const QVariant &)), this, SLOT(storeSessionData(const QString &, const QVariant &))); + + /* Autoconnect. (When) do we actually do this? + QStringList list; + VarMap networks = retrieveSessionData("Networks").toMap(); + foreach(QString net, networks.keys()) { + if(networks[net].toMap()["AutoConnect"].toBool()) { + list << net; + } + } qDebug() << list; + if(list.count()) connectToIrc(list); + */ } CoreSession::~CoreSession() { diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 7ee2e565..dda91b4d 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -201,13 +201,15 @@ UserId SqliteStorage::addUser(QString user, QString password) { query.exec(); if(query.lastError().isValid() && query.lastError().number() == 19) { // user already exists - sadly 19 seems to be the general constraint violation error... return 0; - } + } query.prepare("SELECT userid FROM quasseluser WHERE username = :username"); query.bindValue(":username", user); query.exec(); query.first(); - return query.value(0).toUInt(); + UserId uid = query.value(0).toUInt(); + emit userAdded(uid, user); + return uid; } void SqliteStorage::updateUser(UserId user, QString password) { @@ -221,6 +223,15 @@ void SqliteStorage::updateUser(UserId user, QString password) { query.exec(); } +void SqliteStorage::renameUser(UserId user, QString newName) { + QSqlQuery query(logDb); + query.prepare("UPDATE quasseluser SET username = :username WHERE userid = :userid"); + query.bindValue(":userid", user); + query.bindValue(":username", newName); + query.exec(); + emit userRenamed(user, newName); +} + UserId SqliteStorage::validateUser(QString user, QString password) { QByteArray cryptopass = QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha1); cryptopass = cryptopass.toHex(); @@ -257,6 +268,7 @@ void SqliteStorage::delUser(UserId user) { query.bindValue(":userid", user); query.exec(); // I hate the lack of foreign keys and on delete cascade... :( + emit userRemoved(user); } void SqliteStorage::createBuffer(UserId user, QString network, QString buffer) { diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index 393050b5..2d72b591 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -48,6 +48,7 @@ class SqliteStorage : public Storage { virtual UserId addUser(QString user, QString password); virtual void updateUser(UserId user, QString password); + virtual void renameUser(UserId user, QString newName); virtual UserId validateUser(QString user, QString password); virtual void delUser(UserId user); diff --git a/src/core/storage.h b/src/core/storage.h index d143443f..e66563bc 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -74,6 +74,12 @@ class Storage : public QObject { */ virtual void updateUser(UserId user, QString password) = 0; + //! Rename a user + /** \param user The user's id + * \param newName The user's new name + */ + virtual void renameUser(UserId user, QString newName) = 0; + //! Validate a username with a given password. /** \param user The username to validate * \param password The user's alleged password @@ -147,8 +153,14 @@ class Storage : public QObject { virtual void importOldBacklog() = 0; signals: - //! Sent if a new BufferId is created, or an existing one changed somehow. + //! Sent when a new BufferId is created, or an existing one changed somehow. void bufferIdUpdated(BufferId); + //! Sent when a new user has been added + void userAdded(UserId, const QString &username); + //! Sent when a user has been renamed + void userRenamed(UserId, const QString &newname); + //! Sent when a user has been removed + void userRemoved(UserId); public: /* Exceptions */ diff --git a/src/qtgui/serverlist.cpp b/src/qtgui/serverlist.cpp index b1b68bac..a374dafd 100644 --- a/src/qtgui/serverlist.cpp +++ b/src/qtgui/serverlist.cpp @@ -40,11 +40,11 @@ ServerListDlg::ServerListDlg(QWidget *parent) : QDialog(parent) { connect(Client::instance(), SIGNAL(sessionDataChanged(const QString &)), this, SLOT(updateNetworkTree())); settings.endGroup(); - // check if we already have a valid identity - //if(!Global::data("Identities", VarMap()).toMap().contains("Default")) editIdentities(true); // FIXME + connect(this, SIGNAL(requestConnect(QStringList)), ClientProxy::instance(), SLOT(gsRequestConnect(QStringList))); // Autoconnect + /* Should not be the client's task... :-P QStringList list; VarMap networks = Client::retrieveSessionData("Networks").toMap(); foreach(QString net, networks.keys()) { @@ -53,6 +53,7 @@ ServerListDlg::ServerListDlg(QWidget *parent) : QDialog(parent) { } } if(!list.isEmpty()) emit requestConnect(list); + */ } ServerListDlg::~ServerListDlg() { -- 2.20.1