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 }