created buffersettings to access options concerning buffers
[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 "client.h"
22 #include "clientsettings.h"
23 #include "global.h"
24
25 #include <QStringList>
26
27 ClientSettings::ClientSettings(QString g) : Settings(g, Global::clientApplicationName) {
28 }
29
30 ClientSettings::~ClientSettings() {
31 }
32
33 /***********************************************************************************************/
34
35 CoreAccountSettings::CoreAccountSettings(const QString &subgroup) : ClientSettings("CoreAccounts") {
36   _subgroup = subgroup;
37 }
38
39 QList<AccountId> CoreAccountSettings::knownAccounts() {
40   QList<AccountId> ids;
41   foreach(QString key, localChildGroups()) {
42     ids << key.toInt();
43   }
44   return ids;
45 }
46
47 AccountId CoreAccountSettings::lastAccount() {
48   return localValue("LastAccount", 0).toInt();
49 }
50
51 void CoreAccountSettings::setLastAccount(AccountId account) {
52   setLocalValue("LastAccount", account.toInt());
53 }
54
55 AccountId CoreAccountSettings::autoConnectAccount() {
56   return localValue("AutoConnectAccount", 0).toInt();
57 }
58
59 void CoreAccountSettings::setAutoConnectAccount(AccountId account) {
60   setLocalValue("AutoConnectAccount", account.toInt());
61 }
62
63 void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) {
64   setLocalValue(QString("%1/Connection").arg(id.toInt()), data);
65 }
66
67 QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) {
68   return localValue(QString("%1/Connection").arg(id.toInt()), QVariant()).toMap();
69 }
70
71 void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) {
72   if(!Client::currentCoreAccount().isValid()) return;
73   setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), value);
74 }
75
76 QVariant CoreAccountSettings::accountValue(const QString &key, const QVariant &def) {
77   if(!Client::currentCoreAccount().isValid()) return QVariant();
78   return localValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), def);
79 }
80
81 void CoreAccountSettings::setJumpKeyMap(const QHash<int, BufferId> &keyMap) {
82   QVariantMap variants;
83   QHash<int, BufferId>::const_iterator mapIter = keyMap.constBegin();
84   while(mapIter != keyMap.constEnd()) {
85     variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value());
86     mapIter++;
87   }
88   setLocalValue("JumpKeyMap", variants);
89 }
90
91 QHash<int, BufferId> CoreAccountSettings::jumpKeyMap() {
92   QHash<int, BufferId> keyMap;
93   QVariantMap variants = localValue("JumpKeyMap", QVariant()).toMap();
94   QVariantMap::const_iterator mapIter = variants.constBegin();
95   while(mapIter != variants.constEnd()) {
96     keyMap[mapIter.key().toInt()] = mapIter.value().value<BufferId>();
97     mapIter++;
98   }
99   return keyMap;
100 }
101   
102
103 void CoreAccountSettings::removeAccount(AccountId id) {
104   removeLocalKey(QString("%1").arg(id.toInt()));
105 }
106
107