Build the monolithic client (-DWANT_MONO=ON) by default again, as it's usable now
[quassel.git] / src / client / clientsettings.cpp
1 /***************************************************************************
2  *   Copyright (C) 2005-08 by the Quassel Project                          *
3  *   devel@quassel-irc.org                                                 *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) version 3.                                           *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20
21 #include <QStringList>
22
23 #include "client.h"
24 #include "clientsettings.h"
25 #include "quassel.h"
26
27 ClientSettings::ClientSettings(QString g) : Settings(g, Quassel::buildInfo().clientApplicationName) {
28 }
29
30 ClientSettings::~ClientSettings() {
31 }
32
33 /***********************************************************************************************/
34
35 CoreAccountSettings::CoreAccountSettings(const QString &subgroup)
36   : ClientSettings("CoreAccounts"),
37     _subgroup(subgroup)
38 {
39 }
40
41 void CoreAccountSettings::notify(const QString &key, QObject *receiver, const char *slot) {
42   ClientSettings::notify(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), receiver, slot);
43 }
44
45 QList<AccountId> CoreAccountSettings::knownAccounts() {
46   QList<AccountId> ids;
47   foreach(QString key, localChildGroups()) {
48     AccountId acc = key.toInt();
49     if(acc.isValid()) ids << acc;
50   }
51   return ids;
52 }
53
54 AccountId CoreAccountSettings::lastAccount() {
55   return localValue("LastAccount", 0).toInt();
56 }
57
58 void CoreAccountSettings::setLastAccount(AccountId account) {
59   setLocalValue("LastAccount", account.toInt());
60 }
61
62 AccountId CoreAccountSettings::autoConnectAccount() {
63   return localValue("AutoConnectAccount", 0).toInt();
64 }
65
66 void CoreAccountSettings::setAutoConnectAccount(AccountId account) {
67   setLocalValue("AutoConnectAccount", account.toInt());
68 }
69
70 void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) {
71   setLocalValue(QString("%1/Connection").arg(id.toInt()), data);
72 }
73
74 QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) {
75   return localValue(QString("%1/Connection").arg(id.toInt()), QVariant()).toMap();
76 }
77
78 void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) {
79   if(!Client::currentCoreAccount().isValid()) return;
80   setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), value);
81 }
82
83 QVariant CoreAccountSettings::accountValue(const QString &key, const QVariant &def) {
84   if(!Client::currentCoreAccount().isValid()) return QVariant();
85   return localValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), def);
86 }
87
88 void CoreAccountSettings::setJumpKeyMap(const QHash<int, BufferId> &keyMap) {
89   QVariantMap variants;
90   QHash<int, BufferId>::const_iterator mapIter = keyMap.constBegin();
91   while(mapIter != keyMap.constEnd()) {
92     variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value());
93     mapIter++;
94   }
95   setLocalValue("JumpKeyMap", variants);
96 }
97
98 QHash<int, BufferId> CoreAccountSettings::jumpKeyMap() {
99   QHash<int, BufferId> keyMap;
100   QVariantMap variants = localValue("JumpKeyMap", QVariant()).toMap();
101   QVariantMap::const_iterator mapIter = variants.constBegin();
102   while(mapIter != variants.constEnd()) {
103     keyMap[mapIter.key().toInt()] = mapIter.value().value<BufferId>();
104     mapIter++;
105   }
106   return keyMap;
107 }
108
109 void CoreAccountSettings::removeAccount(AccountId id) {
110   removeLocalKey(QString("%1").arg(id.toInt()));
111 }
112
113
114 /***********************************************************************************************/
115 // NotificationSettings:
116
117 NotificationSettings::NotificationSettings() : ClientSettings("Notification") {
118 }
119
120 void NotificationSettings::setHighlightList(const QVariantList &highlightList) {
121   setLocalValue("Highlights/CustomList", highlightList);
122 }
123
124 QVariantList NotificationSettings::highlightList() {
125   return localValue("Highlights/CustomList").toList();
126 }
127
128 void NotificationSettings::setHighlightNick(NotificationSettings::HighlightNickType highlightNickType) {
129   setLocalValue("Highlights/HighlightNick", highlightNickType);
130 }
131
132 NotificationSettings::HighlightNickType NotificationSettings::highlightNick() {
133   return (NotificationSettings::HighlightNickType) localValue("Highlights/HighlightNick", CurrentNick).toInt();
134 }
135
136 void NotificationSettings::setNicksCaseSensitive(bool cs) {
137   setLocalValue("Highlights/NicksCaseSensitive", cs);
138 }
139
140 bool NotificationSettings::nicksCaseSensitive() {
141   return localValue("Highlights/NicksCaseSensitive", false).toBool();
142 }