homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp
changeset 71 1db7cc813a4e
parent 46 23b5d6a29cce
child 81 7dd137878ff8
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Fri Jul 23 13:47:57 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Fri Aug 06 13:36:36 2010 +0300
@@ -14,21 +14,27 @@
  * Description: hsoperatorhandler_p.cpp
  *
  */
-#ifndef NO_QT_EXTENSIONS
+#ifdef QT_EXTENSIONS
 
 #include <QDebug>
-#include <XQSettingsManager>
 #include <XQSettingsKey>
 #include "hsoperatorhandler_p.h"
 #include "hsmenuservice.h"
 #include "caentry.h"
 #include "caservice.h"
 
-const int AppLibUid         = 0x20022F97;
-const int IconId            = 0x00000001;
-const int OperatorAppUid    = 0x00000002;
-const int OperatorUrl       = 0x00000003;
-const int OperatorText      = 0x00000004;
+const int AppLibUid                 = 0x20022F97;
+const int IncludeOperatorStore      = 0x00000001;
+const int OperatorStoreType         = 0x00000002;
+const int OperatorStoreTitle        = 0x00000003;
+const int OperatorStoreURL          = 0x00000004;
+const int OperatorStoreIconSkinID   = 0x00000005;
+const int OperatorStoreApplication  = 0x00000006;
+const int OperatorStore1stPopUp     = 0x00000007;
+const int RemoveOviStore            = 0x00000008;
+const char *operatorStoreIconPath
+        = "z:/private/20022F35/customsvg/operatorstore.svg";
+
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -38,9 +44,13 @@
  */
 HsOperatorHandlerPrivate::HsOperatorHandlerPrivate(QObject *parent):
     QObject(parent),
+    mOviStorePresent(false),
+    mOperatorStorePresent(false),
+    mStoreType(NoneType),
     mOperatorEntry(0),
     mIcon(),
-    mText()
+    mOperatorStoreTitle(),
+    mOperatorStoreFirst(false)
 {
     readCentralRepository();
 }
