diff -r 4e8ebe173323 -r 23b5d6a29cce 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 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 +#include +#include +#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