homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp
branchRCL_3
changeset 82 5f0182e07bfb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: hsoperatorhandler_p.cpp
+ *
+ */
+#ifdef QT_EXTENSIONS
+
+#include <QDebug>
+#include <XQSettingsKey>
+#include "hsoperatorhandler_p.h"
+#include "hsmenuservice.h"
+#include "caentry.h"
+#include "caservice.h"
+
+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 ========
+
+/*!
+ Constructor
+ \param parent parent object
+ */
+HsOperatorHandlerPrivate::HsOperatorHandlerPrivate(QObject *parent):
+    QObject(parent),
+    mOviStorePresent(false),
+    mOperatorStorePresent(false),
+    mStoreType(NoneType),
+    mOperatorEntry(0),
+    mIcon(),
+    mOperatorStoreTitle(),
+    mOperatorStoreFirst(false)
+{
+    readCentralRepository();
+}
+
+/*!
+ Destructor
+ */
+HsOperatorHandlerPrivate::~HsOperatorHandlerPrivate()
+{
+    delete mOperatorEntry;
+}
+
+/*!
+ Executes action
+ */
+void HsOperatorHandlerPrivate::action()
+{
+    qDebug("HsOperatorHandlerPrivate::action");
+    CaService::instance()->executeCommand(*mOperatorEntry);
+}
+
+/*!
+ Returns Operator icon predefined in Central Repositoryicon
+ \retval icon
+ */
+HbIcon HsOperatorHandlerPrivate::icon()
+{
+    return mIcon;
+}
+
+/*!
+ Returns Operator title text predefined in Central Repositoryicon
+ \retval text
+ */
+QString HsOperatorHandlerPrivate::text()
+{
+    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;
+}
+
+/*!
+ Creates icon based on Central Repository
+ \param crManager settings manager
+ \retval icon
+ */
+HbIcon HsOperatorHandlerPrivate::createIcon(XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager,
+            OperatorStoreIconSkinID,
+            XQSettingsManager::TypeString);
+    if (!variant.isNull() && !variant.toString().isEmpty()) {
+        return HbIcon(variant.toString());
+    } else {
+        return HbIcon(operatorStoreIconPath);
+    }
+}
+
+/*!
+ Creates application entry based on Central Repository
+ \param crManager settings manager
+ \retval entry
+ */
+CaEntry *HsOperatorHandlerPrivate::createAppEntry(
+    XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreApplication, XQSettingsManager::TypeString);
+    if (!variant.isNull()) {
+        CaEntry *operatorEntry = new CaEntry;
+        operatorEntry->setEntryTypeName(Hs::applicationTypeName);
+        operatorEntry->setAttribute(
+            Hs::applicationUidEntryKey, variant.toString());
+
+        return operatorEntry;
+    }
+    return NULL;
+}
+
+/*!
+ Creates url entry based on Central Repository
+ \param crManager settings manager
+ \retval entry
+ */
+CaEntry *HsOperatorHandlerPrivate::createUrlEntry(
+    XQSettingsManager *crManager)
+{
+    QVariant variant = getVariantFromKey(
+            crManager, OperatorStoreURL, XQSettingsManager::TypeString);
+    if (!variant.isNull()) {
+        CaEntry *operatorEntry = new CaEntry;
+        operatorEntry->setEntryTypeName(Hs::urlTypeName);
+        operatorEntry->setAttribute(Hs::urlEntryKey, variant.toString());
+
+        return operatorEntry;
+    }
+    return NULL;
+}
+
+
+/*!
+ 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 (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 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;
+}
+
+/*!
+ Reads Central Repository
+ */
+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);
+
+    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;
+}
+#endif