1 /** \file TocSettings.cpp
\r
2 * \brief Implementation of TocSettings class
\r
4 * Tieto Open Communicator - Client for the Telepathy communications framework.
\r
5 * Copyright (c) 2010, Tieto Corporation
\r
7 * All rights reserved.
\r
8 * Redistribution and use in source and binary forms, with or without modification,
\r
9 * are permitted provided that the following conditions are met:
\r
11 * Redistributions of source code must retain the above copyright notice,
\r
12 * this list of conditions and the following disclaimer.
\r
13 * Redistributions in binary form must reproduce the above copyright notice,
\r
14 * this list of conditions and the following disclaimer in the documentation
\r
15 * and/or other materials provided with the distribution.
\r
16 * Neither the name of the Tieto Corporation nor the names of its contributors
\r
17 * may be used to endorse or promote products derived from this software without
\r
18 * specific prior written permission.
\r
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
\r
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
\r
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
\r
23 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
\r
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
\r
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
\r
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
\r
27 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
\r
28 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
32 #include "TocSettings"
\r
34 #include <QSettings>
\r
37 // Initialize static objects
\r
38 TocSettings* TocSettings::_pSelf = 0;
\r
40 TocSettings* TocSettings::getInstance() {
\r
43 _pSelf = new TocSettings();
\r
48 TocSettings::TocSettings()
\r
49 : _register(false) {
\r
51 _pProtocolMap = new QMap<QString, QString>();
\r
52 _pProtocolMap->insert("Jabber", "jabber");
\r
53 _pProtocolMap->insert("SIP", "sip");
\r
54 _pProtocolMap->insert("Google Talk", "jabber");
\r
56 _pContactList = new TocContactList();
\r
61 TocSettings::~TocSettings() {
\r
65 delete _pProtocolMap;
\r
66 delete _pContactList;
\r
69 void TocSettings::read() {
\r
71 QSettings settings("Tieto", "tietoopcom");
\r
72 settings.beginGroup("Account");
\r
73 _accountName = settings.value("account/name").toString();
\r
74 _accountUid = settings.value("account/uid").toString();
\r
75 _accountPasswd = settings.value("account/pass").toString();
\r
76 _protocol = settings.value("server/protocol").toString();
\r
77 _protocols = _pProtocolMap->keys();
\r
78 _protocolCommonName = settings.value("server/protocol-name").toString();
\r
79 _server = settings.value("server/server").toString();
\r
81 _port = settings.value("server/port").toInt();
\r
83 _bOldSsl = settings.value("server/old-ssl", false).toBool();
\r
84 _bIgnoreSslErrors = settings.value("server/ignore-ssl-errors", false).toBool();
\r
86 settings.endGroup();
\r
88 settings.beginGroup("Contact_List");
\r
89 _authorizationRule = static_cast<AuthorizationRule>(settings.value("list/authorization-rule", Ask).toInt());
\r
90 _sortOrder = static_cast<SortOrder>(settings.value("list/sort-order", Alphabetical).toInt());
\r
93 _pContactList = new TocContactList();
\r
95 _pContactList->clear();
\r
97 settings.beginGroup("Contacts");
\r
99 QStringList contactsList = settings.childKeys();
\r
101 foreach(QString entry, contactsList) {
\r
103 QStringList contactFields = settings.value(entry).toString().split("|");
\r
105 TocContact* pContact = new TocContact();
\r
106 pContact->uid = entry;
\r
107 pContact->name = contactFields[0];
\r
108 pContact->customIconPath = contactFields[1];
\r
109 pContact->customIconId = 0;
\r
110 pContact->gender = static_cast<Gender>(contactFields[2].toInt());
\r
111 pContact->presence = Offline;
\r
113 _pContactList->append(pContact);
\r
117 settings.endGroup();
\r
118 settings.endGroup();
\r
120 settings.beginGroup("Pending_Contact_Lists");
\r
122 settings.beginGroup("Added");
\r
123 _addedContacts = settings.childKeys();
\r
125 settings.endGroup();
\r
127 settings.beginGroup("Removed");
\r
128 _removedContacts = settings.childKeys();
\r
130 settings.endGroup();
\r
131 settings.endGroup();
\r
133 settings.beginGroup("Themes");
\r
136 #define ssPath QString("/usr/share/tietoopcom/stylesheets/")
\r
138 #define ssPath QString("./data/stylesheets/")
\r
139 #endif //QT_NO_DEBUG
\r
141 _currentTheme = settings.value("theme", ssPath + "/default.qss").toString();
\r
142 settings.endGroup();
\r
145 void TocSettings::save() {
\r
147 QSettings settings("Tieto", "tietoopcom");
\r
149 settings.beginGroup("Account");
\r
150 settings.setValue("account/name", _accountName);
\r
151 settings.setValue("account/uid", _accountUid);
\r
152 settings.setValue("account/pass", _accountPasswd);
\r
153 settings.setValue("server/protocol", _protocol);
\r
154 settings.setValue("server/protocol-name", _protocolCommonName);
\r
155 settings.setValue("server/server", _server);
\r
156 settings.setValue("server/port", _port);
\r
157 settings.setValue("server/old-ssl", _bOldSsl);
\r
158 settings.setValue("server/ignore-ssl-errors", _bIgnoreSslErrors);
\r
159 settings.endGroup();
\r
161 settings.beginGroup("Contact_List");
\r
162 settings.setValue("list/authorization-rule", _authorizationRule);
\r
163 settings.setValue("list/sort-order", _sortOrder);
\r
166 settings.beginGroup("Contacts");
\r
167 settings.remove("");
\r
170 TocContact* pContact = 0;
\r
172 foreach(pContact, *_pContactList) {
\r
174 entry = pContact->name + "|" + pContact->customIconPath + "|" + QString::number(static_cast<int>(pContact->gender));
\r
175 settings.setValue(pContact->uid, entry);
\r
178 settings.endGroup();
\r
179 settings.endGroup();
\r
181 settings.beginGroup("Pending_Contact_Lists");
\r
182 settings.beginGroup("Added");
\r
183 settings.remove("");
\r
185 foreach(QString added, _addedContacts)
\r
186 settings.setValue(added, 0);
\r
188 settings.endGroup ();
\r
190 settings.beginGroup("Removed");
\r
191 settings.remove("");
\r
193 foreach(QString removed, _removedContacts)
\r
194 settings.setValue(removed, 0);
\r
196 settings.endGroup();
\r
197 settings.endGroup();
\r
199 settings.beginGroup("Themes");
\r
200 settings.setValue("theme", _currentTheme);
\r
201 settings.endGroup();
\r
204 const QString& TocSettings::accountName() {
\r
205 return _accountName;
\r
208 void TocSettings::setAccountName(const QString& accountName) {
\r
209 _accountName = accountName;
\r
212 const QString& TocSettings::accountUid() {
\r
213 return _accountUid;
\r
216 void TocSettings::setAccountUid(const QString& uid) {
\r
220 const QString& TocSettings::accountPasswd() {
\r
221 return _accountPasswd;
\r
224 void TocSettings::setAccountPasswd(const QString& password) {
\r
225 _accountPasswd = password;
\r
228 const QString& TocSettings::protocol() {
\r
232 void TocSettings::setProtocol(const QString& protocol) {
\r
233 _protocol = protocol;
\r
236 void TocSettings::setProtocolByName(const QString& service) {
\r
238 _protocol = _pProtocolMap->value(service);
\r
239 _protocolCommonName = service;
\r
241 if(service == "Jabber") {
\r
243 _bIgnoreSslErrors = false;
\r
244 } else if( service == "Google Talk") {
\r
246 _bIgnoreSslErrors = true;
\r
247 } else if( service == "SIP") {
\r
249 _bIgnoreSslErrors = false;
\r
252 _bIgnoreSslErrors = false;
\r
256 const QStringList& TocSettings::protocols() {
\r
260 void TocSettings::setProtocols(const QStringList& protocols) {
\r
261 _protocols = protocols;
\r
264 const QString& TocSettings::server() {
\r
268 void TocSettings::setServer(const QString& server) {
\r
272 int TocSettings::port() {
\r
276 void TocSettings::setPort(int port) {
\r
280 bool TocSettings::isOldSslEnabled() {
\r
284 void TocSettings::setOldSslEnabled(bool bEnabled) {
\r
285 _bOldSsl = bEnabled;
\r
288 bool TocSettings::isIgnoreSslErrorsEnabled() {
\r
289 return _bIgnoreSslErrors;
\r
292 void TocSettings::setIgnoreSslErrorsEnabled(bool bEnabled) {
\r
293 _bIgnoreSslErrors = bEnabled;
\r
296 QList<TocContact*>* TocSettings::contactList() {
\r
297 return _pContactList;
\r
300 QStringList* TocSettings::contactsToAdd() {
\r
301 return &_addedContacts;
\r
304 QStringList* TocSettings::contactsToRemove() {
\r
305 return &_removedContacts;
\r
308 SortOrder TocSettings::sortOrder() {
\r
312 void TocSettings::setSortOrder(SortOrder sortOrder) {
\r
313 _sortOrder = sortOrder;
\r
316 AuthorizationRule TocSettings::authorizationRule() {
\r
317 return _authorizationRule;
\r
320 void TocSettings::setAuthorizationRule(AuthorizationRule rule) {
\r
321 _authorizationRule = rule;
\r
324 const QString& TocSettings::currentTheme() {
\r
325 return _currentTheme;
\r
328 void TocSettings::setCurrentTheme(const QString& theme) {
\r
329 _currentTheme = theme;
\r
332 bool TocSettings::isProtocolInstalled(const QString& protocol) {
\r
333 return !_pProtocolMap->key(protocol).isEmpty();
\r
336 void TocSettings::installProtocol(const QString& commonName, const QString& protocol) {
\r
337 _pProtocolMap->insert(commonName, protocol);
\r
338 _protocols = _pProtocolMap->keys();
\r
341 const QString TocSettings::protocolCommonName() {
\r
342 return _protocolCommonName;
\r
345 int TocSettings::portHint(const QString& uid, const QString& serviceName) {
\r
349 if( serviceName == "Jabber")
\r
350 return _portHint = 5222;
\r
351 if( serviceName == "Google Talk")
\r
352 return _portHint = 5223;
\r
353 if( serviceName == "SIP")
\r
354 return _portHint = 5060;
\r
356 return _portHint = 0;
\r
359 const QString& TocSettings::serverHint(const QString& uid, const QString& serviceName) {
\r
361 if(serviceName == "Jabber")
\r
362 if(uid.contains("@"))
\r
363 return _serverHint = uid.split("@").at(1);
\r
364 if(serviceName == "Google Talk")
\r
365 return _serverHint = "talk.google.com";
\r
366 if(serviceName == "SIP")
\r
367 return _serverHint = "";
\r
369 return _serverHint = "";
\r
372 bool TocSettings::isRegister() {
\r
373 bool bRet = _register;
\r
378 void TocSettings::setRegister() {
\r