homescreenapp/hsutils/src/hsimagefetcherclient.cpp
branchRCL_3
changeset 82 5f0182e07bfb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsimagefetcherclient.cpp	Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2010 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:  Photos image fetcher client.
+*
+*/
+
+
+#include "hsimagefetcherclient.h"
+
+#include <QDir>
+#include <QDebug>
+#include <QVariant>
+#ifdef Q_OS_SYMBIAN
+#include <xqaiwinterfacedescriptor.h>
+#include <xqaiwdecl.h>
+#endif // Q_OS_SYMBIAN
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+/*!
+    \class HsImageFetcherClient
+    \ingroup group_hsutils
+    \brief 
+*/
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
+  : QObject(parent),
+    mReq(0)
+{
+}
+#else
+HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
+  : QObject(parent)
+{
+}
+#endif // Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+HsImageFetcherClient::~HsImageFetcherClient()
+{
+#ifdef Q_OS_SYMBIAN
+    delete mReq;
+#endif // Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageFetcherClient::fetch()
+{
+#ifdef Q_OS_SYMBIAN
+    qDebug() << "HsImageFetcherClient::fetch START";
+
+    if (mReq) {
+        delete mReq;
+        mReq = 0;
+    }
+
+    mReq = mAppMgr.create(XQI_IMAGE_FETCH, XQOP_IMAGE_FETCH, false);
+    if (mReq) {        
+        connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
+        connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+    } else {
+        qCritical() << "HsImageFetcherClient::fetch -> Create request failed";
+        return;
+    }
+
+    if (!(mReq)->send()) {
+        qCritical() << "HsImageFetcherClient::fetch -> Send failed" << mReq->lastErrorMessage();;
+    }
+
+    qDebug() << "HsImageFetcherClient::fetch END";
+#endif // Q_OS_SYMBIAN
+}
+
+
+
+// Aiw request responses
+void HsImageFetcherClient::handleOk(const QVariant &result)
+{
+#ifdef Q_OS_SYMBIAN
+    // disconnect error signal as it will give -4999 (EConnectionClosed) error afterwards even though image
+    // is fetched successfully
+    disconnect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+
+    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+    int implementationId=-1;
+    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+    if (result.canConvert<QString>()) {
+        qDebug("HsImageFetcherClient::%x:handleOk result=%s,%s",
+               implementationId,
+               result.typeName(),
+               qPrintable(result.value<QString>()));
+
+        emit fetchCompleted(result.value<QString>());
+    } else if (result.canConvert<QStringList>()) {
+        QStringList resultList = result.value<QStringList>();
+	    if (resultList.size() > 0) {
+	        //for debug
+	        QString msg = QString("HsImageFetcherClient::handleOk, size=")+QString::number( resultList.size() )+QString("\n");
+	        for (int i(0), size(resultList.size()); i < size; ++i) {
+                msg += QString::number(i) + QString(":") + resultList[i] + QString("\n");
+	        }
+	        qDebug()<<msg;
+		}
+        emit fetchCompleted(resultList[0]);
+	} else {
+        qCritical("AppMgrClient::%x:handleOk result=%s. Not displayable",
+            implementationId,
+            result.typeName());
+        emit fetchFailed(-1, QString());
+    }
+#else
+	Q_UNUSED(result)
+#endif // Q_OS_SYMBIAN
+}
+
+void HsImageFetcherClient::handleError(int errorCode, const QString &errorMessage)
+{
+#ifdef Q_OS_SYMBIAN
+    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+    int implementationId = -1;
+    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+    qCritical("HsImageFetcherClient::%x:handleError code=%d, errorMessage:%s",
+        implementationId, errorCode, qPrintable(errorMessage));
+    emit fetchFailed(errorCode, errorMessage);
+#else
+	Q_UNUSED(errorCode)
+	Q_UNUSED(errorMessage)
+#endif // Q_OS_SYMBIAN
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT