another try to fix those win/linux crashes :)
[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     AccountId acc = key.toInt();
43     if(acc.isValid()) ids << acc;
44   }
45   return ids;
46 }
47
48 AccountId CoreAccountSettings::lastAccount() {
49   return localValue("LastAccount", 0).toInt();
50 }
51
52 void CoreAccountSettings::setLastAccount(AccountId account) {
53   setLocalValue("LastAccount", account.toInt());
54 }
55
56 AccountId CoreAccountSettings::autoConnectAccount() {
57   return localValue("AutoConnectAccount", 0).toInt();
58 }
59
60 void CoreAccountSettings::setAutoConnectAccount(AccountId account) {
61   setLocalValue("AutoConnectAccount", account.toInt());
62 }
63
64 void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) {
65   setLocalValue(QString("%1/Connection").arg(id.toInt()), data);
66 }
67
68 QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) {
69   return localValue(QString("%1/Connection").arg(id.toInt()), QVariant()).toMap();
70 }
71
72 void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) {
73   if(!Client::currentCoreAccount().isValid()) return;
74   setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), value);
75 }
76
77 QVariant CoreAccountSettings::accountValue(const QString &key, const QVariant &def) {
78   if(!Client::currentCoreAccount().isValid()) return QVariant();
79   return localValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), def);
80 }
81
82 void CoreAccountSettings::setJumpKeyMap(const QHash<int, BufferId> &keyMap) {
83   QVariantMap variants;
84   QHash<int, BufferId>::const_iterator mapIter = keyMap.constBegin();
85   while(mapIter != keyMap.constEnd()) {
86     variants[QString::number(mapIter.key())] = qVariantFromValue(mapIter.value());
87     mapIter++;
88   }
89   setLocalValue("JumpKeyMap", variants);
90 }
91
92 QHash<int, BufferId> CoreAccountSettings::jumpKeyMap() {
93   QHash<int, BufferId> keyMap;
94   QVariantMap variants = localValue("JumpKeyMap", QVariant()).toMap();
95   QVariantMap::const_iterator mapIter = variants.constBegin();
96   while(mapIter != variants.constEnd()) {
97     keyMap[mapIter.key().toInt()] = mapIter.value().value<BufferId>();
98     mapIter++;
99   }
100   return keyMap;
101 }
102
103 void CoreAccountSettings::removeAccount(AccountId id) {
104   removeLocalKey(QString("%1").arg(id.toInt()));
105 }
106
107
108 /***********************************************************************************************/
109 // NotificationSettings:
110
111 NotificationSettings::NotificationSettings() : ClientSettings("Notification") {
112 }
113
114 void NotificationSettings::setHighlightList(const QVariantList &highlightList) {
115   setLocalValue("highlightList", highlightList);
116 }
117
118 QVariantList NotificationSettings::highlightList() {
119   return localValue("highlightList").toList();
120 }
121
122 void NotificationSettings::setHighlightNick(NotificationSettings::HighlightNickType highlightNickType) {
123   setLocalValue("highlightNick", highlightNickType);
124 }
125
126 NotificationSettings::HighlightNickType NotificationSettings::highlightNick() {
127   return (NotificationSettings::HighlightNickType) localValue("highlightNick", CurrentNick).toInt();
128 }