diff -r 03849bd79877 -r fdbfe0a95492 deviceupdatesui/deviceupdatesplugin/src/deviceupdatesdata.cpp --- a/deviceupdatesui/deviceupdatesplugin/src/deviceupdatesdata.cpp Fri Sep 17 19:58:05 2010 +0530 +++ b/deviceupdatesui/deviceupdatesplugin/src/deviceupdatesdata.cpp Fri Oct 15 11:39:02 2010 +0530 @@ -14,37 +14,26 @@ * Description: Device updates data for control panel * */ - -#include -#include -#include #include #include #include "deviceupdatesdata.h" - - +#include DeviceUpdateData::DeviceUpdateData(CpItemDataHelper &itemDataHelper, - const QString &text /*= QString()*/, - const QString &description /*= QString()*/, - const HbIcon &icon /*= HbIcon()*/, - const HbDataFormModelItem *parent /*= 0*/) + const QString &text, + const QString &description, + const HbIcon &icon, + const HbDataFormModelItem *parent) : CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent) { - mproc = NULL; } DeviceUpdateData::~DeviceUpdateData() { CloseDeviceUpdatesUi(); - if (mproc) - { - delete mproc; - mproc = NULL; - } } // ----------------------------------------------------------------------------- @@ -52,10 +41,10 @@ // ----------------------------------------------------------------------------- // void DeviceUpdateData::LaunchDeviceUpdatesUi() - { - - RWsSession ws; - User::LeaveIfError( ws.Connect() ); + { + qDebug("DeviceUpdateData::LaunchDeviceUpdatesUi >>"); + RWsSession ws; + qt_symbian_throwIfError( ws.Connect() ); CleanupClosePushL( ws ); // Find the task with uid TApaTaskList taskList(ws); @@ -66,40 +55,83 @@ } else { - // Create DM UI Process - if(!mproc) - mproc = new QProcess(); - if(mproc->state() != QProcess::Running) - { - QString app = QLatin1String("deviceupdates"); - QStringList args; - args<< QLatin1String("-cp"); - mproc->start(app, args); - mproc->waitForStarted(); - } - } - CleanupStack::PopAndDestroy(); // ws + qDebug("DeviceUpdateData::LaunchDeviceUpdatesUi >> embedding"); + QScopedPointer requester (mRequestManager.create(KService,KInterface,KMethod,true)); //false for NON-EMBEDDED + qDebug("DeviceUpdateData::LaunchDeviceUpdatesUi >> embed end"); + connect(requester.data(), SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&))); + connect(requester.data(), SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&))); + if (!(requester.isNull())) + { + m_currentRequest = requester.data(); + requester->setSynchronous(false); + bool serviceRequestOk = requester->send(); + if (serviceRequestOk) + { + m_currentRequest = requester.take(); + } + else + { + // On a controlled error Qt Highway should call requestError, + // so clean scoped pointer here. + requester.take(); + } + } + } + CleanupStack::PopAndDestroy(); // ws + qDebug("DeviceUpdateData::LaunchDeviceUpdatesUi >> end"); } // --------------------------------------------------------------------------------------------- -// DeviceUpdateData::CloseDmUi +// DeviceUpdateData::CloseDeviceUpdatesUi // closes DM Ui // --------------------------------------------------------------------------------------------- void DeviceUpdateData:: CloseDeviceUpdatesUi() { - if(( mproc )&&(mproc->state() == QProcess::Running)) - { - mproc->close(); - } - + if(m_currentRequest) + { + delete m_currentRequest; + m_currentRequest = NULL; + } } +// --------------------------------------------------------------------------------------------- +// DeviceUpdateData::onLaunchView +// --------------------------------------------------------------------------------------------- void DeviceUpdateData::onLaunchView() { LaunchDeviceUpdatesUi(); } +// --------------------------------------------------------------------------------------------- +// DeviceUpdateData::createSettingView +// --------------------------------------------------------------------------------------------- CpBaseSettingView *DeviceUpdateData::createSettingView() const { - return 0; + return NULL; } + +// --------------------------------------------------------------------------------------------- +// DeviceUpdateData::handleOk +// Handles when request completes successfully +// --------------------------------------------------------------------------------------------- +void DeviceUpdateData::handleOk(const QVariant &returnValue) +{ + if(m_currentRequest) + { + delete m_currentRequest; + m_currentRequest = NULL; + } +} + +// --------------------------------------------------------------------------------------------- +// DeviceUpdateData::handleError +// Handles when request returns with an error +// --------------------------------------------------------------------------------------------- +void DeviceUpdateData::handleError(int error, const QString& errorMessage) +{ + if(m_currentRequest) + { + delete m_currentRequest; + m_currentRequest = NULL; + } +}