X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsettings.cpp;h=fd8446b8ba3a88217226d8b1fcf35bc8b72068ba;hp=6f40a2354563ec15e2568a4a4e1968fb3090f85a;hb=921e54680da16fcf2adb7a90506875aceb6633a4;hpb=44b22c4419f478a20f6324f9f3a700a2dec56302 diff --git a/src/client/clientsettings.cpp b/src/client/clientsettings.cpp index 6f40a235..fd8446b8 100644 --- a/src/client/clientsettings.cpp +++ b/src/client/clientsettings.cpp @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel IRC Development Team * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -15,73 +15,414 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "client.h" +#include + #include "clientsettings.h" -#include +#include +#ifdef HAVE_SSL +#include +#endif + +#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().accountId().toInt()).arg(_subgroup).arg(key), receiver, slot); +} + + +QList CoreAccountSettings::knownAccounts() +{ + QList ids; + foreach(const QString &key, localChildGroups()) { + AccountId acc = key.toInt(); + if (acc.isValid()) + ids << acc; + } + return ids; +} + + +AccountId CoreAccountSettings::lastAccount() +{ + return localValue("LastAccount", 0).toInt(); +} + + +void CoreAccountSettings::setLastAccount(AccountId account) +{ + setLocalValue("LastAccount", account.toInt()); +} + + +AccountId CoreAccountSettings::autoConnectAccount() +{ + return localValue("AutoConnectAccount", 0).toInt(); +} + + +void CoreAccountSettings::setAutoConnectAccount(AccountId account) +{ + setLocalValue("AutoConnectAccount", account.toInt()); +} + + +bool CoreAccountSettings::autoConnectOnStartup() +{ + return localValue("AutoConnectOnStartup", false).toBool(); +} + + +void CoreAccountSettings::setAutoConnectOnStartup(bool b) +{ + setLocalValue("AutoConnectOnStartup", b); +} + + +bool CoreAccountSettings::autoConnectToFixedAccount() +{ + return localValue("AutoConnectToFixedAccount", false).toBool(); +} + + +void CoreAccountSettings::setAutoConnectToFixedAccount(bool b) +{ + setLocalValue("AutoConnectToFixedAccount", b); +} + + +void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) +{ + QString base = QString::number(id.toInt()); + foreach(const QString &key, data.keys()) { + setLocalValue(base + "/" + key, data.value(key)); + } + + // FIXME Migration from 0.5 -> 0.6 + removeLocalKey(QString("%1/Connection").arg(base)); +} + + +QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) +{ + QVariantMap map; + QString base = QString::number(id.toInt()); + foreach(const QString &key, localChildKeys(base)) { + map[key] = localValue(base + "/" + key); + } + + // FIXME Migration from 0.5 -> 0.6 + if (!map.contains("Uuid") && map.contains("Connection")) { + QVariantMap oldmap = map.value("Connection").toMap(); + map["AccountName"] = oldmap.value("AccountName"); + map["HostName"] = oldmap.value("Host"); + map["Port"] = oldmap.value("Port"); + map["User"] = oldmap.value("User"); + map["Password"] = oldmap.value("Password"); + map["StorePassword"] = oldmap.value("RememberPasswd"); + map["UseSSL"] = oldmap.value("useSsl"); + map["UseProxy"] = oldmap.value("useProxy"); + map["ProxyHostName"] = oldmap.value("proxyHost"); + map["ProxyPort"] = oldmap.value("proxyPort"); + map["ProxyUser"] = oldmap.value("proxyUser"); + map["ProxyPassword"] = oldmap.value("proxyPassword"); + map["ProxyType"] = oldmap.value("proxyType"); + map["Internal"] = oldmap.value("InternalAccount"); + + map["AccountId"] = id.toInt(); + map["Uuid"] = QUuid::createUuid().toString(); + } + + return map; +} + + +void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) +{ + if (!Client::currentCoreAccount().isValid()) + return; + setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().accountId().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().accountId().toInt()).arg(_subgroup).arg(key), def); +} + + +void CoreAccountSettings::setJumpKeyMap(const QHash &keyMap) +{ + QVariantMap variants; + QHash::const_iterator mapIter = keyMap.constBegin(); + while (mapIter != keyMap.constEnd()) { + variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value()); + ++mapIter; + } + setAccountValue("JumpKeyMap", variants); +} + + +QHash CoreAccountSettings::jumpKeyMap() +{ + QHash keyMap; + QVariantMap variants = accountValue("JumpKeyMap", QVariant()).toMap(); + QVariantMap::const_iterator mapIter = variants.constBegin(); + while (mapIter != variants.constEnd()) { + keyMap[mapIter.key().toInt()] = mapIter.value().value(); + ++mapIter; + } + return keyMap; +} -ClientSettings::ClientSettings(QString g) : Settings(g) { + +void CoreAccountSettings::setBufferViewOverlay(const QSet &viewIds) +{ + QVariantList variants; + foreach(int viewId, viewIds) { + variants << qVariantFromValue(viewId); + } + setAccountValue("BufferViewOverlay", variants); +} + + +QSet CoreAccountSettings::bufferViewOverlay() +{ + QSet viewIds; + QVariantList variants = accountValue("BufferViewOverlay").toList(); + for (QVariantList::const_iterator iter = variants.constBegin(); iter != variants.constEnd(); iter++) { + viewIds << iter->toInt(); + } + return viewIds; +} + + +void CoreAccountSettings::removeAccount(AccountId id) +{ + removeLocalKey(QString("%1").arg(id.toInt())); +} + + +void CoreAccountSettings::clearAccounts() +{ + foreach(const QString &key, localChildGroups()) + removeLocalKey(key); +} + + +/***********************************************************************************************/ +// CoreConnectionSettings: + +CoreConnectionSettings::CoreConnectionSettings() : ClientSettings("CoreConnection") {} + +void CoreConnectionSettings::setNetworkDetectionMode(NetworkDetectionMode mode) +{ + setLocalValue("NetworkDetectionMode", mode); +} +CoreConnectionSettings::NetworkDetectionMode CoreConnectionSettings::networkDetectionMode() +{ +#ifdef HAVE_KDE + NetworkDetectionMode def = UseSolid; +#else + NetworkDetectionMode def = UsePingTimeout; +#endif + return (NetworkDetectionMode)localValue("NetworkDetectionMode", def).toInt(); } -ClientSettings::~ClientSettings() { + +void CoreConnectionSettings::setAutoReconnect(bool autoReconnect) +{ + setLocalValue("AutoReconnect", autoReconnect); +} +bool CoreConnectionSettings::autoReconnect() +{ + return localValue("AutoReconnect", true).toBool(); } -QStringList ClientSettings::sessionKeys() { - return Client::sessionDataKeys(); + +void CoreConnectionSettings::setPingTimeoutInterval(int interval) +{ + setLocalValue("PingTimeoutInterval", interval); } -void ClientSettings::setSessionValue(const QString &key, const QVariant &data) { - Client::storeSessionData(key, data); + +int CoreConnectionSettings::pingTimeoutInterval() +{ + return localValue("PingTimeoutInterval", 60).toInt(); } -QVariant ClientSettings::sessionValue(const QString &key, const QVariant &def) { - return Client::retrieveSessionData(key, def); + +void CoreConnectionSettings::setReconnectInterval(int interval) +{ + setLocalValue("ReconnectInterval", interval); } + +int CoreConnectionSettings::reconnectInterval() +{ + return localValue("ReconnectInterval", 60).toInt(); +} + + /***********************************************************************************************/ +// NotificationSettings: + +NotificationSettings::NotificationSettings() : ClientSettings("Notification") +{ +} + + +void NotificationSettings::setHighlightList(const QVariantList &highlightList) +{ + setLocalValue("Highlights/CustomList", highlightList); +} + + +QVariantList NotificationSettings::highlightList() +{ + return localValue("Highlights/CustomList").toList(); +} -AccountSettings::AccountSettings() : ClientSettings("Accounts") { +void NotificationSettings::setHighlightNick(NotificationSettings::HighlightNickType highlightNickType) +{ + setLocalValue("Highlights/HighlightNick", highlightNickType); +} + + +NotificationSettings::HighlightNickType NotificationSettings::highlightNick() +{ + return (NotificationSettings::HighlightNickType)localValue("Highlights/HighlightNick", CurrentNick).toInt(); +} + + +void NotificationSettings::setNicksCaseSensitive(bool cs) +{ + setLocalValue("Highlights/NicksCaseSensitive", cs); +} + + +bool NotificationSettings::nicksCaseSensitive() +{ + return localValue("Highlights/NicksCaseSensitive", false).toBool(); +} + + +// ======================================== +// TabCompletionSettings +// ======================================== + +TabCompletionSettings::TabCompletionSettings() : ClientSettings("TabCompletion") +{ +} + + +void TabCompletionSettings::setCompletionSuffix(const QString &suffix) +{ + setLocalValue("CompletionSuffix", suffix); +} + +QString TabCompletionSettings::completionSuffix() +{ + return localValue("CompletionSuffix", ": ").toString(); } -QStringList AccountSettings::knownAccounts() { - return localChildGroups(); + +void TabCompletionSettings::setAddSpaceMidSentence(bool space) +{ + setLocalValue("AddSpaceMidSentence", space); } -QString AccountSettings::lastAccount() { - return localValue("LastAccount", "").toString(); + +bool TabCompletionSettings::addSpaceMidSentence() +{ + return localValue("AddSpaceMidSentence", false).toBool(); } -void AccountSettings::setLastAccount(const QString &account) { - setLocalValue("LastAccount", account); + +void TabCompletionSettings::setSortMode(SortMode mode) +{ + setLocalValue("SortMode", mode); } -QString AccountSettings::autoConnectAccount() { - return localValue("AutoConnectAccount", "").toString(); + +TabCompletionSettings::SortMode TabCompletionSettings::sortMode() +{ + return static_cast(localValue("SortMode"), LastActivity); } -void AccountSettings::setAutoConnectAccount(const QString &account) { - setLocalValue("AutoConnectAccount", account); + +void TabCompletionSettings::setCaseSensitivity(Qt::CaseSensitivity cs) +{ + setLocalValue("CaseSensitivity", cs); } -void AccountSettings::setValue(const QString &account, const QString &key, const QVariant &data) { - setLocalValue(QString("%1/%2").arg(account).arg(key), data); + +Qt::CaseSensitivity TabCompletionSettings::caseSensitivity() +{ + return (Qt::CaseSensitivity)localValue("CaseSensitivity", Qt::CaseInsensitive).toInt(); } -QVariant AccountSettings::value(const QString &account, const QString &key, const QVariant &def) { - return localValue(QString("%1/%2").arg(account).arg(key), def); + +void TabCompletionSettings::setUseLastSpokenTo(bool use) +{ + setLocalValue("UseLastSpokenTo", use); } -void AccountSettings::removeAccount(const QString &account) { - removeLocalKey(account); + +bool TabCompletionSettings::useLastSpokenTo() +{ + return localValue("UseLastSpokenTo", false).toBool(); } +// ======================================== +// ItemViewSettings +// ======================================== + +ItemViewSettings::ItemViewSettings(const QString &group) : ClientSettings(group) +{ +} + + +bool ItemViewSettings::displayTopicInTooltip() +{ + return localValue("DisplayTopicInTooltip", false).toBool(); +} + + +bool ItemViewSettings::mouseWheelChangesBuffer() +{ + return localValue("MouseWheelChangesBuffer", false).toBool(); +}