X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=ea19ca9684b3c5fd73737e67a14f7b039f121d6a;hp=b1d3d2688090a07a8a407d9ee3ecedc2e3f4542d;hb=f2e4609f070221a010eef8be98524c5ce88d228b;hpb=4b600109a862705eaf44e59ca7bddb56b0663732 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index b1d3d268..ea19ca96 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -133,6 +133,49 @@ void SqliteStorage::delUser(UserId user) { emit userRemoved(user); } +void SqliteStorage::setUserSetting(UserId userId, const QString &settingName, const QVariant &data) { + QByteArray rawData; + QDataStream out(&rawData, QIODevice::WriteOnly); + out.setVersion(QDataStream::Qt_4_2); + out << data; + + QSqlQuery query(logDb()); + query.prepare(queryString("insert_user_setting")); + query.bindValue(":userid", userId.toInt()); + query.bindValue(":settingname", settingName); + query.bindValue(":settingvalue", rawData); + query.exec(); + + if(query.lastError().isValid()) { + QSqlQuery updateQuery(logDb()); + updateQuery.prepare(queryString("update_user_setting")); + updateQuery.bindValue(":userid", userId.toInt()); + updateQuery.bindValue(":settingname", settingName); + updateQuery.bindValue(":settingvalue", rawData); + updateQuery.exec(); + } + +} + +QVariant SqliteStorage::getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultData) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_user_setting")); + query.bindValue(":userid", userId.toInt()); + query.bindValue(":settingname", settingName); + query.exec(); + + if(query.first()) { + QVariant data; + QByteArray rawData = query.value(0).toByteArray(); + QDataStream in(&rawData, QIODevice::ReadOnly); + in.setVersion(QDataStream::Qt_4_2); + in >> data; + return data; + } else { + return defaultData; + } +} + NetworkId SqliteStorage::createNetwork(UserId user, const NetworkInfo &info) { NetworkId networkId; QSqlQuery query(logDb());