X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsettings.h;h=01353d7d1315cb7e2905a178c15e1d8cf3581eb8;hp=1c86dac201fe65e017da78c1831025f2457d5b61;hb=6d55e659fa87565462d7f3e92da594fdcf9708a2;hpb=8699dd758516d0ded076811e8ea656adc95e69d0 diff --git a/src/client/clientsettings.h b/src/client/clientsettings.h index 1c86dac2..01353d7d 100644 --- a/src/client/clientsettings.h +++ b/src/client/clientsettings.h @@ -22,6 +22,7 @@ #define _CLIENTSETTINGS_H_ #include "settings.h" +#include "types.h" class ClientSettings : public Settings { @@ -31,29 +32,65 @@ class ClientSettings : public Settings { protected: ClientSettings(QString group = "General"); - //virtual QStringList allSessionKeys() = 0; - virtual QStringList sessionKeys(); +}; + +// Deriving from CoreAccountSettings: +// MySettings() : CoreAccountSettings("MyGroup") {}; +// Then use accountValue() / setAccountValue() to retrieve/store data associated to the currently +// connected account. This is stored in CoreAccounts/$ACCID/MyGroup/$KEY) then. +// +// Note that you'll get invalid data (and setting is ignored) if you are not connected to a core! + +class CoreAccountSettings : public ClientSettings { + + public: + // stores account-specific data in CoreAccounts/$ACCID/$SUBGROUP/$KEY) + CoreAccountSettings(const QString &subgroup = "General"); + + QList knownAccounts(); + AccountId lastAccount(); + void setLastAccount(AccountId); + AccountId autoConnectAccount(); + void setAutoConnectAccount(AccountId); + + void storeAccountData(AccountId id, const QVariantMap &data); + QVariantMap retrieveAccountData(AccountId); + void removeAccount(AccountId); - virtual void setSessionValue(const QString &key, const QVariant &data); - virtual QVariant sessionValue(const QString &key, const QVariant &def = QVariant()); + void setJumpKeyMap(const QHash &keyMap); + QHash jumpKeyMap(); + protected: + void setAccountValue(const QString &key, const QVariant &data); + QVariant accountValue(const QString &key, const QVariant &def = QVariant()); + + private: + QString _subgroup; }; -class AccountSettings : public ClientSettings { +class NotificationSettings : public ClientSettings { public: - AccountSettings(); + enum HighlightNickType { + NoNick = 0x00, + CurrentNick= 0x01, + AllNicks = 0x02 + }; - QStringList knownAccounts(); - QString lastAccount(); - void setLastAccount(const QString &account); - QString autoConnectAccount(); - void setAutoConnectAccount(const QString &account); + NotificationSettings(); - void setValue(const QString &account, const QString &key, const QVariant &data); - QVariant value(const QString &account, const QString &key, const QVariant &def = QVariant()); - void removeAccount(const QString &account); + inline void setValue(const QString &key, const QVariant &data) { setLocalValue(key, data); } + inline QVariant value(const QString &key, const QVariant &def = QVariant()) { return localValue(key, def); } + inline void remove(const QString &key) { removeLocalKey(key); } -}; + void setHighlightList(const QVariantList &highlightList); + QVariantList highlightList(); + void setHighlightNick(HighlightNickType); + HighlightNickType highlightNick(); + + void setNicksCaseSensitive(bool); + bool nicksCaseSensitive(); + +}; #endif