@@ -72,12 +82,39 @@
 }
 
 /*!
- Returns Operator icon predefined in Central Repositoryicon
- \retval icon
+ Returns Operator title text predefined in Central Repositoryicon
+ \retval text
  */
 QString HsOperatorHandlerPrivate::text()
 {
-    return mText;
+    return mOperatorStoreTitle;
+}
+
+/*!
+ Returns Ovi Store presence value predefined in Central Repositoryicon
+ \retval true if Ovi Store should be present in toolbar
+ */
+bool HsOperatorHandlerPrivate::oviStorePresent()
+{
+    return mOviStorePresent;
+}
+
+/*!
+ Returns Operator Store presence value predefined in Central Repositoryicon
+ \retval true if Operator Store should be present in toolbar
+ */
+bool HsOperatorHandlerPrivate::operatorStorePresent()
+{
+    return mOperatorStorePresent;
+}
+
+/*!
+ Returns if Operator Store should first in toolbar
+ \retval true if Operator Store should first in toolbar
+ */
+bool HsOperatorHandlerPrivate::operatorStoreFirst()
+{
+    return mOperatorStoreFirst;
 }
 
 /*!
@@ -87,41 +124,15 @@
  */
 HbIcon HsOperatorHandlerPrivate::createIcon(XQSettingsManager *crManager)
 {
-    qDebug("HsOperatorHandlerPrivate::createIcon");
-    HbIcon icon;
-
-    XQCentralRepositorySettingsKey iconKey(AppLibUid, IconId);
-    QVariant iconVarian = crManager->readItemValue(
-                              iconKey, XQSettingsManager::TypeString);
-
-    if (!iconVarian.isNull() && !iconVarian.toString().isEmpty()) {
-        qDebug() << "HsOperatorHandlerPrivate::createIcon"
-                 << iconVarian.toString();
-        icon = HbIcon(iconVarian.toString());
+    QVariant variant = getVariantFromKey(
+            crManager,
+            OperatorStoreIconSkinID,
+            XQSettingsManager::TypeString);
+    if (!variant.isNull() && !variant.toString().isEmpty()) {
+        return HbIcon(variant.toString());
+    } else {
+        return HbIcon(operatorStoreIconPath);
     }
-    return icon;
-}
-
-/*!
- Creates text based on Central Repository
- \param crManager settings manager
- \retval icon
- */
-QString HsOperatorHandlerPrivate::readText(XQSettingsManager *crManager)
-{
-    qDebug("HsOperatorHandlerPrivate::readText");
-    QString text;
-
-    XQCentralRepositorySettingsKey textKey(AppLibUid, OperatorText);
-    QVariant textVariant = crManager->readItemValue(
-                               textKey, XQSettingsManager::TypeString);
-
-    if (!textVariant.isNull() && textVariant.isValid()) {
-        qDebug() << "HsOperatorHandlerPrivate::createIcon"
-                 << textVariant.toString();
-        text = textVariant.toString();
-    }
-    return text;
 }
 
 /*!
@@ -132,19 +143,14 @@
 CaEntry *HsOperatorHandlerPrivate::createAppEntry(
     XQSettingsManager *crManager)
 {
-    qDebug("HsOperatorHandlerPrivate::createAppEntry");
-    XQCentralRepositorySettingsKey appUidKey(AppLibUid, OperatorAppUid);
-    QVariant appUidVariant = crManager->readItemValue(
-                                 appUidKey, XQSettingsManager::TypeString);
-
-    if (!appUidVariant.isNull() && !appUidVariant.toString().isEmpty()) {
-        qDebug() << "HsOperatorHandlerPrivate::createAppEntry"
-                 << appUidVariant.toString();
-
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreApplication, XQSettingsManager::TypeString);
+    if (!variant.isNull()) {
         CaEntry *operatorEntry = new CaEntry;
         operatorEntry->setEntryTypeName(applicationTypeName());
         operatorEntry->setAttribute(
-            applicationUidEntryKey(), appUidVariant.toString());
+            applicationUidEntryKey(), variant.toString());
+
         return operatorEntry;
     }
     return NULL;
@@ -158,20 +164,104 @@
 CaEntry *HsOperatorHandlerPrivate::createUrlEntry(
     XQSettingsManager *crManager)
 {
-    qDebug("HsOperatorHandlerPrivate::createUrlEntry");
-    CaEntry *operatorEntry = new CaEntry;
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreURL, XQSettingsManager::TypeString);
+    if (!variant.isNull()) {
+        CaEntry *operatorEntry = new CaEntry;
+        operatorEntry->setEntryTypeName(urlTypeName());
+        operatorEntry->setAttribute(urlEntryKey(), variant.toString());
+
+        return operatorEntry;
+    }
+    return NULL;
+}
+
 
-    XQCentralRepositorySettingsKey urlKey(AppLibUid, OperatorUrl);
-    QVariant urlVariant = crManager->readItemValue(
-                              urlKey, XQSettingsManager::TypeString);
+/*!
+ Generic function to get stores presence values
+ \param crManager settings manager
+ \param storePresenceKey store key(Ovi or Operator)
+ \retval entry
+ */
+bool HsOperatorHandlerPrivate::storeValue(
+        XQSettingsManager *crManager, int storePresenceKey)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, storePresenceKey, XQSettingsManager::TypeInt);
+    if (!variant.isNull()) {
+        return bool(variant.toInt());
+    }
+    return false;
+}
+
+/*!
+ Generic function to get QVariant for CR key
+ \param crManager settings manager
+ \param crKey CR key
+ \param type type of QVariant to be returned
+ \retval QVariant
+ */
+QVariant HsOperatorHandlerPrivate::getVariantFromKey(
+        XQSettingsManager *crManager, int crKey, XQSettingsManager::Type type)
+{
+    XQCentralRepositorySettingsKey presenceKey(AppLibUid, crKey);
+    QVariant presenceVariant = crManager->readItemValue(
+            presenceKey, type);
 
-    if (!urlVariant.isNull() && !urlVariant.toString().isEmpty()) {
-        operatorEntry->setEntryTypeName(urlTypeName());
-        operatorEntry->setAttribute(urlEntryKey(), urlVariant.toString());
-        qDebug() << "HsOperatorHandlerPrivate::createUrlEntry"
-                 << urlVariant.toString();
+    if (presenceVariant.isValid()) {
+        qDebug() << "HsOperatorHandlerPrivate::storePresent"
+                 << presenceVariant.toInt();
+        return presenceVariant;
+    }
+    return QVariant();
+}
+
+/*!
+ Generic function to get store type(Url/App)
+ \param crManager settings manager
+ \retval HsStoreType store type
+ */
+HsOperatorHandlerPrivate::HsStoreType
+        HsOperatorHandlerPrivate::operatorStoreType(
+                XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreType, XQSettingsManager::TypeInt);
+    if (!variant.isNull()) {
+        return HsOperatorHandlerPrivate::HsStoreType(variant.toInt());
     }
-    return operatorEntry;
+    return NoneType;
+}
+
+/*!
+ Creates text based on Central Repository
+ \param crManager settings manager
+ \retval icon
+ */
+QString HsOperatorHandlerPrivate::operatorStoreTitle(XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreTitle, XQSettingsManager::TypeString);
+    if (!variant.isNull()) {
+        return variant.toString();
+    }
+    return QString();
+}
+
+/*!
+ Retrives information if Operator Store should first in toolbarbased
+ (from Central Repository)
+ \param crManager settings manager
+ \retval true if Operator Store should be first
+ */
+bool HsOperatorHandlerPrivate::operatorStoreFirst(XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStore1stPopUp, XQSettingsManager::TypeInt);
+    if (!variant.isNull()) {
+        return bool(variant.toInt());
+    }
+    return false;
 }
 
 /*!
@@ -180,12 +270,21 @@
 void HsOperatorHandlerPrivate::readCentralRepository()
 {
     XQSettingsManager *crManager = new XQSettingsManager;
+    //this key indicates that ovi store should be removed
+    mOviStorePresent = !storeValue(crManager, RemoveOviStore);
+    //this key indicates that operator store should be added
+    mOperatorStorePresent = storeValue(crManager, IncludeOperatorStore);
 
-    mIcon = createIcon(crManager);
-    mText = readText(crManager);
-    mOperatorEntry = createAppEntry(crManager);
-    if (!mOperatorEntry) {
-        mOperatorEntry = createUrlEntry(crManager);
+    if (mOperatorStorePresent) {
+        mStoreType = operatorStoreType(crManager);
+        if (mStoreType == ApplicationType) {
+            mOperatorEntry = createAppEntry(crManager);
+        } else {
+            mOperatorEntry = createUrlEntry(crManager);
+        }
+        mOperatorStoreTitle = operatorStoreTitle(crManager);
+        mOperatorStoreFirst = operatorStoreFirst(crManager);
+        mIcon = createIcon(crManager);
     }
     delete crManager;
 }