File indexing completed on 2024-06-23 05:33:17
0001 /*************************************************************************** 0002 * Copyright (C) 2010 by Renaud Guezennec * 0003 * http://www.rolisteam.org/contact * 0004 * * 0005 * rolisteam is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 #include "preferencesmanager.h" 0021 //#include "preferenceslistener.h" 0022 #include <QSettings> 0023 #include <QDir> 0024 #include <QDebug> 0025 #include <QMetaType> 0026 0027 //#include "data/cleveruri.h" 0028 namespace rcse 0029 { 0030 PreferencesManager::PreferencesManager() 0031 : m_optionDictionary(nullptr) 0032 { 0033 m_optionDictionary = new QMap<QString,QVariant>; 0034 // qRegisterMetaTypeStreamOperators<CleverURI>("CleverURI"); 0035 // qRegisterMetaTypeStreamOperators<CleverUriList>("CleverUriList"); 0036 0037 //Default value 0038 m_optionDictionary->insert("MusicDirectory",QDir::homePath()); 0039 m_optionDictionary->insert("ImageDirectory",QDir::homePath()); 0040 m_optionDictionary->insert("MapDirectory",QDir::homePath()); 0041 m_optionDictionary->insert("SessionDirectory",QDir::homePath()); 0042 m_optionDictionary->insert("MinutesDirectory",QDir::homePath()); 0043 m_optionDictionary->insert("ChatDirectory",QDir::homePath()); 0044 m_optionDictionary->insert("DataDirectory",QDir::homePath()); 0045 } 0046 0047 PreferencesManager::~PreferencesManager() 0048 { 0049 delete m_optionDictionary; 0050 } 0051 0052 PreferencesManager* PreferencesManager::m_singleton = nullptr; 0053 0054 0055 PreferencesManager* PreferencesManager::getInstance() 0056 { 0057 if(m_singleton == nullptr) 0058 { 0059 m_singleton = new PreferencesManager; 0060 } 0061 0062 return m_singleton; 0063 } 0064 bool PreferencesManager::registerValue(QString key,QVariant value, bool overwrite) 0065 { 0066 if((overwrite)||(!m_optionDictionary->contains(key))) 0067 { 0068 QVariant oldValue; 0069 if(m_optionDictionary->contains(key)) 0070 { 0071 oldValue = m_optionDictionary->value(key); 0072 } 0073 m_optionDictionary->insert(key,value); 0074 /* if(oldValue != value) 0075 { 0076 notifyListener(key); 0077 }*/ 0078 return true; 0079 } 0080 else 0081 return false; 0082 } 0083 const QVariant PreferencesManager::value(QString key,QVariant defaultValue) 0084 { 0085 if(m_optionDictionary->contains(key)) 0086 { 0087 return m_optionDictionary->value(key); 0088 } 0089 else 0090 { 0091 return defaultValue; 0092 } 0093 } 0094 //#1707fe 0095 void PreferencesManager::readSettings(QSettings & settings) 0096 { 0097 settings.beginGroup("rcse/preferences"); 0098 int size = settings.beginReadArray("preferenceMap"); 0099 for (int i = 0; i < size; ++i) 0100 { 0101 settings.setArrayIndex(i); 0102 QString key = settings.value("key").toString(); 0103 QVariant value = settings.value("value"); 0104 m_optionDictionary->insert(key,value); 0105 } 0106 settings.endArray(); 0107 settings.endGroup(); 0108 } 0109 void PreferencesManager::writeSettings(QSettings & settings) 0110 { 0111 settings.beginGroup("rcse/preferences"); 0112 settings.beginWriteArray("preferenceMap"); 0113 for (int i = 0; i < m_optionDictionary->size(); ++i) 0114 { 0115 settings.setArrayIndex(i); 0116 QString key = m_optionDictionary->keys().at(i); 0117 QVariant var = m_optionDictionary->value(key); 0118 settings.setValue("key", key); 0119 settings.setValue("value",var); 0120 } 0121 settings.endArray(); 0122 settings.endGroup(); 0123 } 0124 /* 0125 void PreferencesManager::registerListener(QString str, PreferencesListener* listerner) 0126 { 0127 m_listernerMap.insert(str,listerner); 0128 } 0129 void PreferencesManager::notifyListener(QString str) 0130 { 0131 PreferencesListener* tmp = m_listernerMap.value(str); 0132 if(nullptr!=tmp) 0133 { 0134 tmp->preferencesHasChanged(str); 0135 } 0136 }*/ 0137 0138 }