X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsettings.h;h=6c984ed94d4f4ce8a036aa5499bc5bb3d3a928bb;hp=01353d7d1315cb7e2905a178c15e1d8cf3581eb8;hb=61f33c7895e324f6e95034d86897ad2e963653f1;hpb=6d55e659fa87565462d7f3e92da594fdcf9708a2 diff --git a/src/client/clientsettings.h b/src/client/clientsettings.h index 01353d7d..6c984ed9 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-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,25 +15,32 @@ * 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. * ***************************************************************************/ -#ifndef _CLIENTSETTINGS_H_ -#define _CLIENTSETTINGS_H_ +#pragma once + +#include "client-export.h" #include "settings.h" + #include "types.h" -class ClientSettings : public Settings { +class QHostAddress; +class QSslSocket; - public: - virtual ~ClientSettings(); +class CLIENT_EXPORT ClientSettings : public Settings +{ - protected: +protected: ClientSettings(QString group = "General"); - }; + +// ======================================== +// CoreAccountSettings +// ======================================== + // Deriving from CoreAccountSettings: // MySettings() : CoreAccountSettings("MyGroup") {}; // Then use accountValue() / setAccountValue() to retrieve/store data associated to the currently @@ -41,56 +48,141 @@ class ClientSettings : public Settings { // // Note that you'll get invalid data (and setting is ignored) if you are not connected to a core! -class CoreAccountSettings : public ClientSettings { - - public: +class CLIENT_EXPORT CoreAccountSettings : public ClientSettings +{ +public: // stores account-specific data in CoreAccounts/$ACCID/$SUBGROUP/$KEY) - CoreAccountSettings(const QString &subgroup = "General"); + CoreAccountSettings(QString subgroup = "General"); + + void notify(const QString &key, QObject *receiver, const char *slot) const; // shadows Settings::notify() - QList knownAccounts(); - AccountId lastAccount(); + QList knownAccounts() const; + AccountId lastAccount() const; void setLastAccount(AccountId); - AccountId autoConnectAccount(); + AccountId autoConnectAccount() const; void setAutoConnectAccount(AccountId); + bool autoConnectOnStartup() const; + void setAutoConnectOnStartup(bool); + bool autoConnectToFixedAccount() const; + void setAutoConnectToFixedAccount(bool); + + void clearAccounts(); void storeAccountData(AccountId id, const QVariantMap &data); - QVariantMap retrieveAccountData(AccountId); + QVariantMap retrieveAccountData(AccountId) const; void removeAccount(AccountId); void setJumpKeyMap(const QHash &keyMap); - QHash jumpKeyMap(); + QHash jumpKeyMap() const; + + void setBufferViewOverlay(const QSet &viewIds); + QSet bufferViewOverlay() const; - protected: void setAccountValue(const QString &key, const QVariant &data); - QVariant accountValue(const QString &key, const QVariant &def = QVariant()); + QVariant accountValue(const QString &key, const QVariant &def = QVariant()) const; - private: +private: QString _subgroup; }; -class NotificationSettings : public ClientSettings { - public: +// ======================================== +// NotificationSettings +// ======================================== +class CLIENT_EXPORT NotificationSettings : public ClientSettings +{ +public: enum HighlightNickType { - NoNick = 0x00, - CurrentNick= 0x01, - AllNicks = 0x02 + NoNick = 0x00, + CurrentNick = 0x01, + AllNicks = 0x02 }; 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 setValue(const QString &key, const QVariant &data); + QVariant value(const QString &key, const QVariant &def = {}) const; + void remove(const QString &key); void setHighlightList(const QVariantList &highlightList); - QVariantList highlightList(); + QVariantList highlightList() const; void setHighlightNick(HighlightNickType); - HighlightNickType highlightNick(); + HighlightNickType highlightNick() const; void setNicksCaseSensitive(bool); - bool nicksCaseSensitive(); + bool nicksCaseSensitive() const; +}; + + +// ======================================== +// CoreConnectionSettings +// ======================================== + +class CLIENT_EXPORT CoreConnectionSettings : public ClientSettings +{ +public: + enum NetworkDetectionMode { + UseQNetworkConfigurationManager = 1, // UseSolid is gone + UsePingTimeout, + NoActiveDetection + }; + + CoreConnectionSettings(); + + void setNetworkDetectionMode(NetworkDetectionMode mode); + NetworkDetectionMode networkDetectionMode() const; + + void setAutoReconnect(bool autoReconnect); + bool autoReconnect() const; + + void setPingTimeoutInterval(int interval); + int pingTimeoutInterval() const; + + void setReconnectInterval(int interval); + int reconnectInterval() const; +}; + + +// ======================================== +// TabCompletionSettings +// ======================================== + +class CLIENT_EXPORT TabCompletionSettings : public ClientSettings +{ +public: + enum SortMode { + Alphabetical, + LastActivity + }; + + TabCompletionSettings(); + + void setCompletionSuffix(const QString &); + QString completionSuffix() const; + + void setAddSpaceMidSentence(bool); + bool addSpaceMidSentence() const; + + void setSortMode(SortMode); + SortMode sortMode() const; + + void setCaseSensitivity(Qt::CaseSensitivity); + Qt::CaseSensitivity caseSensitivity() const; + + void setUseLastSpokenTo(bool); + bool useLastSpokenTo() const; +}; + + +// ======================================== +// ItemViewSettings +// ======================================== +class CLIENT_EXPORT ItemViewSettings : public ClientSettings +{ +public: + ItemViewSettings(const QString &group = "ItemViews"); + bool displayTopicInTooltip() const; + bool mouseWheelChangesBuffer() const; }; -#endif