diff -r 3fec62e6e7fc -r 90fe62538f66 controlpanelui/src/cpringtoneview/src/cpringtoneview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controlpanelui/src/cpringtoneview/src/cpringtoneview.cpp Tue Aug 31 15:15:28 2010 +0300 @@ -0,0 +1,147 @@ +/* + * 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: + * + */ +#include "cpringtoneview.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CpRingToneView::CpRingToneView( QGraphicsItem *parent ): + CpBaseSettingView(0, parent), + mToneTypeList( new HbListWidget(this) ), + mReq(0), mProcessing(false) +{ + HbStyleLoader::registerFilePath(":/widgetml/cpdataformlistentryviewitem.css"); + HbStyleLoader::registerFilePath(":/widgetml/cpdataformlistentryviewitem_color.css"); + HbStyleLoader::registerFilePath(":/widgetml/cpdataformlistentryviewitem.widgetml"); + + HbDataForm *form = qobject_cast ( widget() ); + form->setHeading(hbTrId("txt_cp_subhead_select_tone_type")); + + HbDataFormModel *model = new HbDataFormModel(); + QList< QPair > tonesTypeList; + tonesTypeList << qMakePair( QString("qtg_large_tone_off"), hbTrId("txt_cp_list_no_tone") ) + << qMakePair( QString("qtg_large_tone"), hbTrId("txt_cp_list_tone") ) + << qMakePair( QString("qtg_large_music"), hbTrId("txt_cp_list_music") ) + << qMakePair( QString("qtg_large_ovistore"), hbTrId("txt_cp_list_get_more_tones") ); + + for (int i = 0; i < tonesTypeList.count(); ++i) { + HbDataFormModelItem *itemData = new HbDataFormModelItem(); + itemData->setType ( static_cast (CpSettingFormEntryItemData::ListEntryItem) ); + itemData->setLabel(tonesTypeList.at(i).second); + itemData->setIcon(tonesTypeList.at(i).first); + model->appendDataFormItem(itemData, model->invisibleRootItem()); + } + connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex))); + form->setModel(model); +} +CpRingToneView::~CpRingToneView() +{ + if (mReq) { + delete mReq; + } +} + +void CpRingToneView::itemActivated( const QModelIndex &index ) +{ + //avoid responding to the second or later consecutive click + if (mProcessing) { + return; + } + mProcessing = true; + int nRow = index.row(); + + switch(nRow) { + case 0: //no tone, set default no sound + emit selOK(QString("")); + emit aboutToClose(); + break; + case 1: //tone + launchMediaFetcher( "com.nokia.symbian.IToneFetch", "fetch()" ); + break; + case 2: //music + launchMediaFetcher("com.nokia.symbian.IMusicFetch", "fetch()" ); + break; + case 3: //get more tones + default: + break; + } +} +void CpRingToneView::handleOk(const QVariant &result) +{ + mProcessing = false; + CPFW_LOG( "CpRingToneView::handleOk" ); + if (!result.canConvert() || result.toString().length() == 0 ) //error result + { + return; + } + hide(); + emit selOK( result.value() ); + emit aboutToClose(); +} + + +void CpRingToneView::handleError(int errorCode, const QString& errorMessage) +{ + mProcessing = false; + emit(selError( errorCode, errorMessage )); +} + +void CpRingToneView::launchMediaFetcher( const QString &strService, const QString &strItface ) +{ + CPFW_LOG("CpRingToneView::launchMediaFetcher, START"); + if(mReq) + { + delete mReq; + mReq = 0; + } + //launch media fetcher + mReq = mAppMgr.create(strService, strItface, true); + mReq->setSynchronous(false); + if (!mReq) + { + CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher start failed"); + return; + } + else + { //use QueuedConnection so that requestError will not be emitted when selecting one tone + connect(mReq, SIGNAL(requestOk(QVariant)), SLOT( handleOk(QVariant)), Qt::QueuedConnection); + connect(mReq, SIGNAL(requestError(int, QString)), SLOT(handleError(int, QString))); + } + + QList args; + args << QVariant(QString("")); + mReq->setArguments(args); + // Make the request + if (!mReq->send()) + { + CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher calling failed"); + } + CPFW_LOG("CpRingToneView::launchMediaFetcher, END"); +} +