diff -r f00a6757af32 -r 5f0182e07bfb homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp --- /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 +#include +#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