From: Marcus Eggenberger Date: Mon, 11 Feb 2008 19:29:59 +0000 (+0000) Subject: The Networksettings are now stored purely in the Database. X-Git-Tag: 0.2.0-alpha1~74 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=d3ea803d8977692f95bbe31fbaba3686fc2ce5a9 The Networksettings are now stored purely in the Database. You can now rename networks and delete them. Be warned: the latter one deletes everything associated with the network including backlog. --- diff --git a/src/client/client.cpp b/src/client/client.cpp index 8cc06828..2ad6ffab 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -76,6 +76,8 @@ void Client::init() { _networkModel = new NetworkModel(this); connect(this, SIGNAL(bufferUpdated(BufferInfo)), _networkModel, SLOT(bufferUpdated(BufferInfo))); + connect(this, SIGNAL(networkRemoved(NetworkId)), + _networkModel, SLOT(networkRemoved(NetworkId))); _bufferModel = new BufferModel(_networkModel); diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 52e57407..755a2c67 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -592,7 +592,7 @@ Buffer *NetworkModel::getBufferByIndex(const QModelIndex &index) const { // experimental stuff :) QModelIndex NetworkModel::networkIndex(NetworkId networkId) { - return indexById(networkId.toInt()); + return indexById(qHash(networkId)); } NetworkItem *NetworkModel::existsNetworkItem(NetworkId networkId) { @@ -611,12 +611,16 @@ NetworkItem *NetworkModel::networkItem(NetworkId networkId) { return netItem; } +void NetworkModel::networkRemoved(const NetworkId &networkId) { + rootItem->removeChildById(qHash(networkId)); +} + QModelIndex NetworkModel::bufferIndex(BufferId bufferId) { AbstractTreeItem *netItem, *bufferItem; for(int i = 0; i < rootItem->childCount(); i++) { netItem = rootItem->child(i); - if((bufferItem = netItem->childById(bufferId.toInt()))) { - return indexById(bufferItem->id(), networkIndex(netItem->id())); + if((bufferItem = netItem->childById(qHash(bufferId)))) { + return indexByItem(bufferItem); } } return QModelIndex(); @@ -719,11 +723,11 @@ bool NetworkModel::dropMimeData(const QMimeData *data, Qt::DropAction action, in if(bufferId == parent.data(BufferIdRole).value()) return false; - Q_ASSERT(rootItem->childById(netId.toInt())); - Q_ASSERT(rootItem->childById(netId.toInt())->childById(bufferId.toInt())); + Q_ASSERT(rootItem->childById(qHash(netId))); + Q_ASSERT(rootItem->childById(qHash(netId))->childById(qHash(bufferId))); // source must be a query too - BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(netId.toInt())->childById(bufferId.toInt())->data(0, BufferTypeRole).toInt(); + BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(qHash(netId))->childById(qHash(bufferId))->data(0, BufferTypeRole).toInt(); if(sourceType != BufferItem::QueryType) return false; @@ -772,3 +776,4 @@ const Network *NetworkModel::networkByIndex(const QModelIndex &index) const { NetworkId networkId = netVariant.value(); return Client::network(networkId); } + diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h index 244b99b4..c3dbaf47 100644 --- a/src/client/networkmodel.h +++ b/src/client/networkmodel.h @@ -254,7 +254,8 @@ public: public slots: void bufferUpdated(BufferInfo bufferInfo); void updateBufferActivity(const Message &msg); - + void networkRemoved(const NetworkId &networkId); + private: QModelIndex networkIndex(NetworkId networkId); NetworkItem *networkItem(NetworkId networkId); diff --git a/src/core/SQL/SQLite/4/setup_010_sender.sql b/src/core/SQL/SQLite/4/setup_010_sender.sql deleted file mode 100644 index 66d5755d..00000000 --- a/src/core/SQL/SQLite/4/setup_010_sender.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE sender ( - senderid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - sender TEXT UNIQUE NOT NULL) - - diff --git a/src/core/SQL/SQLite/4/setup_020_network.sql b/src/core/SQL/SQLite/4/setup_020_network.sql deleted file mode 100644 index 9a846899..00000000 --- a/src/core/SQL/SQLite/4/setup_020_network.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE network ( - networkid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - userid INTEGER NOT NULL, - networkname TEXT NOT NULL, - UNIQUE (userid, networkname)) diff --git a/src/core/SQL/SQLite/4/setup_080_version.sql b/src/core/SQL/SQLite/4/setup_080_version.sql deleted file mode 100644 index 8cc4cdcb..00000000 --- a/src/core/SQL/SQLite/4/setup_080_version.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO coreinfo (key, value) VALUES ('schemaversion', '4') diff --git a/src/core/SQL/SQLite/4/upgrade_010_create_buffertable.sql b/src/core/SQL/SQLite/4/upgrade_010_create_buffertable.sql index ee5adc9b..9954c58c 100644 --- a/src/core/SQL/SQLite/4/upgrade_010_create_buffertable.sql +++ b/src/core/SQL/SQLite/4/upgrade_010_create_buffertable.sql @@ -4,5 +4,5 @@ CREATE TABLE buffer ( groupid INTEGER, networkid INTEGER NOT NULL, buffername TEXT NOT NULL, - buffercname TEXT NOT NULL + buffercname TEXT NOT NULL -- CANONICAL BUFFER NAME (lowercase version) ) \ No newline at end of file diff --git a/src/core/SQL/SQLite/4/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/5/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/4/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/5/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/5/delete_backlog_for_network.sql b/src/core/SQL/SQLite/5/delete_backlog_for_network.sql new file mode 100644 index 00000000..07a893fa --- /dev/null +++ b/src/core/SQL/SQLite/5/delete_backlog_for_network.sql @@ -0,0 +1,2 @@ +DELETE FROM backlog +WHERE bufferid IN (SELECT bufferid FROM buffer WHERE networkid = :networkid) diff --git a/src/core/SQL/SQLite/4/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/5/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/4/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/5/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/5/delete_buffers_for_network.sql b/src/core/SQL/SQLite/5/delete_buffers_for_network.sql new file mode 100644 index 00000000..9b9ccdb7 --- /dev/null +++ b/src/core/SQL/SQLite/5/delete_buffers_for_network.sql @@ -0,0 +1,2 @@ +DELETE FROM buffer +WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/5/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/5/delete_ircservers_for_network.sql new file mode 100644 index 00000000..c74e5979 --- /dev/null +++ b/src/core/SQL/SQLite/5/delete_ircservers_for_network.sql @@ -0,0 +1,2 @@ +DELETE FROM ircserver +WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/5/delete_network.sql b/src/core/SQL/SQLite/5/delete_network.sql new file mode 100644 index 00000000..7200ee4d --- /dev/null +++ b/src/core/SQL/SQLite/5/delete_network.sql @@ -0,0 +1,2 @@ +DELETE FROM network +WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/4/delete_networks_by_uid.sql b/src/core/SQL/SQLite/5/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/4/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/5/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/4/delete_quasseluser.sql b/src/core/SQL/SQLite/5/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/4/delete_quasseluser.sql rename to src/core/SQL/SQLite/5/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/4/insert_buffer.sql b/src/core/SQL/SQLite/5/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/4/insert_buffer.sql rename to src/core/SQL/SQLite/5/insert_buffer.sql diff --git a/src/core/SQL/SQLite/4/insert_message.sql b/src/core/SQL/SQLite/5/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/4/insert_message.sql rename to src/core/SQL/SQLite/5/insert_message.sql diff --git a/src/core/SQL/SQLite/4/insert_network.sql b/src/core/SQL/SQLite/5/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/4/insert_network.sql rename to src/core/SQL/SQLite/5/insert_network.sql diff --git a/src/core/SQL/SQLite/4/insert_quasseluser.sql b/src/core/SQL/SQLite/5/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/4/insert_quasseluser.sql rename to src/core/SQL/SQLite/5/insert_quasseluser.sql diff --git a/src/core/SQL/SQLite/4/insert_sender.sql b/src/core/SQL/SQLite/5/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/4/insert_sender.sql rename to src/core/SQL/SQLite/5/insert_sender.sql diff --git a/src/core/SQL/SQLite/5/insert_server.sql b/src/core/SQL/SQLite/5/insert_server.sql new file mode 100644 index 00000000..1a1d4bc9 --- /dev/null +++ b/src/core/SQL/SQLite/5/insert_server.sql @@ -0,0 +1,2 @@ +INSERT INTO ircserver (userid, networkid, hostname, port, password, ssl) +VALUES (:userid, :networkid, :hostname, :port, :password, :ssl) diff --git a/src/core/SQL/SQLite/4/select_authuser.sql b/src/core/SQL/SQLite/5/select_authuser.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_authuser.sql rename to src/core/SQL/SQLite/5/select_authuser.sql diff --git a/src/core/SQL/SQLite/4/select_bufferByName.sql b/src/core/SQL/SQLite/5/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_bufferByName.sql rename to src/core/SQL/SQLite/5/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/4/select_buffers.sql b/src/core/SQL/SQLite/5/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_buffers.sql rename to src/core/SQL/SQLite/5/select_buffers.sql diff --git a/src/core/SQL/SQLite/4/select_lastMessage.sql b/src/core/SQL/SQLite/5/select_lastMessage.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_lastMessage.sql rename to src/core/SQL/SQLite/5/select_lastMessage.sql diff --git a/src/core/SQL/SQLite/4/select_messageRange.sql b/src/core/SQL/SQLite/5/select_messageRange.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_messageRange.sql rename to src/core/SQL/SQLite/5/select_messageRange.sql diff --git a/src/core/SQL/SQLite/4/select_messages.sql b/src/core/SQL/SQLite/5/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_messages.sql rename to src/core/SQL/SQLite/5/select_messages.sql diff --git a/src/core/SQL/SQLite/4/select_messagesOffset.sql b/src/core/SQL/SQLite/5/select_messagesOffset.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_messagesOffset.sql rename to src/core/SQL/SQLite/5/select_messagesOffset.sql diff --git a/src/core/SQL/SQLite/4/select_messagesSince.sql b/src/core/SQL/SQLite/5/select_messagesSince.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_messagesSince.sql rename to src/core/SQL/SQLite/5/select_messagesSince.sql diff --git a/src/core/SQL/SQLite/4/select_messagesSinceOffset.sql b/src/core/SQL/SQLite/5/select_messagesSinceOffset.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_messagesSinceOffset.sql rename to src/core/SQL/SQLite/5/select_messagesSinceOffset.sql diff --git a/src/core/SQL/SQLite/5/select_networkExists.sql b/src/core/SQL/SQLite/5/select_networkExists.sql new file mode 100644 index 00000000..ce11c53a --- /dev/null +++ b/src/core/SQL/SQLite/5/select_networkExists.sql @@ -0,0 +1,3 @@ +SELECT networkname +FROM network +WHERE userid = :userid AND networkid = :networkid diff --git a/src/core/SQL/SQLite/5/select_networks_for_user.sql b/src/core/SQL/SQLite/5/select_networks_for_user.sql new file mode 100644 index 00000000..ff6d801e --- /dev/null +++ b/src/core/SQL/SQLite/5/select_networks_for_user.sql @@ -0,0 +1,5 @@ +SELECT networkid, networkname, identityid, usecustomencoding, encodingcodec, decodingcodec, + userandomserver, perform, useautoidentify, autoidentifyservice, autoidentifypassword, + useautoreconnect, autoreconnectinterval, autoreconnectretries, rejoinchannels +FROM network +WHERE userid = :userid \ No newline at end of file diff --git a/src/core/SQL/SQLite/5/select_servers_for_network.sql b/src/core/SQL/SQLite/5/select_servers_for_network.sql new file mode 100644 index 00000000..a8fb64fc --- /dev/null +++ b/src/core/SQL/SQLite/5/select_servers_for_network.sql @@ -0,0 +1,3 @@ +SELECT hostname, port, password, ssl +FROM ircserver +WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/4/select_userid.sql b/src/core/SQL/SQLite/5/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/4/select_userid.sql rename to src/core/SQL/SQLite/5/select_userid.sql diff --git a/src/core/SQL/SQLite/4/setup_000_quasseluser.sql b/src/core/SQL/SQLite/5/setup_000_quasseluser.sql similarity index 80% rename from src/core/SQL/SQLite/4/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/5/setup_000_quasseluser.sql index 10dd533b..37376f40 100644 --- a/src/core/SQL/SQLite/4/setup_000_quasseluser.sql +++ b/src/core/SQL/SQLite/5/setup_000_quasseluser.sql @@ -1,6 +1,7 @@ CREATE TABLE quasseluser ( userid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, - password BLOB NOT NULL) + password BLOB NOT NULL +) diff --git a/src/core/SQL/SQLite/5/setup_010_sender.sql b/src/core/SQL/SQLite/5/setup_010_sender.sql new file mode 100644 index 00000000..4e7251e7 --- /dev/null +++ b/src/core/SQL/SQLite/5/setup_010_sender.sql @@ -0,0 +1,6 @@ +CREATE TABLE sender ( -- THE SENDER OF IRC MESSAGES + senderid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + sender TEXT UNIQUE NOT NULL +) + + diff --git a/src/core/SQL/SQLite/5/setup_020_network.sql b/src/core/SQL/SQLite/5/setup_020_network.sql new file mode 100644 index 00000000..33a6fb81 --- /dev/null +++ b/src/core/SQL/SQLite/5/setup_020_network.sql @@ -0,0 +1,19 @@ +CREATE TABLE network ( + networkid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + networkname TEXT NOT NULL, + identityid INTEGER NOT NULL DEFAULT 1, + usecustomencoding INTEGER NOT NULL DEFAULT 0, -- BOOL + encodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", + decodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", + userandomserver INTEGER NOT NULL DEFAULT 0, -- BOOL + perform TEXT, + useautoidentify INTEGER NOT NULL DEFAULT 0, -- BOOL + autoidentifyservice TEXT, + autoidentifypassword TEXT, + useautoreconnect INTEGER NOT NULL DEFAULT 0, -- BOOL + autoreconnectinterval INTEGER NOT NULL DEFAULT 0, + autoreconnectretries INTEGER NOT NULL DEFAULT 0, + rejoinchannels INTEGER NOT NULL DEFAULT 0, -- BOOL + UNIQUE (userid, networkname) +) diff --git a/src/core/SQL/SQLite/4/setup_030_buffer.sql b/src/core/SQL/SQLite/5/setup_030_buffer.sql similarity index 71% rename from src/core/SQL/SQLite/4/setup_030_buffer.sql rename to src/core/SQL/SQLite/5/setup_030_buffer.sql index 9a118ff6..4387d5a4 100644 --- a/src/core/SQL/SQLite/4/setup_030_buffer.sql +++ b/src/core/SQL/SQLite/5/setup_030_buffer.sql @@ -4,5 +4,5 @@ CREATE TABLE buffer ( groupid INTEGER, networkid INTEGER NOT NULL, buffername TEXT NOT NULL, - buffercname TEXT NOT NULL + buffercname TEXT NOT NULL -- CANONICAL BUFFER NAME (lowercase version) ) diff --git a/src/core/SQL/SQLite/4/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/5/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/4/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/5/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/4/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/5/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/4/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/5/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/4/setup_060_backlog.sql b/src/core/SQL/SQLite/5/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/4/setup_060_backlog.sql rename to src/core/SQL/SQLite/5/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/4/setup_070_coreinfo.sql b/src/core/SQL/SQLite/5/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/4/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/5/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/5/setup_080_ircservers.sql b/src/core/SQL/SQLite/5/setup_080_ircservers.sql new file mode 100644 index 00000000..89a16986 --- /dev/null +++ b/src/core/SQL/SQLite/5/setup_080_ircservers.sql @@ -0,0 +1,9 @@ +CREATE TABLE ircserver ( + serverid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + networkid INTEGER NOT NULL, + hostname TEXT NOT NULL, + port INTEGER NOT NULL DEFAULT 6667, + password TEXT, + ssl INTEGER NOT NULL DEFAULT 0 +) diff --git a/src/core/SQL/SQLite/5/setup_999_version.sql b/src/core/SQL/SQLite/5/setup_999_version.sql new file mode 100644 index 00000000..11990519 --- /dev/null +++ b/src/core/SQL/SQLite/5/setup_999_version.sql @@ -0,0 +1 @@ +INSERT INTO coreinfo (key, value) VALUES ('schemaversion', '5') diff --git a/src/core/SQL/SQLite/5/update_network.sql b/src/core/SQL/SQLite/5/update_network.sql new file mode 100644 index 00000000..41c0da3a --- /dev/null +++ b/src/core/SQL/SQLite/5/update_network.sql @@ -0,0 +1,16 @@ +UPDATE network SET +networkname = :networkname, +identityid = :identityid, +usecustomencoding = :usecustomencoding, +encodingcodec = :encodingcodec, +decodingcodec = :decodingcodec, +userandomserver = :userandomserver, +perform = :perform, +useautoidentify = :useautoidentify, +autoidentifyservice = :autoidentifyservice, +autoidentifypassword = :autoidentifypassword, +useautoreconnect = :useautoreconnect, +autoreconnectinterval = :autoreconnectinterval, +autoreconnectretries = :autoreconnectretries, +rejoinchannels = :rejoinchannels +WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/4/update_username.sql b/src/core/SQL/SQLite/5/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/4/update_username.sql rename to src/core/SQL/SQLite/5/update_username.sql diff --git a/src/core/SQL/SQLite/4/update_userpassword.sql b/src/core/SQL/SQLite/5/update_userpassword.sql similarity index 100% rename from src/core/SQL/SQLite/4/update_userpassword.sql rename to src/core/SQL/SQLite/5/update_userpassword.sql diff --git a/src/core/SQL/SQLite/5/upgrade_000_rename_networktable.sql b/src/core/SQL/SQLite/5/upgrade_000_rename_networktable.sql new file mode 100644 index 00000000..0dc9ef4d --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_000_rename_networktable.sql @@ -0,0 +1 @@ +ALTER TABLE network RENAME TO networkold diff --git a/src/core/SQL/SQLite/5/upgrade_010_create_newnetworktable.sql b/src/core/SQL/SQLite/5/upgrade_010_create_newnetworktable.sql new file mode 100644 index 00000000..33a6fb81 --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_010_create_newnetworktable.sql @@ -0,0 +1,19 @@ +CREATE TABLE network ( + networkid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + networkname TEXT NOT NULL, + identityid INTEGER NOT NULL DEFAULT 1, + usecustomencoding INTEGER NOT NULL DEFAULT 0, -- BOOL + encodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", + decodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", + userandomserver INTEGER NOT NULL DEFAULT 0, -- BOOL + perform TEXT, + useautoidentify INTEGER NOT NULL DEFAULT 0, -- BOOL + autoidentifyservice TEXT, + autoidentifypassword TEXT, + useautoreconnect INTEGER NOT NULL DEFAULT 0, -- BOOL + autoreconnectinterval INTEGER NOT NULL DEFAULT 0, + autoreconnectretries INTEGER NOT NULL DEFAULT 0, + rejoinchannels INTEGER NOT NULL DEFAULT 0, -- BOOL + UNIQUE (userid, networkname) +) diff --git a/src/core/SQL/SQLite/5/upgrade_020_copy_networktable.sql b/src/core/SQL/SQLite/5/upgrade_020_copy_networktable.sql new file mode 100644 index 00000000..975018b6 --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_020_copy_networktable.sql @@ -0,0 +1,2 @@ +INSERT INTO network (networkid, userid, networkname) +SELECT networkid, userid, networkname FROM networkold; diff --git a/src/core/SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql b/src/core/SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql new file mode 100644 index 00000000..9073c436 --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql @@ -0,0 +1 @@ +DROP TABLE networkold diff --git a/src/core/SQL/SQLite/5/upgrade_180_create_ircservers.sql b/src/core/SQL/SQLite/5/upgrade_180_create_ircservers.sql new file mode 100644 index 00000000..3afca5e8 --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_180_create_ircservers.sql @@ -0,0 +1,9 @@ +CREATE TABLE ircserver ( + serverid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + networkid INTEGER NOT NULL, + hostname TEXT NOT NULL, + port INTEGER NOT NULL DEFAULT 6667, + password TEXT, + ssl INTEGER NOT NULL DEFAULT 0 -- BOOL +) diff --git a/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql b/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql new file mode 100644 index 00000000..1606e175 --- /dev/null +++ b/src/core/SQL/SQLite/5/upgrade_999_update_schemaversion.sql @@ -0,0 +1,3 @@ +UPDATE coreinfo +SET value='5' +WHERE key = 'schemaversion' diff --git a/src/core/core.cpp b/src/core/core.cpp index e03543d7..407eac8f 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -205,9 +205,9 @@ void Core::syncStorage() { } /*** Storage Access ***/ -bool Core::createNetworkId(UserId user, NetworkInfo &info) { +bool Core::createNetwork(UserId user, NetworkInfo &info) { QMutexLocker locker(&mutex); - NetworkId networkId = instance()->storage->createNetworkId(user, info); + NetworkId networkId = instance()->storage->createNetwork(user, info); if(!networkId.isValid()) return false; @@ -215,6 +215,21 @@ bool Core::createNetworkId(UserId user, NetworkInfo &info) { return true; } +bool Core::updateNetwork(UserId user, const NetworkInfo &info) { + QMutexLocker locker(&mutex); + return instance()->storage->updateNetwork(user, info); +} + +bool Core::removeNetwork(UserId user, const NetworkId &networkId) { + QMutexLocker locker(&mutex); + return instance()->storage->removeNetwork(user, networkId); +} + +QList Core::networks(UserId user) { + QMutexLocker locker(&mutex); + return instance()->storage->networks(user); +} + NetworkId Core::networkId(UserId user, const QString &network) { QMutexLocker locker(&mutex); return instance()->storage->getNetworkId(user, network); diff --git a/src/core/core.h b/src/core/core.h index 6b0126ca..7f1f9c20 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -53,15 +53,41 @@ class Core : public QObject { /*** Storage access ***/ // These methods are threadsafe. - //! Create a NetworkId in the Storage and store it in the given NetworkInfo + //! Create a Network in the Storage and store it's Id in the given NetworkInfo /** \note This method is thredsafe. * * \param user The core user * \param networkInfo a NetworkInfo definition to store the newly created ID in * \return true if successfull. */ - static bool createNetworkId(UserId user, NetworkInfo &info); + static bool createNetwork(UserId user, NetworkInfo &info); + //! Apply the changes to NetworkInfo info to the storage engine + /** \note This method is thredsafe. + * + * \param user The core user + * \param networkInfo The Updated NetworkInfo + * \return true if successfull. + */ + static bool updateNetwork(UserId user, const NetworkInfo &info); + + //! Permanently remove a Network and all the data associated with it. + /** \note This method is thredsafe. + * + * \param user The core user + * \param networkId The network to delete + * \return true if successfull. + */ + static bool removeNetwork(UserId user, const NetworkId &networkId); + + //! Returns a list of all NetworkInfos for the given UserId user + /** \note This method is thredsafe. + * + * \param user The core user + * \return QList. + */ + static QList networks(UserId user); + //! Get the NetworkId for a network name. /** \note This method is threadsafe. * diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 8e667380..33aeae8c 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -128,38 +128,21 @@ void CoreSession::loadSettings() { createIdentity(i); } - // FIXME switch to a pure DB storage - foreach(NetworkId id, s.networkIds()) { - NetworkInfo info = s.networkInfo(id); - createNetwork(info); - } - // FIXME Migrate old settings if available... - if(!_networks.count()) { - QVariantMap networks = s.sessionValue("Networks").toMap(); - if(networks.keys().count()) { - qWarning() << "Migrating your old network settings to the new format!"; - foreach(QString netname, networks.keys()) { - QVariantMap network = networks[netname].toMap(); - NetworkId netid = Core::networkId(user(), netname); - NetworkInfo info; - info.networkId = netid; - info.networkName = netname; - info.identity = 1; - info.codecForEncoding = "ISO-8859-15"; - info.codecForDecoding = "ISO-8859-15"; - QVariantList slist; - foreach(QVariant v, network["Servers"].toList()) { - QVariantMap server; - server["Host"] = v.toMap()["Address"]; - server["Port"] = v.toMap()["Port"]; - slist << server; - } - info.serverList = slist; - createNetwork(info); - } + // migration to pure DB storage + QList netIds = s.networkIds(); + if(!netIds.isEmpty()) { + qDebug() << "Migrating Networksettings to DB Storage for User:" << user(); + foreach(NetworkId id, netIds) { + NetworkInfo info = s.networkInfo(id); + Core::updateNetwork(user(), info); + s.removeNetworkInfo(id); } } + + foreach(NetworkInfo info, Core::networks(user())) { + createNetwork(info); + } } void CoreSession::saveSessionState() const { @@ -419,7 +402,7 @@ void CoreSession::createNetwork(const NetworkInfo &info_) { int id; if(!info.networkId.isValid()) - Core::createNetworkId(user(), info); + Core::createNetwork(user(), info); Q_ASSERT(info.networkId.isValid()); @@ -433,8 +416,6 @@ void CoreSession::createNetwork(const NetworkInfo &info_) { net->setProxy(signalProxy()); _networks[id] = net; signalProxy()->synchronize(net); - CoreUserSettings s(user()); - s.storeNetworkInfo(info); emit networkCreated(id); } @@ -444,16 +425,13 @@ void CoreSession::updateNetwork(const NetworkInfo &info) { return; } _networks[info.networkId]->setNetworkInfo(info); - CoreUserSettings s(user()); - s.storeNetworkInfo(info); + Core::updateNetwork(user(), info); } void CoreSession::removeNetwork(NetworkId id) { Network *net = _networks.take(id); - if(net) { + if(net && Core::removeNetwork(user(), id)) { emit networkRemoved(id); - CoreUserSettings s(user()); - s.removeNetworkInfo(id); net->deleteLater(); } } diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 7b75c7e2..be8a4348 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -7,36 +7,6 @@ ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/4/delete_backlog_by_uid.sql - ./SQL/SQLite/4/delete_buffers_by_uid.sql - ./SQL/SQLite/4/delete_networks_by_uid.sql - ./SQL/SQLite/4/delete_quasseluser.sql - ./SQL/SQLite/4/insert_buffer.sql - ./SQL/SQLite/4/insert_message.sql - ./SQL/SQLite/4/insert_network.sql - ./SQL/SQLite/4/insert_quasseluser.sql - ./SQL/SQLite/4/insert_sender.sql - ./SQL/SQLite/4/select_authuser.sql - ./SQL/SQLite/4/select_bufferByName.sql - ./SQL/SQLite/4/select_buffers.sql - ./SQL/SQLite/4/select_lastMessage.sql - ./SQL/SQLite/4/select_messageRange.sql - ./SQL/SQLite/4/select_messages.sql - ./SQL/SQLite/4/select_messagesOffset.sql - ./SQL/SQLite/4/select_messagesSince.sql - ./SQL/SQLite/4/select_messagesSinceOffset.sql - ./SQL/SQLite/4/select_userid.sql - ./SQL/SQLite/4/setup_000_quasseluser.sql - ./SQL/SQLite/4/setup_010_sender.sql - ./SQL/SQLite/4/setup_020_network.sql - ./SQL/SQLite/4/setup_030_buffer.sql - ./SQL/SQLite/4/setup_040_buffer_idx.sql - ./SQL/SQLite/4/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/4/setup_060_backlog.sql - ./SQL/SQLite/4/setup_070_coreinfo.sql - ./SQL/SQLite/4/setup_080_version.sql - ./SQL/SQLite/4/update_username.sql - ./SQL/SQLite/4/update_userpassword.sql ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql ./SQL/SQLite/4/upgrade_010_create_buffertable.sql ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql @@ -44,5 +14,51 @@ ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql ./SQL/SQLite/4/upgrade_999_update_schemaversion.sql + ./SQL/SQLite/5/delete_backlog_by_uid.sql + ./SQL/SQLite/5/delete_backlog_for_network.sql + ./SQL/SQLite/5/delete_buffers_by_uid.sql + ./SQL/SQLite/5/delete_buffers_for_network.sql + ./SQL/SQLite/5/delete_ircservers_for_network.sql + ./SQL/SQLite/5/delete_network.sql + ./SQL/SQLite/5/delete_networks_by_uid.sql + ./SQL/SQLite/5/delete_quasseluser.sql + ./SQL/SQLite/5/insert_buffer.sql + ./SQL/SQLite/5/insert_message.sql + ./SQL/SQLite/5/insert_network.sql + ./SQL/SQLite/5/insert_quasseluser.sql + ./SQL/SQLite/5/insert_sender.sql + ./SQL/SQLite/5/insert_server.sql + ./SQL/SQLite/5/select_authuser.sql + ./SQL/SQLite/5/select_bufferByName.sql + ./SQL/SQLite/5/select_buffers.sql + ./SQL/SQLite/5/select_lastMessage.sql + ./SQL/SQLite/5/select_messageRange.sql + ./SQL/SQLite/5/select_messages.sql + ./SQL/SQLite/5/select_messagesOffset.sql + ./SQL/SQLite/5/select_messagesSince.sql + ./SQL/SQLite/5/select_messagesSinceOffset.sql + ./SQL/SQLite/5/select_networkExists.sql + ./SQL/SQLite/5/select_networks_for_user.sql + ./SQL/SQLite/5/select_servers_for_network.sql + ./SQL/SQLite/5/select_userid.sql + ./SQL/SQLite/5/setup_000_quasseluser.sql + ./SQL/SQLite/5/setup_010_sender.sql + ./SQL/SQLite/5/setup_020_network.sql + ./SQL/SQLite/5/setup_030_buffer.sql + ./SQL/SQLite/5/setup_040_buffer_idx.sql + ./SQL/SQLite/5/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/5/setup_060_backlog.sql + ./SQL/SQLite/5/setup_070_coreinfo.sql + ./SQL/SQLite/5/setup_080_ircservers.sql + ./SQL/SQLite/5/setup_999_version.sql + ./SQL/SQLite/5/update_network.sql + ./SQL/SQLite/5/update_username.sql + ./SQL/SQLite/5/update_userpassword.sql + ./SQL/SQLite/5/upgrade_000_rename_networktable.sql + ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/5/upgrade_180_create_ircservers.sql + ./SQL/SQLite/5/upgrade_999_update_schemaversion.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index a20640c4..893fbcdc 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -141,7 +141,7 @@ void SqliteStorage::delUser(UserId user) { emit userRemoved(user); } -NetworkId SqliteStorage::createNetworkId(UserId user, const NetworkInfo &info) { +NetworkId SqliteStorage::createNetwork(UserId user, const NetworkInfo &info) { NetworkId networkId; QSqlQuery query(logDb()); query.prepare(queryString("insert_network")); @@ -152,10 +152,187 @@ NetworkId SqliteStorage::createNetworkId(UserId user, const NetworkInfo &info) { networkId = getNetworkId(user, info.networkName); if(!networkId.isValid()) { watchQuery(&query); + } else { + updateNetwork(user, info); } return networkId; } +bool SqliteStorage::updateNetwork(UserId user, const NetworkInfo &info) { + if(!isValidNetwork(user, info.networkId)) + return false; + + QSqlQuery updateQuery(logDb()); + updateQuery.prepare(queryString("update_network")); + updateQuery.bindValue(":networkname", info.networkName); + updateQuery.bindValue(":identityid", info.identity.toInt()); + updateQuery.bindValue(":usecustomencoding", info.useCustomEncodings ? 1 : 0); + updateQuery.bindValue(":encodingcodec", QString(info.codecForEncoding)); + updateQuery.bindValue(":decodingcodec", QString(info.codecForDecoding)); + updateQuery.bindValue(":userandomserver", info.useRandomServer ? 1 : 0); + updateQuery.bindValue(":perform", info.perform.join("\n")); + updateQuery.bindValue(":useautoidentify", info.useAutoIdentify ? 1 : 0); + updateQuery.bindValue(":autoidentifyservice", info.autoIdentifyService); + updateQuery.bindValue(":autoidentifypassword", info.autoIdentifyPassword); + updateQuery.bindValue(":useautoreconnect", info.useAutoReconnect ? 1 : 0); + updateQuery.bindValue(":autoreconnectinterval", info.autoReconnectInterval); + updateQuery.bindValue(":autoreconnectretries", info.autoReconnectRetries); + updateQuery.bindValue(":rejoinchannels", info.rejoinChannels ? 1 : 0); + updateQuery.bindValue(":networkid", info.networkId.toInt()); + updateQuery.exec(); + if(!watchQuery(&updateQuery)) + return false; + + QSqlQuery dropServersQuery(logDb()); + dropServersQuery.prepare("DELETE FROM ircserver WHERE networkid = :networkid"); + dropServersQuery.bindValue(":networkid", info.networkId.toInt()); + dropServersQuery.exec(); + if(!watchQuery(&dropServersQuery)) + return false; + + QSqlQuery insertServersQuery(logDb()); + insertServersQuery.prepare(queryString("insert_server")); + foreach(QVariant server_, info.serverList) { + QVariantMap server = server_.toMap(); + insertServersQuery.bindValue(":hostname", server["Host"]); + insertServersQuery.bindValue(":port", server["Port"].toInt()); + insertServersQuery.bindValue(":password", server["Password"]); + insertServersQuery.bindValue(":ssl", server["UseSSL"].toBool() ? 1 : 0); + insertServersQuery.bindValue(":userid", user.toInt()); + insertServersQuery.bindValue(":networkid", info.networkId.toInt()); + + insertServersQuery.exec(); + if(!watchQuery(&insertServersQuery)) + return false; + } + + return true; +} + +bool SqliteStorage::removeNetwork(UserId user, const NetworkId &networkId) { + if(!isValidNetwork(user, networkId)) + return false; + + bool withTransaction = logDb().driver()->hasFeature(QSqlDriver::Transactions); + if(withTransaction) { + sync(); + if(!logDb().transaction()) { + qWarning() << "SqliteStorage::removeNetwork(): cannot start transaction. continuing with out rollback support!"; + withTransaction = false; + } + } + + QSqlQuery deleteBacklogQuery(logDb()); + deleteBacklogQuery.prepare(queryString("delete_backlog_for_network")); + deleteBacklogQuery.bindValue(":networkid", networkId.toInt()); + deleteBacklogQuery.exec(); + if(!watchQuery(&deleteBacklogQuery)) { + if(withTransaction) + logDb().rollback(); + return false; + } + + QSqlQuery deleteBuffersQuery(logDb()); + deleteBuffersQuery.prepare(queryString("delete_buffers_for_network")); + deleteBuffersQuery.bindValue(":networkid", networkId.toInt()); + deleteBuffersQuery.exec(); + if(!watchQuery(&deleteBuffersQuery)) { + if(withTransaction) + logDb().rollback(); + return false; + } + + QSqlQuery deleteServersQuery(logDb()); + deleteServersQuery.prepare(queryString("delete_ircservers_for_network")); + deleteServersQuery.bindValue(":networkid", networkId.toInt()); + deleteServersQuery.exec(); + if(!watchQuery(&deleteServersQuery)) { + if(withTransaction) + logDb().rollback(); + return false; + } + + QSqlQuery deleteNetworkQuery(logDb()); + deleteNetworkQuery.prepare(queryString("delete_network")); + deleteNetworkQuery.bindValue(":networkid", networkId.toInt()); + deleteNetworkQuery.exec(); + if(!watchQuery(&deleteNetworkQuery)) { + if(withTransaction) + logDb().rollback(); + return false; + } + + logDb().commit(); + return true; +} + +QList SqliteStorage::networks(UserId user) { + QList nets; + + QSqlQuery networksQuery(logDb()); + networksQuery.prepare(queryString("select_networks_for_user")); + networksQuery.bindValue(":userid", user.toInt()); + + QSqlQuery serversQuery(logDb()); + serversQuery.prepare(queryString("select_servers_for_network")); + + networksQuery.exec(); + if(!watchQuery(&networksQuery)) + return nets; + + while(networksQuery.next()) { + NetworkInfo net; + net.networkId = networksQuery.value(0).toInt(); + net.networkName = networksQuery.value(1).toString(); + net.identity = networksQuery.value(2).toInt(); + net.useCustomEncodings = networksQuery.value(3).toInt() == 1 ? true : false; + net.codecForEncoding = networksQuery.value(4).toString().toAscii(); + net.codecForDecoding = networksQuery.value(5).toString().toAscii(); + net.useRandomServer = networksQuery.value(6).toInt() == 1 ? true : false; + net.perform = networksQuery.value(7).toString().split("\n"); + net.useAutoIdentify = networksQuery.value(8).toInt() == 1 ? true : false; + net.autoIdentifyService = networksQuery.value(9).toString(); + net.autoIdentifyPassword = networksQuery.value(10).toString(); + net.useAutoReconnect = networksQuery.value(11).toInt() == 1 ? true : false; + net.autoReconnectInterval = networksQuery.value(12).toUInt(); + net.autoReconnectRetries = networksQuery.value(13).toInt(); + net.rejoinChannels = networksQuery.value(14).toInt() == 1 ? true : false; + + serversQuery.bindValue(":networkid", net.networkId.toInt()); + serversQuery.exec(); + if(!watchQuery(&serversQuery)) + return nets; + + QVariantList servers; + while(serversQuery.next()) { + QVariantMap server; + server["Host"] = serversQuery.value(0).toString(); + server["Port"] = serversQuery.value(1).toInt(); + server["Password"] = serversQuery.value(2).toString(); + server["UseSSL"] = serversQuery.value(3).toInt() == 1 ? true : false; + servers << server; + } + net.serverList = servers; + nets << net; + } + return nets; +} + +bool SqliteStorage::isValidNetwork(UserId user, const NetworkId &networkId) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_networkExists")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":networkid", networkId.toInt()); + query.exec(); + + watchQuery(&query); // there should not occur any errors + if(!query.first()) + return false; + + Q_ASSERT(!query.next()); + return true; +} + NetworkId SqliteStorage::getNetworkId(UserId user, const QString &network) { QSqlQuery query(logDb()); query.prepare("SELECT networkid FROM network " diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index b6ba7482..bee848bc 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -52,7 +52,10 @@ public slots: virtual void delUser(UserId user); /* Network handling */ - virtual NetworkId createNetworkId(UserId user, const NetworkInfo &info); + virtual NetworkId createNetwork(UserId user, const NetworkInfo &info); + virtual bool updateNetwork(UserId user, const NetworkInfo &info); + virtual bool removeNetwork(UserId user, const NetworkId &networkId); + virtual QList networks(UserId user); /* Buffer handling */ virtual BufferInfo getBufferInfo(UserId user, const NetworkId &networkId, const QString &buffer = ""); @@ -72,6 +75,7 @@ protected: private: static QString backlogFile(); + bool isValidNetwork(UserId user, const NetworkId &networkId); NetworkId getNetworkId(UserId user, const QString &network); void createBuffer(UserId user, const NetworkId &networkId, const QString &buffer); }; diff --git a/src/core/storage.h b/src/core/storage.h index 649bdc46..95bbb2d3 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -25,7 +25,7 @@ #include "types.h" #include "message.h" -struct NetworkInfo; +#include "network.h" class Storage : public QObject { Q_OBJECT @@ -109,13 +109,39 @@ class Storage : public QObject { /* Network handling */ - //! Create a new unique Network in the storage backend + //! Create a new Network in the storage backend and return it unique Id /** \param user The core user who owns this network * \param networkInfo The networkInfo holding the network definition * \return the NetworkId of the newly created Network. Possibly invalid. */ - virtual NetworkId createNetworkId(UserId user, const NetworkInfo &info) = 0; + virtual NetworkId createNetwork(UserId user, const NetworkInfo &info) = 0; + //! Apply the changes to NetworkInfo info to the storage engine + /** \note This method is thredsafe. + * + * \param user The core user + * \param networkInfo The Updated NetworkInfo + * \return true if successfull. + */ + virtual bool updateNetwork(UserId user, const NetworkInfo &info) = 0; + + //! Permanently remove a Network and all the data associated with it. + /** \note This method is thredsafe. + * + * \param user The core user + * \param networkId The network to delete + * \return true if successfull. + */ + virtual bool removeNetwork(UserId user, const NetworkId &networkId) = 0; + + //! Returns a list of all NetworkInfos for the given UserId user + /** \note This method is thredsafe. + * + * \param user The core user + * \return QList. + */ + virtual QList networks(UserId user) = 0; + //! Get the unique NetworkId of the network for a user. /** \param user The core user who owns this network * \param network The network name diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 8b448e00..4fb60da2 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -175,10 +175,6 @@ void NetworksSettingsPage::setWidgetStates() { ui.upServer->setEnabled(false); ui.downServer->setEnabled(false); } - - // FIXME disable network creation/deletion because of the storage issue - ui.deleteNetwork->setEnabled(false); - ui.renameNetwork->setEnabled(false); } void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) { @@ -418,8 +414,7 @@ void NetworksSettingsPage::on_deleteNetwork_clicked() { if(ui.networkList->selectedItems().count()) { NetworkId netid = ui.networkList->selectedItems()[0]->data(Qt::UserRole).value(); int ret = QMessageBox::question(this, tr("Delete Network?"), - tr("Do you really want to delete the network \"%1\" and all related settings, including the backlog?" - "

NOTE: Backlog deletion hasn't actually been implemented yet.").arg(networkInfos[netid].networkName), + tr("Do you really want to delete the network \"%1\" and all related settings, including the backlog?").arg(networkInfos[netid].networkName), QMessageBox::Yes|QMessageBox::No, QMessageBox::No); if(ret == QMessageBox::Yes) { currentId = 0; diff --git a/version.inc b/version.inc index 5e2776f9..0f7e9ec6 100644 --- a/version.inc +++ b/version.inc @@ -5,14 +5,14 @@ quasselVersion = "0.2.0-pre"; quasselDate = "2008-02-11"; - quasselBuild = 505; + quasselBuild = 506; //! Minimum client build number the core needs clientBuildNeeded = 480; clientVersionNeeded = quasselVersion; //! Minimum core build number the client needs - coreBuildNeeded = 480; + coreBuildNeeded = 506; coreVersionNeeded = quasselVersion; }