X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsettings.h;h=be3fb102f1ecbd009dc243d21550e2538b8f4e09;hp=c874b780290f991c1f2753a10aafd07eb04ea0fd;hb=84381d6b74a31c8b1b6468fa490621f8a7a32c23;hpb=d1b6499b0b848d4287efae89107576548533502c diff --git a/src/client/clientsettings.h b/src/client/clientsettings.h index c874b780..be3fb102 100644 --- a/src/client/clientsettings.h +++ b/src/client/clientsettings.h @@ -1,5 +1,5 @@ /*************************************************************************** - * 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 * @@ -18,44 +18,164 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _CLIENTSETTINGS_H_ -#define _CLIENTSETTINGS_H_ +#ifndef CLIENTSETTINGS_H +#define CLIENTSETTINGS_H #include "settings.h" +#include "types.h" + +class QHostAddress; +class QSslSocket; + class ClientSettings : public Settings { +public: + virtual ~ClientSettings(); - public: - virtual ~ClientSettings(); +protected: + ClientSettings(QString group = "General"); +}; + +// ======================================== +// CoreAccountSettings +// ======================================== + +// 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"); + + virtual void notify(const QString &key, QObject *receiver, const char *slot); + + QList knownAccounts(); + AccountId lastAccount(); + void setLastAccount(AccountId); + AccountId autoConnectAccount(); + void setAutoConnectAccount(AccountId); + bool autoConnectOnStartup(); + void setAutoConnectOnStartup(bool); + bool autoConnectToFixedAccount(); + void setAutoConnectToFixedAccount(bool); - protected: - ClientSettings(QString group = "General"); + void clearAccounts(); - //virtual QStringList allSessionKeys() = 0; - virtual QStringList sessionKeys(); + 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(); + void setBufferViewOverlay(const QSet &viewIds); + QSet bufferViewOverlay(); + + void setAccountValue(const QString &key, const QVariant &data); + QVariant accountValue(const QString &key, const QVariant &def = QVariant()); + +private: + QString _subgroup; }; -class CoreAccountSettings : public ClientSettings { +// ======================================== +// NotificationSettings +// ======================================== +class NotificationSettings : public ClientSettings { +public: + enum HighlightNickType { + NoNick = 0x00, + CurrentNick= 0x01, + AllNicks = 0x02 + }; - public: - CoreAccountSettings(); + NotificationSettings(); + + 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(); +}; - QStringList knownAccounts(); - QString lastAccount(); - void setLastAccount(const QString &account); - QString autoConnectAccount(); - void setAutoConnectAccount(const QString &account); +// ======================================== +// CoreConnectionSettings +// ======================================== - void storeAccount(const QString name, const QVariantMap &data); - QVariantMap retrieveAccount(const QString &name); - void storeAllAccounts(const QHash accounts); - QHash retrieveAllAccounts(); - void removeAccount(const QString &account); +class CoreConnectionSettings : public ClientSettings { +public: + enum NetworkDetectionMode { + UseSolid, + UsePingTimeout, + NoActiveDetection + }; + + CoreConnectionSettings(); + + void setNetworkDetectionMode(NetworkDetectionMode mode); + NetworkDetectionMode networkDetectionMode(); + + void setAutoReconnect(bool autoReconnect); + bool autoReconnect(); + + void setPingTimeoutInterval(int interval); + int pingTimeoutInterval(); + + void setReconnectInterval(int interval); + int reconnectInterval(); +}; + +// ======================================== +// TabCompletionSettings +// ======================================== + +class TabCompletionSettings : public ClientSettings { +public: + enum SortMode { + Alphabetical, + LastActivity + }; + + TabCompletionSettings(); + + void setCompletionSuffix(const QString &); + QString completionSuffix(); + + void setAddSpaceMidSentence(const bool &); + bool addSpaceMidSentence(); + + void setSortMode(SortMode); + SortMode sortMode(); + + void setCaseSensitivity(Qt::CaseSensitivity); + Qt::CaseSensitivity caseSensitivity(); + + void setUseLastSpokenTo(bool); + bool useLastSpokenTo(); + +}; + +// ======================================== +// ItemViewSettings +// ======================================== +class ItemViewSettings : public ClientSettings { + public: + ItemViewSettings(const QString& group = "ItemViews"); + bool displayTopicInTooltip(); + bool mouseWheelChangesBuffer(); }; #endif