homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp
changeset 46 23b5d6a29cce
child 71 1db7cc813a4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Fri May 14 15:43:04 2010 +0300
@@ -0,0 +1,192 @@
+/*
+ * 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
+ *
+ */
+#ifndef NO_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;
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ Constructor
+ \param parent parent object
+ */
+HsOperatorHandlerPrivate::HsOperatorHandlerPrivate(QObject *parent):
+    QObject(parent),
+    mOperatorEntry(0),
+    mIcon(),
+    mText()
+{
+    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 icon predefined in Central Repositoryicon
+ \retval icon
+ */
+QString HsOperatorHandlerPrivate::text()
+{
+    return mText;
+}
+
+/*!
+ Creates icon based on Central Repository
+ \param crManager settings manager
+ \retval icon
+ */
+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());
+    }
+    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;
+}
+
+/*!
+ Creates application entry based on Central Repository
+ \param crManager settings manager
+ \retval entry
+ */
+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();
+
+        CaEntry *operatorEntry = new CaEntry;
+        operatorEntry->setEntryTypeName(applicationTypeName());
+        operatorEntry->setAttribute(
+            applicationUidEntryKey(), appUidVariant.toString());
+        return operatorEntry;
+    }
+    return NULL;
+}
+
+/*!
+ Creates url entry based on Central Repository
+ \param crManager settings manager
+ \retval entry
+ */
+CaEntry *HsOperatorHandlerPrivate::createUrlEntry(
+    XQSettingsManager *crManager)
+{
+    qDebug("HsOperatorHandlerPrivate::createUrlEntry");
+    CaEntry *operatorEntry = new CaEntry;
+
+    XQCentralRepositorySettingsKey urlKey(AppLibUid, OperatorUrl);
+    QVariant urlVariant = crManager->readItemValue(
+                              urlKey, XQSettingsManager::TypeString);
+
+    if (!urlVariant.isNull() && !urlVariant.toString().isEmpty()) {
+        operatorEntry->setEntryTypeName(urlTypeName());
+        operatorEntry->setAttribute(urlEntryKey(), urlVariant.toString());
+        qDebug() << "HsOperatorHandlerPrivate::createUrlEntry"
+                 << urlVariant.toString();
+    }
+    return operatorEntry;
+}
+
+/*!
+ Reads Central Repository
+ */
+void HsOperatorHandlerPrivate::readCentralRepository()
+{
+    XQSettingsManager *crManager = new XQSettingsManager;
+
+    mIcon = createIcon(crManager);
+    mText = readText(crManager);
+    mOperatorEntry = createAppEntry(crManager);
+    if (!mOperatorEntry) {
+        mOperatorEntry = createUrlEntry(crManager);
+    }
+    delete crManager;
+}
+#endif