/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#include "client.h"
+#include <QStringList>
+
+
#include "clientsettings.h"
-#include "global.h"
-#include <QStringList>
+#include <QHostAddress>
+#ifdef HAVE_SSL
+#include <QSslSocket>
+#endif
-ClientSettings::ClientSettings(QString g) : Settings(g, Global::clientApplicationName) {
+#include "client.h"
+#include "quassel.h"
+ClientSettings::ClientSettings(QString g) : Settings(g, Quassel::buildInfo().clientApplicationName) {
}
ClientSettings::~ClientSettings() {
+}
+/***********************************************************************************************/
+
+CoreAccountSettings::CoreAccountSettings(const QString &subgroup)
+ : ClientSettings("CoreAccounts"),
+ _subgroup(subgroup)
+{
+}
+
+void CoreAccountSettings::notify(const QString &key, QObject *receiver, const char *slot) {
+ ClientSettings::notify(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), receiver, slot);
+}
+
+QList<AccountId> CoreAccountSettings::knownAccounts() {
+ QList<AccountId> ids;
+ foreach(QString key, localChildGroups()) {
+ AccountId acc = key.toInt();
+ if(acc.isValid()) ids << acc;
+ }
+ return ids;
+}
+AccountId CoreAccountSettings::lastAccount() {
+ return localValue("LastAccount", 0).toInt();
}
-QStringList ClientSettings::sessionKeys() {
- return Client::sessionDataKeys();
+void CoreAccountSettings::setLastAccount(AccountId account) {
+ setLocalValue("LastAccount", account.toInt());
}
-void ClientSettings::setSessionValue(const QString &key, const QVariant &data) {
- Client::storeSessionData(key, data);
+AccountId CoreAccountSettings::autoConnectAccount() {
+ return localValue("AutoConnectAccount", 0).toInt();
}
-QVariant ClientSettings::sessionValue(const QString &key, const QVariant &def) {
- return Client::retrieveSessionData(key, def);
+void CoreAccountSettings::setAutoConnectAccount(AccountId account) {
+ setLocalValue("AutoConnectAccount", account.toInt());
+}
+
+void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) {
+ setLocalValue(QString("%1/Connection").arg(id.toInt()), data);
+}
+
+QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) {
+ return localValue(QString("%1/Connection").arg(id.toInt()), QVariant()).toMap();
+}
+
+void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) {
+ if(!Client::currentCoreAccount().isValid()) return;
+ setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), value);
+}
+
+QVariant CoreAccountSettings::accountValue(const QString &key, const QVariant &def) {
+ if(!Client::currentCoreAccount().isValid()) return QVariant();
+ return localValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), def);
+}
+
+void CoreAccountSettings::setJumpKeyMap(const QHash<int, BufferId> &keyMap) {
+ QVariantMap variants;
+ QHash<int, BufferId>::const_iterator mapIter = keyMap.constBegin();
+ while(mapIter != keyMap.constEnd()) {
+ variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value());
+ mapIter++;
+ }
+ setLocalValue("JumpKeyMap", variants);
+}
+
+QHash<int, BufferId> CoreAccountSettings::jumpKeyMap() {
+ QHash<int, BufferId> keyMap;
+ QVariantMap variants = localValue("JumpKeyMap", QVariant()).toMap();
+ QVariantMap::const_iterator mapIter = variants.constBegin();
+ while(mapIter != variants.constEnd()) {
+ keyMap[mapIter.key().toInt()] = mapIter.value().value<BufferId>();
+ mapIter++;
+ }
+ return keyMap;
}
+void CoreAccountSettings::removeAccount(AccountId id) {
+ removeLocalKey(QString("%1").arg(id.toInt()));
+}
+
+
/***********************************************************************************************/
+// NotificationSettings:
-CoreAccountSettings::CoreAccountSettings() : ClientSettings("CoreAccounts") {
+NotificationSettings::NotificationSettings() : ClientSettings("Notification") {
+}
+void NotificationSettings::setHighlightList(const QVariantList &highlightList) {
+ setLocalValue("Highlights/CustomList", highlightList);
+}
+QVariantList NotificationSettings::highlightList() {
+ return localValue("Highlights/CustomList").toList();
}
-QStringList CoreAccountSettings::knownAccounts() {
- return localChildKeys("Accounts");
+void NotificationSettings::setHighlightNick(NotificationSettings::HighlightNickType highlightNickType) {
+ setLocalValue("Highlights/HighlightNick", highlightNickType);
}
-QString CoreAccountSettings::lastAccount() {
- return localValue("LastAccount", "").toString();
+NotificationSettings::HighlightNickType NotificationSettings::highlightNick() {
+ return (NotificationSettings::HighlightNickType) localValue("Highlights/HighlightNick", CurrentNick).toInt();
}
-void CoreAccountSettings::setLastAccount(const QString &account) {
- setLocalValue("LastAccount", account);
+void NotificationSettings::setNicksCaseSensitive(bool cs) {
+ setLocalValue("Highlights/NicksCaseSensitive", cs);
}
-QString CoreAccountSettings::autoConnectAccount() {
- return localValue("AutoConnectAccount", "").toString();
+bool NotificationSettings::nicksCaseSensitive() {
+ return localValue("Highlights/NicksCaseSensitive", false).toBool();
}
-void CoreAccountSettings::setAutoConnectAccount(const QString &account) {
- setLocalValue("AutoConnectAccount", account);
+
+// ========================================
+// KnownHostsSettings
+// ========================================
+KnownHostsSettings::KnownHostsSettings()
+ : ClientSettings("KnownHosts")
+{
}
-void CoreAccountSettings::storeAccount(const QString name, const QVariantMap &data) {
- setLocalValue(QString("Accounts/%2").arg(name), data);
+QByteArray KnownHostsSettings::knownDigest(const QHostAddress &address) {
+ return localValue(address.toString(), QByteArray()).toByteArray();
}
-QVariantMap CoreAccountSettings::retrieveAccount(const QString &name) {
- return localValue(QString("Accounts/%2").arg(name), QVariant()).toMap();
+void KnownHostsSettings::saveKnownHost(const QHostAddress &address, const QByteArray &certDigest) {
+ setLocalValue(address.toString(), certDigest);
}
-void CoreAccountSettings::storeAllAccounts(const QHash<QString, QVariantMap> accounts) {
- removeLocalKey(QString("Accounts"));
- foreach(QString name, accounts.keys()) {
- storeAccount(name, accounts[name]);
- }
+bool KnownHostsSettings::isKnownHost(const QHostAddress &address, const QByteArray &certDigest) {
+ return certDigest == localValue(address.toString(), QByteArray()).toByteArray();
}
-QHash<QString, QVariantMap> CoreAccountSettings::retrieveAllAccounts() {
- QHash<QString, QVariantMap> accounts;
- foreach(QString name, knownAccounts()) {
- accounts[name] = retrieveAccount(name);
- }
- return accounts;
+#ifdef HAVE_SSL
+QByteArray KnownHostsSettings::knownDigest(const QSslSocket *socket) {
+ return knownDigest(socket->peerAddress());
+}
+
+void KnownHostsSettings::saveKnownHost(const QSslSocket *socket) {
+ Q_ASSERT(socket);
+ saveKnownHost(socket->peerAddress(), socket->peerCertificate().digest());
+}
+
+bool KnownHostsSettings::isKnownHost(const QSslSocket *socket) {
+ Q_ASSERT(socket);
+ return isKnownHost(socket->peerAddress(), socket->peerCertificate().digest());
+}
+#endif
+
+
+// ========================================
+// TabCompletionSettings
+// ========================================
+
+TabCompletionSettings::TabCompletionSettings() : ClientSettings("TabCompletion") {
+}
+
+void TabCompletionSettings::setCompletionSuffix(const QString &suffix) {
+ setLocalValue("CompletionSuffix", suffix);
+}
+
+QString TabCompletionSettings::completionSuffix() {
+ return localValue("CompletionSuffix", ": ").toString();
+}
+
+void TabCompletionSettings::setSortMode(SortMode mode) {
+ setLocalValue("SortMode", mode);
+}
+
+TabCompletionSettings::SortMode TabCompletionSettings::sortMode() {
+ return static_cast<SortMode>(localValue("SortMode"), LastActivity);
}
-void CoreAccountSettings::removeAccount(const QString &account) {
- removeLocalKey(QString("Accounts/%1").arg(account));
+void TabCompletionSettings::setCaseSensitivity(Qt::CaseSensitivity cs) {
+ setLocalValue("CaseSensitivity", cs);
}
+Qt::CaseSensitivity TabCompletionSettings::caseSensitivity() {
+ return (Qt::CaseSensitivity)localValue("CaseSensitivity", Qt::CaseInsensitive).toInt();
+}
+void TabCompletionSettings::setUseLastSpokenTo(bool use) {
+ setLocalValue("UseLastSpokenTo", use);
+}
+
+bool TabCompletionSettings::useLastSpokenTo() {
+ return localValue("UseLastSpokenTo", false).toBool();
+}