bedrockProvisioning/bedrockprovisioning.cpp
changeset 3 0954f5dd2cd0
parent 0 1450b09d0cfd
child 12 afcd8e6d025b
equal deleted inserted replaced
1:b0dd75e285d2 3:0954f5dd2cd0
     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
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
     4 *
     9 * Initial Contributors:
     5 * This program is free software: you can redistribute it and/or modify
    10 * Nokia Corporation - initial contribution.
     6 * it under the terms of the GNU Lesser General Public License as published by
       
     7 * the Free Software Foundation, version 2.1 of the License.
       
     8 * 
       
     9 * This program is distributed in the hope that it will be useful,
       
    10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12 * GNU Lesser General Public License for more details.
    11 *
    13 *
    12 * Contributors:
    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/".
    13 *
    17 *
    14 * Description: 
    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 = ":/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")) {
   108         if (!QSettings::contains("LocalPagesBaseDirectory")) {
   182           #if defined Q_OS_SYMBIAN
   109 #ifdef Q_OS_SYMBIAN
   183             static const QString defaultChromeBaseDir = "/data/Others/ginebra2/chrome/";
   110             QString localpagesBaseDir = QSettings::value("ROMBaseDirectory").toString() + "localpages/";
   184           #elif defined Q_WS_MAEMO_5
   111 #else        
   185             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
   112             QString localpagesBaseDir = QSettings::value("ChromeBaseDirectory").toString() + "localpages/";
   186             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "/opt/browser/chrome/";
   113             // Maemo, Linux, Windows can override using an env var
   187           #else /* Win or Linux */
   114             static const QString envBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_LOCALPAGES"); // allow env var overriding for dev
   188             static const QString envChromeBaseDir = QProcessEnvironment::systemEnvironment().value("BROWSER_CHROME"); // allow env var overriding for dev
   115             if (envBaseDir != "")
   189             static const QString defaultChromeBaseDir = (envChromeBaseDir != "") ? envChromeBaseDir : "chrome/";
   116                 localpagesBaseDir = envBaseDir;
   190           #endif
   117 #endif
   191           
   118           QSettings::setValue("LocalPagesBaseDirectory", localpagesBaseDir); 
   192           QSettings::setValue("ChromeBaseDirectory2", defaultChromeBaseDir); 
   119         }
   193         }        	
   120         
   194         if (!QSettings::contains("StartUpChrome")) {
   121         if (!QSettings::contains("StartUpChrome")) {
   195           QSettings::setValue("StartUpChrome", "bedrockchrome/chrome.html"); 
   122           QSettings::setValue("StartUpChrome", "bedrockchrome/chrome.html"); 
   196         }        	
   123         }        	
   197 
   124 
   198         if (!QSettings::contains("SplashImage")) {
   125         if (!QSettings::contains("SplashImage")) {
   199           QSettings::setValue("SplashImage", "localpages/bedrock_splash.png"); 
   126           QSettings::setValue("SplashImage", "localpages/bedrock_splash.png"); 
   200         }        	
   127         }        	
   201         	
   128 
   202         if (!QSettings::contains("NetworkProxy")) {
   129         if (!QSettings::contains("NetworkProxy")) {
   203 // For s60 arm and maemo arm (i.e. not x86 emulator build) we need to set no proxy
   130 // 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))
   131 #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
   132           // empty proxy only for ARMV5 Symbian targets
   206 	        QSettings::setValue("NetworkProxy", QString()); 
   133 	        QSettings::setValue("NetworkProxy", QString()); 
   207 // everything else, linux, win, s60 emulator, maemo emulator needs proxy
   134 // everything else, linux, win, s60 emulator, maemo emulator needs proxy
   208 #else
   135 #else
   209   	      QSettings::setValue("NetworkProxy", "bswebproxy01.americas.nokia.com");
   136   	      QSettings::setValue("NetworkProxy", "bswebproxy01.americas.nokia.com");
   210 #endif
   137 #endif
   211         }
   138         }
   212         //QSettings::setValue("NetworkProxy/descl", qtn_wrtsetting_networkproxy);
   139 
   213         QSettings::setValue("NetworkProxy/cat", BedrockProvisioningEnum::Category3);
   140         if (!QSettings::contains("NetworkPort")) {
   214         	
   141 // For s60 arm and maemo arm (i.e. not x86 emulator build) we need to set no proxy
   215         if (!QSettings::contains("DeveloperExtras"))
   142 #if (defined(Q_OS_SYMBIAN)  && !defined(Q_CC_NOKIAX86)) || (defined(Q_WS_MAEMO_5) && !defined(QT_ARCH_I386))
   216             QSettings::setValue("DeveloperExtras", "0");
   143           // empty proxy only for ARMV5 Symbian targets
   217         //QSettings::setValue("DeveloperExtras/descl", qtn_wrtsetting_developerextrasenabled);
   144 	        QSettings::setValue("NetworkPort", QString()); 
   218         QSettings::setValue("DeveloperExtras/type", BedrockProvisioningEnum::ListType);
   145 // everything else, linux, win, s60 emulator, maemo emulator needs proxy
   219         QSettings::setValue("DeveloperExtras/valid", "Enabled;Disabled");
   146 #else
   220         QSettings::setValue("DeveloperExtras/values", "1;0");
   147   	      QSettings::setValue("NetworkPort", "8080");
   221         QSettings::setValue("DeveloperExtras/flags", BedrockProvisioningEnum::WebAttribute);
   148 #endif
   222         QSettings::setValue("DeveloperExtras/enum", QWebSettings::DeveloperExtrasEnabled);
   149         }
   223         QSettings::setValue("DeveloperExtras/cat", BedrockProvisioningEnum::Category4);
       
   224         	
       
   225         if (!QSettings::contains("DiskCacheEnabled"))
   150         if (!QSettings::contains("DiskCacheEnabled"))
   226             QSettings::setValue("DiskCacheEnabled", "1");
   151             QSettings::setValue("DiskCacheEnabled", "1");
   227 
   152 
   228         if (!QSettings::contains("DiskCacheMaxSize"))
   153         if (!QSettings::contains("DiskCacheMaxSize"))
   229             QSettings::setValue("DiskCacheMaxSize", "4194304");
   154             QSettings::setValue("DiskCacheMaxSize", "4194304");
   230 
   155 
       
   156         if (!QSettings::contains("MaxPagesInCache"))
       
   157             QSettings::setValue("MaxPagesInCache", "3");
       
   158 
       
   159         if (!QSettings::contains("DnsPrefetchEnabled"))
       
   160             QSettings::setValue("DnsPrefetchEnabled", "0");
       
   161 
   231 #ifdef Q_OS_SYMBIAN
   162 #ifdef Q_OS_SYMBIAN
   232         const QString diskCacheBaseDir = "d:/system/";
   163         const QString diskCacheBaseDir = "d:/system/";
   233 #else
   164 #else
   234 #ifndef QT_NO_DESKTOPSERVICES
   165         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
   166 #endif
   242 
   167 
   243         if (!QSettings::contains("DiskCacheDirectoryPath")) {
   168         if (!QSettings::contains("DiskCacheDirectoryPath")) {
   244         	qDebug() << "setting diskcachedirpath to " << diskCacheBaseDir + "brCache";
       
   245             QSettings::setValue("DiskCacheDirectoryPath", diskCacheBaseDir + "brCache");
   169             QSettings::setValue("DiskCacheDirectoryPath", diskCacheBaseDir + "brCache");
   246         }
   170         }
   247 
   171 
   248         if (!QSettings::contains("Cookies"))
   172         if (!QSettings::contains("Cookies"))
   249             QSettings::setValue("Cookies", "1");
   173             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 
   174 
   256         if (!QSettings::contains("StartPage"))
   175         if (!QSettings::contains("StartPage"))
       
   176         {
   257 #ifdef PLAT_101
   177 #ifdef PLAT_101
   258             QSettings::setValue("StartPage", "localpages/startpage_101.html");
   178             QSettings::setValue("StartPage", "startpage_101.html");
   259 #else
   179 #else
   260             QSettings::setValue("StartPage", "localpages/startpage.html");
   180             QSettings::setValue("StartPage", "startpage.html");
   261 #endif            
   181 #endif            
   262         QSettings::setValue("StartPage/cat", BedrockProvisioningEnum::Category1);
   182         }
   263 
   183 
   264         if (!QSettings::contains("SaveSession"))
   184         if (!QSettings::contains("SaveSession"))
   265             QSettings::setValue("SaveSession", "1");
   185             QSettings::setValue("SaveSession", "1");
   266         QSettings::setValue("SaveSession/type", BedrockProvisioningEnum::ListType);
   186 
   267         QSettings::setValue("SaveSession/valid", "Enabled;Disabled");
   187         if (!QSettings::contains("SaveHistory"))
   268         QSettings::setValue("SaveSession/values", "1;0");
   188             QSettings::setValue("SaveHistory", "1");
   269         QSettings::setValue("SaveSession/cat", BedrockProvisioningEnum::Category1);
   189 
   270         
   190         if (!QSettings::contains("BrowserEncoding"))
   271         qDebug() << "in group brp cwrtCache = " << this->valueAsString("DiskCacheDirectoryPath");
   191             QSettings::setValue("BrowserEncoding", QString("iso-8859-1"));
   272     	qDebug() << "brp::init endGroup " << m_appuid;
   192 
       
   193         if (!QSettings::contains("Html5LocalStorage")) {
       
   194             QSettings::setValue("Html5LocalStorage", "1");
       
   195         }
       
   196 
       
   197         if (!QSettings::contains("Html5DatabaseStorage")) {
       
   198             QSettings::setValue("Html5DatabaseStorage", "1");
       
   199         }
       
   200 
       
   201         if (!QSettings::contains("Html5DatabaseStorageMaxSize")) {
       
   202             // This quota applies to each individual persistent
       
   203             // store (local storage, database storage) database.
       
   204             // There is a separate instance for each security origin
       
   205             // that uses the feature.  See QWebSecurityOrigin.
       
   206             //
       
   207             // Limit: 5MB per origin
       
   208             QString maxSize = QString::number(5 * 1024 * 1024); // 5MB per origin
       
   209             QSettings::setValue("Html5DatabaseStorageMaxSize", maxSize);
       
   210         }
       
   211 
       
   212         if (!QSettings::contains("Html5ApplicationCache")) {
       
   213             QSettings::setValue("Html5ApplicationCache", "1");
       
   214         }
       
   215 
       
   216         if (!QSettings::contains("Html5ApplicationCacheMaxSize")) {
       
   217             // This quota applies to the single database instance
       
   218             // used to store ALL application cache data.  It should
       
   219             // be fairly large, as the application cache is used to
       
   220             // store entire files -- html/css/javascript text, image
       
   221             // files, etc.
       
   222             //
       
   223             // Limit: 200MB = 5MB per origin * 40 origins
       
   224             QString maxSize = QString::number(200 * 1024 * 1024);
       
   225             QSettings::setValue("Html5ApplicationCacheMaxSize", maxSize);
       
   226         }
       
   227         
       
   228         // reserved entries for local bookmarks
       
   229         if (!QSettings::contains("Bookmark0Title")) {
       
   230             QSettings::setValue("Bookmark0Title", "Browser Welcome Page");
       
   231         }
       
   232         
       
   233         if (!QSettings::contains("Bookmark0Url")) {
       
   234 #ifdef PLAT_101
       
   235             QSettings::setValue("Bookmark0Url", "startpage_101.html");
       
   236 #else
       
   237             QSettings::setValue("Bookmark0Url", "startpage.html");
       
   238 #endif
       
   239         }
       
   240         
       
   241         if (!QSettings::contains("Bookmark1Title")) {
       
   242             QSettings::setValue("Bookmark1Title", "");
       
   243         }
       
   244         
       
   245         if (!QSettings::contains("Bookmark1Url")) {
       
   246             QSettings::setValue("Bookmark1Url", "");
       
   247         }
       
   248         
       
   249         if (!QSettings::contains("Bookmark2Title")) {
       
   250             QSettings::setValue("Bookmark2Title", "");
       
   251         }
       
   252         
       
   253         if (!QSettings::contains("Bookmark2Url")) {
       
   254             QSettings::setValue("Bookmark2Url", "");
       
   255         }
   273     }
   256     }
       
   257 	
       
   258 	        // userAgentStringSetup, default empty.  
       
   259         if (!QSettings::contains("UserAgentString"))
       
   260         {
       
   261             QSettings::setValue("UserAgentString", QString());
       
   262         }          				
   274     endGroup(); // m_appuid
   263     endGroup(); // m_appuid
   275     sync();
   264     sync();
   276     qDebug() << "m_appuid = " << m_appuid;
   265 }
   277     qDebug() << "orgname = " << this->organizationName();
   266 
   278     qDebug() << "appname = " << this->applicationName();
       
   279     qDebug() << "filename = " << this->fileName();
       
   280     qDebug() << "brp cwrtCache = " << this->valueAsString("DiskCacheDirectoryPath");
       
   281     qDebug() << "settings: " << this->allKeys().join("::");
       
   282 	qDebug() << "brp::init OUT";
       
   283 }
       
   284 
       
   285 BedrockProvisioningEnum BedrockProvisioning::setting(const QString &key)
       
   286 {
       
   287     BedrockProvisioningEnum setting(key);
       
   288 
       
   289     bool appMissing( QSettings::group().isEmpty() && !key.startsWith(m_appuid));
       
   290     if (appMissing)
       
   291         beginGroup(m_appuid);
       
   292     setting.m_value = QSettings::value(key);
       
   293     QSettings::beginGroup(key);
       
   294     QStringList childkeys = QSettings::allKeys();
       
   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)
       
   316         endGroup();
       
   317 
       
   318 
       
   319     return setting;
       
   320 }
       
   321 
   267 
   322 QString BedrockProvisioning::valueAsString(const QString &key, const QVariant &defaultValue)
   268 QString BedrockProvisioning::valueAsString(const QString &key, const QVariant &defaultValue)
   323 {
   269 {
   324     return value(key, defaultValue).toString();
   270     return value(key, defaultValue).toString();
   325 }
   271 }
   326 
   272 
   327 int BedrockProvisioning::valueAsInt(const QString &key, const QVariant &defaultValue)
   273 int BedrockProvisioning::valueAsInt(const QString &key, const QVariant &defaultValue)
   328 {
   274 {
   329     return value(key, defaultValue).toInt();
   275     return value(key, defaultValue).toInt();
       
   276 }
       
   277 
       
   278 qint64 BedrockProvisioning::valueAsInt64(const QString &key, const QVariant &defaultValue)
       
   279 {
       
   280     return value(key, defaultValue).toLongLong();
   330 }
   281 }
   331 
   282 
   332 double BedrockProvisioning::valueAsDouble(const QString &key, const QVariant &defaultValue)
   283 double BedrockProvisioning::valueAsDouble(const QString &key, const QVariant &defaultValue)
   333 {
   284 {
   334     return value(key, defaultValue).toDouble();
   285     return value(key, defaultValue).toDouble();
   339     bool appMissing (!key.startsWith(m_appuid));
   290     bool appMissing (!key.startsWith(m_appuid));
   340     if (appMissing)
   291     if (appMissing)
   341         beginGroup(m_appuid);
   292         beginGroup(m_appuid);
   342 
   293 
   343     QVariant val = QSettings::value(key, defaultValue);
   294     QVariant val = QSettings::value(key, defaultValue);
   344     
   295 
   345     if (appMissing)
   296     if (appMissing)
   346         endGroup();
   297         endGroup();
   347     
   298 
   348     return val;
   299     return val;
   349 }
   300 }
   350 
   301 
   351 int BedrockProvisioning::setValue(const QString &key, const int value)
   302 int BedrockProvisioning::setValue(const QString &key, const int value)
   352 {
   303 {
   381         endGroup();
   332         endGroup();
   382 
   333 
   383     return ret;
   334     return ret;
   384 }
   335 }
   385 
   336 
   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
   337 } // end of namespace BEDROCK_PROVISIONING