bedrockProvisioning/bedrockprovisioning.cpp
changeset 5 0f2326c2a325
parent 0 1450b09d0cfd
child 6 1c3b8676e58c
equal deleted inserted replaced
1:b0dd75e285d2 5:0f2326c2a325
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 *
     5 * under the terms of "Eclipse Public License v1.0"
     5 * This program is free software: you can redistribute it and/or modify
     6 * which accompanies this distribution, and is available
     6 * it under the terms of the GNU Lesser General Public License as published by
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * the Free Software Foundation, version 2.1 of the License.
     8 *
     8 * 
     9 * Initial Contributors:
     9 * This program is distributed in the hope that it will be useful,
    10 * Nokia Corporation - initial contribution.
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11 *
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12 * Contributors:
    12 * GNU Lesser General Public License for more details.
    13 *
    13 *
    14 * Description: 
    14 * You should have received a copy of the GNU Lesser General Public License
       
    15 * along with this program.  If not, 
       
    16 * see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
       
    17 *
       
    18 * Description:
    15 *
    19 *
    16 */
    20 */
    17 
       
    18 
    21 
    19 #include <QDebug>
    22 #include <QDebug>
    20 #include <QDir>
    23 #include <QDir>
    21 #include <QCoreApplication>
    24 #include <QCoreApplication>
    22 #include <QDesktopServices>
    25 #include <QDesktopServices>
    23 #include <QtCore/QStringList>
       
    24 #include <QtGui/QMessageBox>
       
    25 #include <qwebsettings.h>  
       
    26 #include <QProcessEnvironment>
    26 #include <QProcessEnvironment>
    27 //#include "qtnresources.h"
    27 #include <QWebSettings>
    28 //#include "qtnstrings.h"
       
    29 //#include "wrtversions.h"
       
    30 #include "bedrockprovisioning.h" 
    28 #include "bedrockprovisioning.h" 
    31 
    29 
    32 #ifdef Q_OS_SYMBIAN
       
    33 #include "f32file.h"
       
    34 #endif
       
    35 
       
    36 #define VALUEDELIM ";"
       
    37 #define RANGEDELIM ":"
       
    38 
       
    39 namespace BEDROCK_PROVISIONING {
    30 namespace BEDROCK_PROVISIONING {
    40 	
    31 
    41 BedrockProvisioningEnum::BedrockProvisioningEnum(const QString &key):
       
    42         m_key(key)
       
    43       , m_type(StringType)
       
    44       , m_flags(0)
       
    45       , m_enum(-1)
       
    46       , m_category(0)
       
    47       
       
    48 {
       
    49 }
       
    50 
       
    51 QString BedrockProvisioningEnum::displayValue()
       
    52 {
       
    53     // convert actual value to a string name from the list
       
    54     if (m_type == ListType && m_valuesList.count() == m_validList.count()){
       
    55         for (int i=0; i < m_validList.count(); i++)
       
    56             if (m_value.toString() == m_valuesList[i])
       
    57                 return m_validList[i];
       
    58     }
       
    59     // don't display any value for commands
       
    60     else if (m_type == CommandType || m_type == NodeType)
       
    61         return QString();
       
    62 
       
    63     return m_value.toString();
       
    64 }
       
    65 
       
    66 QVariant BedrockProvisioningEnum::value()
       
    67 {
       
    68     return m_value;
       
    69 }
       
    70 
       
    71 void BedrockProvisioningEnum::setValid(const QString &valid)
       
    72 {
       
    73     if (valid.contains(VALUEDELIM))
       
    74         m_validList = valid.split(VALUEDELIM);
       
    75     else if (valid.contains(RANGEDELIM))
       
    76         m_validList = valid.split(RANGEDELIM);
       
    77 }
       
    78 void BedrockProvisioningEnum::setValues(const QString &values)
       
    79 {
       
    80     m_valuesList = values.split(VALUEDELIM);
       
    81 }
       
    82 ////////////////////////////////////////////////////	
       
    83 	
       
    84 	
       
    85 BedrockProvisioning* BedrockProvisioning::m_BedrockProvisioning = 0;
    32 BedrockProvisioning* BedrockProvisioning::m_BedrockProvisioning = 0;
    86 
    33 
    87 BedrockProvisioning* BedrockProvisioning::createBedrockProvisioning()
    34 BedrockProvisioning* BedrockProvisioning::createBedrockProvisioning()
    88 {
    35 {
    89     if (m_BedrockProvisioning == 0)
    36     if (m_BedrockProvisioning == 0)
    90         m_BedrockProvisioning = new BedrockProvisioning();
    37         m_BedrockProvisioning = new BedrockProvisioning();
    91     return m_BedrockProvisioning;
    38     return m_BedrockProvisioning;
    92 }
    39 }
    93 
    40 
    94 void BedrockProvisioning::resync() // DIMA
       
    95 {
       
    96     QStringList list = allKeys();
       
    97     SettingsMap map;
       
    98     foreach (QString key, list)
       
    99         map.insert(key, value(key));
       
   100 
       
   101     sync();
       
   102 
       
   103     list = allKeys();
       
   104     foreach (QString key, list)
       
   105         if (value(key) != map.value(key))
       
   106             emit settingChanged(key);
       
   107 }
       
   108 
       
   109 BedrockProvisioning::BedrockProvisioning( QObject* parent, QString uid ) :
    41 BedrockProvisioning::BedrockProvisioning( QObject* parent, QString uid ) :
   110       QSettings(IniFormat, UserScope, BEDROCK_ORGANIZATION_NAME, uid, parent)
    42       QSettings(IniFormat, UserScope, BEDROCK_ORGANIZATION_NAME, uid, parent)
   111 {
    43 {
   112     setObjectName(QString::fromUtf8("BedrockProvisioning"));
    44     setObjectName(QString::fromUtf8("BedrockProvisioning"));
   113     m_appuid = uid;
    45     m_appuid = uid;
   114     init();
    46     init();
   115 }
    47 }
   116 
    48 
   117 // Why the heck isn't this in a global .h file somewhere?
    49 void BedrockProvisioning::init()
   118 #define BEDROCK_APPLICATION_NAME "Bedrock"
    50 {
   119 
       
   120 void BedrockProvisioning::init(bool clear)
       
   121 {
       
   122 	qDebug() << "brp::init IN";
       
   123 	// Unfortunately, this is getting called before WebPageController::initUASettingsAndData() which sets these
       
   124     QCoreApplication::setApplicationName(BEDROCK_APPLICATION_NAME);
       
   125     QCoreApplication::setOrganizationName(BEDROCK_ORGANIZATION_NAME);
       
   126     if (clear)
       
   127         QSettings::clear();
       
   128     
       
   129     QString key;
    51     QString key;
   130     beginGroup(m_appuid);
    52     beginGroup(m_appuid);
   131     {
    53     {
   132         QSettings::setValue("Version", "BedrockInternal");  //Add more values separated by ';' here
       
   133         if (!QSettings::contains("BedrockVersion"))
    54         if (!QSettings::contains("BedrockVersion"))
   134             QSettings::setValue("BedrockVersion", QString("BetaRelease"));
    55             QSettings::setValue("BedrockVersion", QString(BEDROCK_VERSION_DEFAULT));
   135             	
    56 
   136         if (!QSettings::contains("ZoomTextOnly"))
    57         if (!QSettings::contains("ZoomTextOnly"))
   137             QSettings::setValue("ZoomTextOnly", "0");
    58             QSettings::setValue("ZoomTextOnly", "0");
   138         //QSettings::setValue("ZoomTextOnly/descl", qtn_wrtsetting_zoomtextonly);
    59 
   139         QSettings::setValue("ZoomTextOnly/type", BedrockProvisioningEnum::ListType);
       
   140         QSettings::setValue("ZoomTextOnly/valid", "Yes;No");
       
   141         QSettings::setValue("ZoomTextOnly/values", "1;0");
       
   142         QSettings::setValue("ZoomTextOnly/flags", BedrockProvisioningEnum::WebAttribute);
       
   143         QSettings::setValue("ZoomTextOnly/enum", QWebSettings::ZoomTextOnly);
       
   144         QSettings::setValue("ZoomTextOnly/cat", BedrockProvisioningEnum::Category1);    	
       
   145         	
       
   146         if (!QSettings::contains("PopupBlocking"))
    60         if (!QSettings::contains("PopupBlocking"))
   147             QSettings::setValue("PopupBlocking", "0");
    61             QSettings::setValue("PopupBlocking", "1");
   148         //QSettings::setValue("PopupBlocking/descl", qtn_wrtsetting_popupblocking);
    62 
   149         QSettings::setValue("PopupBlocking/type", BedrockProvisioningEnum::ListType);
    63         // Base directory for ROM files (if the browser isn't in ROM this will be the same as DataBaseDirectory)
   150         QSettings::setValue("PopupBlocking/valid", "On;Off");
    64         if (!QSettings::contains("ROMBaseDirectory")) {
   151         QSettings::setValue("PopupBlocking/values", "1;0");
    65 #if defined Q_OS_SYMBIAN
   152         QSettings::setValue("PopupBlocking/cat", BedrockProvisioningEnum::Category2);
    66 #ifndef QT_NO_DESKTOPSERVICES
   153         	   	
    67             QString baseDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
   154         if (!QSettings::contains("JavaScriptConsoleLog"))
    68             if (baseDir.length() > 2 && baseDir.at(1) == ':')
   155             QSettings::setValue("JavaScriptConsoleLog", "0");
    69                 baseDir = baseDir.mid(2);
   156         //QSettings::setValue("JavaScriptConsoleLog/descl", qtn_wrtsetting_jsconsolelog);
    70 #else /* QT_NO_DESKTOPSERVICES */
   157         QSettings::setValue("JavaScriptConsoleLog/type", BedrockProvisioningEnum::ListType);
    71             QString baseDir = QDir::homePath(); // Not sure if this is valid
   158         QSettings::setValue("JavaScriptConsoleLog/valid", "Logging Off;Log to file;Show pop-up notes;Log to file and show pop-up notes");
    72 #endif /* QT_NO_DESKTOPSERVICES */
   159         QSettings::setValue("JavaScriptConsoleLog/values", "0;1;2;3");
    73 #elif defined Q_WS_MAEMO_5
   160         QSettings::setValue("JavaScriptConsoleLog/cat", BedrockProvisioningEnum::Category4);
    74             QString baseDir = "/opt/browser";
   161 
    75 #else /* Win or Linux */
   162      	  if (!QSettings::contains("JavaScriptConsoleLogFilePath"))
    76             QString baseDir = "."; /* Should this also be homePath()? */
   163             QSettings::setValue("JavaScriptConsoleLogFilePath", "jsLog_web.log");
    77 #endif
   164         //QSettings::setValue("JavaScriptConsoleLogFilePath/descl", qtn_wrtsetting_jsconsolelogfilepath);
    78             QSettings::setValue("ROMBaseDirectory", baseDir + "/");
   165         QSettings::setValue("JavaScriptConsoleLogFilePath/cat", BedrockProvisioningEnum::Category4);
    79         }
   166                 	
    80 
       
    81         // Base directory for writeable data files, not database directory
       
    82         if (!QSettings::contains("DataBaseDirectory")) {
       
    83 #if defined Q_OS_SYMBIAN
       
    84 #ifndef QT_NO_DESKTOPSERVICES
       
    85             QString baseDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
       
    86 #else /* QT_NO_DESKTOPSERVICES */
       
    87             QString baseDir = QDir::homePath();
       
    88 #endif /* QT_NO_DESKTOPSERVICES */
       
    89 #elif defined Q_WS_MAEMO_5
       
    90             QString baseDir = QDir::homePath();
       
    91 #else /* Win or Linux */
       
    92             QString baseDir = "."; /* Should this also be homePath()? */
       
    93 #endif
       
    94             QSettings::setValue("DataBaseDirectory", baseDir + "/");
       
    95         }
       
    96 
   167         if (!QSettings::contains("ChromeBaseDirectory")) {
    97         if (!QSettings::contains("ChromeBaseDirectory")) {
   168           #if defined Q_OS_SYMBIAN
    98             QString chromeBaseDir = QSettings::value("ROMBaseDirectory").toString() + "chrome/";
   169             static const QString defaultChromeBaseDir = "/data/Others/chrome/";
    99 #ifndef Q_OS_SYMBIAN
   170           #elif defined Q_WS_MAEMO_5
   100             // Maemo, Linux, Windows can override using an env var
   171             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
   101             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
   172             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "/opt/browser/chrome/";
   102             if (envChromeBaseDir != "")
   173           #else /* Win or Linux */
   103                 chromeBaseDir = envChromeBaseDir;
   174             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
   104 #endif
   175             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "chrome/";
   105           QSettings::setValue("ChromeBaseDirectory", chromeBaseDir); 
   176           #endif
       
   177           
       
   178           QSettings::setValue("ChromeBaseDirectory", defaultChromeBaseDir); 
       
   179         }        	
   106         }        	
   180         // This is for Ginebra2 but will go away once Ginebra1 is gone.
   107 
   181         if (!QSettings::contains("ChromeBaseDirectory2")) {
       
   182           #if defined Q_OS_SYMBIAN
       
   183             static const QString defaultChromeBaseDir = "/data/Others/ginebra2/chrome/";
       
   184           #elif defined Q_WS_MAEMO_5
       
   185             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
       
   186             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "/opt/browser/chrome/";
       
   187           #else /* Win or Linux */
       
   188             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
       
   189             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "chrome/";
       
   190           #endif
       
   191           
       
   192           QSettings::setValue("ChromeBaseDirectory2", defaultChromeBaseDir); 
       
   193         }        	
       
   194         if (!QSettings::contains("StartUpChrome")) {
   108         if (!QSettings::contains("StartUpChrome")) {
   195           QSettings::setValue("StartUpChrome", "bedrockchrome/chrome.html"); 
   109           QSettings::setValue("StartUpChrome", "bedrockchrome/chrome.html"); 
   196         }        	
   110         }        	
   197 
   111 
   198         if (!QSettings::contains("SplashImage")) {
   112         if (!QSettings::contains("SplashImage")) {
   199           QSettings::setValue("SplashImage", "localpages/bedrock_splash.png"); 
   113           QSettings::setValue("SplashImage", "localpages/bedrock_splash.png"); 
   200         }        	
   114         }        	
   201         	
   115 
   202         if (!QSettings::contains("NetworkProxy")) {
   116         if (!QSettings::contains("NetworkProxy")) {
   203 // For s60 arm and maemo arm (i.e. not x86 emulator build) we need to set no proxy
   117 // For s60 arm and maemo arm (i.e. not x86 emulator build) we need to set no proxy
   204 #if (defined(Q_OS_SYMBIAN)  && !defined(Q_CC_NOKIAX86)) || (defined(Q_WS_MAEMO_5) && !defined(QT_ARCH_I386))
   118 #if (defined(Q_OS_SYMBIAN)  && !defined(Q_CC_NOKIAX86)) || (defined(Q_WS_MAEMO_5) && !defined(QT_ARCH_I386))
   205           // empty proxy only for ARMV5 Symbian targets
   119           // empty proxy only for ARMV5 Symbian targets
   206 	        QSettings::setValue("NetworkProxy", QString()); 
   120 	        QSettings::setValue("NetworkProxy", QString()); 
   207 // everything else, linux, win, s60 emulator, maemo emulator needs proxy
   121 // everything else, linux, win, s60 emulator, maemo emulator needs proxy
   208 #else
   122 #else
   209   	      QSettings::setValue("NetworkProxy", "bswebproxy01.americas.nokia.com");
   123   	      QSettings::setValue("NetworkProxy", "bswebproxy01.americas.nokia.com");
   210 #endif
   124 #endif
   211         }
   125         }
   212         //QSettings::setValue("NetworkProxy/descl", qtn_wrtsetting_networkproxy);
   126 
   213         QSettings::setValue("NetworkProxy/cat", BedrockProvisioningEnum::Category3);
       
   214         	
       
   215         if (!QSettings::contains("DeveloperExtras"))
       
   216             QSettings::setValue("DeveloperExtras", "0");
       
   217         //QSettings::setValue("DeveloperExtras/descl", qtn_wrtsetting_developerextrasenabled);
       
   218         QSettings::setValue("DeveloperExtras/type", BedrockProvisioningEnum::ListType);
       
   219         QSettings::setValue("DeveloperExtras/valid", "Enabled;Disabled");
       
   220         QSettings::setValue("DeveloperExtras/values", "1;0");
       
   221         QSettings::setValue("DeveloperExtras/flags", BedrockProvisioningEnum::WebAttribute);
       
   222         QSettings::setValue("DeveloperExtras/enum", QWebSettings::DeveloperExtrasEnabled);
       
   223         QSettings::setValue("DeveloperExtras/cat", BedrockProvisioningEnum::Category4);
       
   224         	
       
   225         if (!QSettings::contains("DiskCacheEnabled"))
   127         if (!QSettings::contains("DiskCacheEnabled"))
   226             QSettings::setValue("DiskCacheEnabled", "1");
   128             QSettings::setValue("DiskCacheEnabled", "1");
   227 
   129 
   228         if (!QSettings::contains("DiskCacheMaxSize"))
   130         if (!QSettings::contains("DiskCacheMaxSize"))
   229             QSettings::setValue("DiskCacheMaxSize", "4194304");
   131             QSettings::setValue("DiskCacheMaxSize", "4194304");
       
   132 
       
   133         if (!QSettings::contains("MaxPagesInCache"))
       
   134             QSettings::setValue("MaxPagesInCache", "3");
       
   135 
       
   136         if (!QSettings::contains("DnsPrefetchEnabled"))
       
   137             QSettings::setValue("DnsPrefetchEnabled", "0");
   230 
   138 
   231 #ifdef Q_OS_SYMBIAN
   139 #ifdef Q_OS_SYMBIAN
   232         const QString diskCacheBaseDir = "d:/system/";
   140         const QString diskCacheBaseDir = "d:/system/";
   233 #else
   141 #else
   234 #ifndef QT_NO_DESKTOPSERVICES
   142         const QString diskCacheBaseDir = QSettings::value("DataBaseDirectory").toString();
   235         const QString diskCacheBaseDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
       
   236         qDebug() << "dt diskCacheBaseDir = " << diskCacheBaseDir;
       
   237 #else
       
   238         const QString diskCacheBaseDir = QDir::homePath();
       
   239         qDebug() << "hd diskCacheBaseDir = " << diskCacheBaseDir;
       
   240 #endif
       
   241 #endif
   143 #endif
   242 
   144 
   243         if (!QSettings::contains("DiskCacheDirectoryPath")) {
   145         if (!QSettings::contains("DiskCacheDirectoryPath")) {
   244         	qDebug() << "setting diskcachedirpath to " << diskCacheBaseDir + "brCache";
       
   245             QSettings::setValue("DiskCacheDirectoryPath", diskCacheBaseDir + "brCache");
   146             QSettings::setValue("DiskCacheDirectoryPath", diskCacheBaseDir + "brCache");
   246         }
   147         }
   247 
   148 
   248         if (!QSettings::contains("Cookies"))
   149         if (!QSettings::contains("Cookies"))
   249             QSettings::setValue("Cookies", "1");
   150             QSettings::setValue("Cookies", "1");
   250         //QSettings::setValue("Cookies/descl", qtn_wrtsetting_cookiesenabled);
       
   251         QSettings::setValue("Cookies/type", BedrockProvisioningEnum::ListType);
       
   252         QSettings::setValue("Cookies/valid", "Enabled;Disabled");
       
   253         QSettings::setValue("Cookies/values", "1;0");
       
   254         QSettings::setValue("Cookies/cat", BedrockProvisioningEnum::Category1);
       
   255 
   151 
   256         if (!QSettings::contains("StartPage"))
   152         if (!QSettings::contains("StartPage"))
       
   153         {
   257 #ifdef PLAT_101
   154 #ifdef PLAT_101
   258             QSettings::setValue("StartPage", "localpages/startpage_101.html");
   155             QSettings::setValue("StartPage", "localpages/startpage_101.html");
   259 #else
   156 #else
   260             QSettings::setValue("StartPage", "localpages/startpage.html");
   157             QSettings::setValue("StartPage", "localpages/startpage.html");
   261 #endif            
   158 #endif            
   262         QSettings::setValue("StartPage/cat", BedrockProvisioningEnum::Category1);
   159         }
   263 
   160 
   264         if (!QSettings::contains("SaveSession"))
   161         if (!QSettings::contains("SaveSession"))
   265             QSettings::setValue("SaveSession", "1");
   162             QSettings::setValue("SaveSession", "1");
   266         QSettings::setValue("SaveSession/type", BedrockProvisioningEnum::ListType);
   163 
   267         QSettings::setValue("SaveSession/valid", "Enabled;Disabled");
   164         if (!QSettings::contains("SaveHistory"))
   268         QSettings::setValue("SaveSession/values", "1;0");
   165             QSettings::setValue("SaveHistory", "1");
   269         QSettings::setValue("SaveSession/cat", BedrockProvisioningEnum::Category1);
   166 
   270         
   167         if (!QSettings::contains("BrowserEncoding"))
   271         qDebug() << "in group brp cwrtCache = " << this->valueAsString("DiskCacheDirectoryPath");
   168             QSettings::setValue("BrowserEncoding", QString("iso-8859-1"));
   272     	qDebug() << "brp::init endGroup " << m_appuid;
   169 
       
   170         if (!QSettings::contains("Html5LocalStorage")) {
       
   171             QSettings::setValue("Html5LocalStorage", "1");
       
   172         }
       
   173 
       
   174         if (!QSettings::contains("Html5DatabaseStorage")) {
       
   175             QSettings::setValue("Html5DatabaseStorage", "1");
       
   176         }
       
   177 
       
   178         if (!QSettings::contains("Html5DatabaseStorageMaxSize")) {
       
   179             // This quota applies to each individual persistent
       
   180             // store (local storage, database storage) database.
       
   181             // There is a separate instance for each security origin
       
   182             // that uses the feature.  See QWebSecurityOrigin.
       
   183             //
       
   184             // Limit: 5MB per origin
       
   185             QString maxSize = QString::number(5 * 1024 * 1024); // 5MB per origin
       
   186             QSettings::setValue("Html5DatabaseStorageMaxSize", maxSize);
       
   187         }
       
   188 
       
   189         if (!QSettings::contains("Html5ApplicationCache")) {
       
   190             QSettings::setValue("Html5ApplicationCache", "1");
       
   191         }
       
   192 
       
   193         if (!QSettings::contains("Html5ApplicationCacheMaxSize")) {
       
   194             // This quota applies to the single database instance
       
   195             // used to store ALL application cache data.  It should
       
   196             // be fairly large, as the application cache is used to
       
   197             // store entire files -- html/css/javascript text, image
       
   198             // files, etc.
       
   199             //
       
   200             // Limit: 200MB = 5MB per origin * 40 origins
       
   201             QString maxSize = QString::number(200 * 1024 * 1024);
       
   202             QSettings::setValue("Html5ApplicationCacheMaxSize", maxSize);
       
   203         }
   273     }
   204     }
   274     endGroup(); // m_appuid
   205     endGroup(); // m_appuid
   275     sync();
   206     sync();
   276     qDebug() << "m_appuid = " << m_appuid;
   207 }
   277     qDebug() << "orgname = " << this->organizationName();
   208 
   278     qDebug() << "appname = " << this->applicationName();
   209 
   279     qDebug() << "filename = " << this->fileName();
   210 QString BedrockProvisioning::valueAsString(const QString &key, const QVariant &defaultValue)
   280     qDebug() << "brp cwrtCache = " << this->valueAsString("DiskCacheDirectoryPath");
   211 {
   281     qDebug() << "settings: " << this->allKeys().join("::");
   212     return value(key, defaultValue).toString();
   282 	qDebug() << "brp::init OUT";
   213 }
   283 }
   214 
   284 
   215 int BedrockProvisioning::valueAsInt(const QString &key, const QVariant &defaultValue)
   285 BedrockProvisioningEnum BedrockProvisioning::setting(const QString &key)
   216 {
   286 {
   217     return value(key, defaultValue).toInt();
   287     BedrockProvisioningEnum setting(key);
   218 }
   288 
   219 
   289     bool appMissing( QSettings::group().isEmpty() && !key.startsWith(m_appuid));
   220 qint64 BedrockProvisioning::valueAsInt64(const QString &key, const QVariant &defaultValue)
       
   221 {
       
   222     return value(key, defaultValue).toLongLong();
       
   223 }
       
   224 
       
   225 double BedrockProvisioning::valueAsDouble(const QString &key, const QVariant &defaultValue)
       
   226 {
       
   227     return value(key, defaultValue).toDouble();
       
   228 }
       
   229 
       
   230 QVariant BedrockProvisioning::value(const QString &key, const QVariant &defaultValue)
       
   231 {
       
   232     bool appMissing (!key.startsWith(m_appuid));
   290     if (appMissing)
   233     if (appMissing)
   291         beginGroup(m_appuid);
   234         beginGroup(m_appuid);
   292     setting.m_value = QSettings::value(key);
   235 
   293     QSettings::beginGroup(key);
   236     QVariant val = QSettings::value(key, defaultValue);
   294     QStringList childkeys = QSettings::allKeys();
   237 
   295     setting.m_group = QSettings::group();
       
   296     for (int i=0; i < childkeys.count(); i++){
       
   297         if (childkeys[i] == "type")
       
   298             setting.m_type = QSettings::value(childkeys[i]).toInt();
       
   299         else if (childkeys[i] == "desc")
       
   300                 setting.m_desc = QSettings::value(childkeys[i]).toString();
       
   301         //else if (childkeys[i] == "descl")// localized
       
   302                 //setting.m_desc = tr(setting_strings[QSettings::value(childkeys[i]).toInt()]);
       
   303         else if (childkeys[i] == "valid")
       
   304             setting.setValid(QSettings::value(childkeys[i]).toString());
       
   305         else if (childkeys[i] == "values")
       
   306             setting.setValues(QSettings::value(childkeys[i]).toString());
       
   307         else if (childkeys[i] == "flags")
       
   308             setting.setFlags(QSettings::value(childkeys[i]).toInt());
       
   309         else if (childkeys[i] == "enum")
       
   310             setting.m_enum = QSettings::value(childkeys[i]).toInt();
       
   311         else if (childkeys[i] == "cat")
       
   312             setting.m_category = QSettings::value(childkeys[i]).toInt();
       
   313         }
       
   314     endGroup();
       
   315     if (appMissing)
   238     if (appMissing)
   316         endGroup();
   239         endGroup();
   317 
   240 
   318 
       
   319     return setting;
       
   320 }
       
   321 
       
   322 QString BedrockProvisioning::valueAsString(const QString &key, const QVariant &defaultValue)
       
   323 {
       
   324     return value(key, defaultValue).toString();
       
   325 }
       
   326 
       
   327 int BedrockProvisioning::valueAsInt(const QString &key, const QVariant &defaultValue)
       
   328 {
       
   329     return value(key, defaultValue).toInt();
       
   330 }
       
   331 
       
   332 double BedrockProvisioning::valueAsDouble(const QString &key, const QVariant &defaultValue)
       
   333 {
       
   334     return value(key, defaultValue).toDouble();
       
   335 }
       
   336 
       
   337 QVariant BedrockProvisioning::value(const QString &key, const QVariant &defaultValue)
       
   338 {
       
   339     bool appMissing (!key.startsWith(m_appuid));
       
   340     if (appMissing)
       
   341         beginGroup(m_appuid);
       
   342 
       
   343     QVariant val = QSettings::value(key, defaultValue);
       
   344     
       
   345     if (appMissing)
       
   346         endGroup();
       
   347     
       
   348     return val;
   241     return val;
   349 }
   242 }
   350 
   243 
   351 int BedrockProvisioning::setValue(const QString &key, const int value)
   244 int BedrockProvisioning::setValue(const QString &key, const int value)
   352 {
   245 {
   381         endGroup();
   274         endGroup();
   382 
   275 
   383     return ret;
   276     return ret;
   384 }
   277 }
   385 
   278 
   386 
       
   387 void BedrockProvisioning::setFactorySettings()
       
   388 {
       
   389     QSettings::clear();
       
   390     // TODO: add factory default settings
       
   391 }
       
   392 
       
   393 void BedrockProvisioning::addProvisioning(const QString &key, QSettings::SettingsMap& att, bool forceRefresh)
       
   394 {
       
   395     if (forceRefresh || !QSettings::contains(key)) {
       
   396         QSettings::setValue(key, att);
       
   397         sync();
       
   398     }
       
   399 }
       
   400 
       
   401 
       
   402 
       
   403 } // end of namespace BEDROCK_PROVISIONING
   279 } // end of namespace BEDROCK_PROVISIONING