201017_01
authorhgs
Mon, 03 May 2010 16:56:16 +0530
changeset 41 ae07d189b490
parent 40 112f0ac2d1f0
child 42 5e1df1b52eb3
201017_01
main/glxaiwservicehandler.cpp
main/glxaiwservicehandler.h
main/service_conf.xml
--- a/main/glxaiwservicehandler.cpp	Mon May 03 00:53:50 2010 +0530
+++ b/main/glxaiwservicehandler.cpp	Mon May 03 16:56:16 2010 +0530
@@ -24,8 +24,8 @@
 
 #include <QtDebug>
 #include <Qt>
-#include <qstringlist.h>
-#include <qmessagebox.h>
+#include <QDir>
+#include <QStringList>
 
 #include <glxmediamodel.h>
 #include <glxviewsfactory.h>
@@ -41,16 +41,34 @@
 #include <glximageviewermanager.h>
 #include <glxexternalutility.h>
 #include "glxlocalisationstrings.h"
+#include <xqaiwdeclplat.h>
+
+#define IMAGE_FETCHER_SERVICE_NAME QLatin1String("photos.com.nokia.symbian.IImageFetch")
+#define IMAGE_FETCHER_SERVICE_DEPINTERFACE_NAME QLatin1String("photos.Image")
+#define IMAGE_FETCHER_DEPSERVICE_DEPINTERFACE_NAME QLatin1String("com.nokia.services.media.Image")
+#define FILE_VIEWER_SERVICE_NAME QLatin1String("photos.com.nokia.symbian.IFileView")
+
 
 // ----------------------------------------------------------------------------
 // GlxAiwServiceHandler()
 // ----------------------------------------------------------------------------
 //
 GlxAiwServiceHandler::GlxAiwServiceHandler() :
-    HbMainWindow(), mModel(NULL), mView(NULL), mService(NULL),
-            mStateMgr(NULL),mFSView(NULL),mFetcherContextMenu(NULL)
+    HbMainWindow(), 
+    mModel(NULL),
+    mView(NULL),
+    mStateMgr(NULL),
+    mFSView(NULL),
+    mFetcherContextMenu(NULL),
+    mFetcherService(NULL),
+    mNSDIService(NULL),
+    mDSDIService(NULL),
+    mImageViewerService(NULL)
     {
-    mService = new GlxGetImageService(this);
+    mFetcherService = new GlxGetImageService(this);
+    mNSDIService = new GlxGetImageServiceNSDI(this);
+    mDSDIService = new GlxGetImageServiceDSDI(this);
+    
     mImageViewerService = new GlxImageViewerService(this);
 
 #ifdef _DEBUG
@@ -75,10 +93,14 @@
         {
         removeView(mView);
         }
+    delete mStateMgr;
     delete mView;
 	delete mFSView;
     delete mModel;
-    delete mService;
+    delete mFetcherService;
+    delete mNSDIService;
+    delete mDSDIService;
+    delete mImageViewerService;
     }
 
 void GlxAiwServiceHandler::handleClientDisconnect()
@@ -94,16 +116,40 @@
 void GlxAiwServiceHandler::itemSelected(const QModelIndex & index)
     {
     qDebug() << "GlxFetcher::itemSelected";
-    if (mService->isActive())
+    
+    if (mFetcherService->isActive())
         {
-        qDebug() << "GlxFetcher::itemSelected :: SERVICE ACTIVE";
+        qDebug() << "GlxFetcher::itemSelected mFetcherService->isActive()";
         QVariant variant = mModel->data(index, GlxUriRole);
         if (variant.isValid())
             {
             QString itemPath = variant.value<QString> ();
-            qDebug() << "GlxFetcher::itemSelected :: VALID URI -->" << itemPath;
+            QStringList list = (QStringList() << itemPath);
+            mFetcherService->complete(list);
+            }
+        }
+    
+    if (mNSDIService->isActive())
+        {
+    qDebug() << "GlxFetcher::itemSelected mNSDIService->isActive()";
+        QVariant variant = mModel->data(index, GlxUriRole);
+        if (variant.isValid())
+            {
+            QString itemPath = variant.value<QString> ();
             QStringList list = (QStringList() << itemPath);
-            mService->complete(list);
+            mNSDIService->complete(list);
+            }
+        }
+    
+    if (mDSDIService->isActive())
+        {
+    qDebug() << "GlxFetcher::itemSelected mDSDIService->isActive()";
+        QVariant variant = mModel->data(index, GlxUriRole);
+        if (variant.isValid())
+            {
+            QString itemPath = variant.value<QString> ();
+            QStringList list = (QStringList() << itemPath);
+            mDSDIService->complete(list);
             }
         }
     }	
@@ -112,6 +158,7 @@
 
 void GlxAiwServiceHandler::launchFetcher()
     {
+    qDebug() << "GlxAiwServiceHandler::launchFetcher START";
     HbStyleLoader::registerFilePath(":/data/photos.css");
     GlxModelParm modelParm(KGlxCollectionPluginAllImplementationUid, 0);
     mModel = new GlxMediaModel(modelParm);
@@ -133,6 +180,7 @@
 	connect ( mView, SIGNAL(itemSpecificMenuTriggered(qint32,QPointF ) ),
 			this, SLOT( itemSpecificMenuTriggered(qint32,QPointF ) ),
 			Qt::QueuedConnection );
+	qDebug() << "GlxAiwServiceHandler::launchFetcher END";
     }
 
 void GlxAiwServiceHandler::itemSpecificMenuTriggered(qint32 viewId,QPointF pos)
@@ -202,8 +250,7 @@
 // ----------------------------------------------------------------------------
 //
 GlxGetImageService::GlxGetImageService(GlxAiwServiceHandler* parent) :
-            XQServiceProvider(
-                    QLatin1String("com.nokia.services.media.Image"), parent),
+            XQServiceProvider(IMAGE_FETCHER_SERVICE_NAME, parent),
             mServiceApp(parent)
     {
     mImageRequestIndex = -1;
@@ -267,7 +314,173 @@
 // fetch()
 // ----------------------------------------------------------------------------
 //
-void GlxGetImageService::fetch(QVariantMap filter, QVariant flag)
+void GlxGetImageService::fetch()
+    {
+    mImageRequestIndex = setCurrentRequestAsync();
+    mServiceApp->launchFetcher();
+    }
+
+// ----------------------------------------------------------------------------
+// GlxGetImageService()
+// ----------------------------------------------------------------------------
+//
+GlxGetImageServiceNSDI::GlxGetImageServiceNSDI(GlxAiwServiceHandler* parent) :
+            XQServiceProvider(IMAGE_FETCHER_SERVICE_DEPINTERFACE_NAME, parent),
+            mServiceApp(parent)
+    {
+    mImageRequestIndex = -1;
+    publishAll();
+    connect(this, SIGNAL(clientDisconnected()), mServiceApp,
+            SLOT(handleClientDisconnect()));
+    }
+
+// ----------------------------------------------------------------------------
+// ~GlxGetImageService()
+// ----------------------------------------------------------------------------
+//
+GlxGetImageServiceNSDI::~GlxGetImageServiceNSDI()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// fetchFailed()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceNSDI::fetchFailed(int errorCode)
+    {
+    QStringList filesList;
+    filesList.insert(0, QString::number(errorCode));//result
+    doComplete(filesList);
+    }
+
+// ----------------------------------------------------------------------------
+// complete()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceNSDI::complete(QStringList filesList)
+    {
+    doComplete(filesList);
+    }
+
+// ----------------------------------------------------------------------------
+// doComplete()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceNSDI::doComplete(QStringList filesList)
+    {
+    if (isActive())
+        {
+        completeRequest(mImageRequestIndex, filesList);
+        mImageRequestIndex = -1;
+        connect(this, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// isActive()
+// ----------------------------------------------------------------------------
+//
+bool GlxGetImageServiceNSDI::isActive()
+    {
+    return mImageRequestIndex > -1;
+    }
+
+// ----------------------------------------------------------------------------
+// fetch()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceNSDI::fetch(QVariantMap filter, QVariant flag)
+    {
+    qDebug() << "GlxGetImageServiceNSDI::fetch WITH PARAMETER START";
+    Q_UNUSED(filter)
+    Q_UNUSED(flag)
+    fetch();
+    qDebug() << "GlxGetImageServiceNSDI::fetch WITH PARAMETER END";
+    }
+
+// ----------------------------------------------------------------------------
+// fetch()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceNSDI::fetch()
+    {
+    qDebug() << "GlxGetImageServiceNSDI::fetch START";
+    mImageRequestIndex = setCurrentRequestAsync();
+    mServiceApp->launchFetcher();
+    qDebug() << "GlxGetImageServiceNSDI::fetch END";
+    }
+
+//==============================================================================//
+// ----------------------------------------------------------------------------
+// GlxGetImageService()
+// ----------------------------------------------------------------------------
+//
+GlxGetImageServiceDSDI::GlxGetImageServiceDSDI(GlxAiwServiceHandler* parent) :
+            XQServiceProvider(IMAGE_FETCHER_DEPSERVICE_DEPINTERFACE_NAME, parent),
+            mServiceApp(parent)
+    {
+    mImageRequestIndex = -1;
+    publishAll();
+    connect(this, SIGNAL(clientDisconnected()), mServiceApp,
+            SLOT(handleClientDisconnect()));
+    }
+
+// ----------------------------------------------------------------------------
+// ~GlxGetImageService()
+// ----------------------------------------------------------------------------
+//
+GlxGetImageServiceDSDI::~GlxGetImageServiceDSDI()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// fetchFailed()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceDSDI::fetchFailed(int errorCode)
+    {
+    QStringList filesList;
+    filesList.insert(0, QString::number(errorCode));//result
+    doComplete(filesList);
+    }
+
+// ----------------------------------------------------------------------------
+// complete()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceDSDI::complete(QStringList filesList)
+    {
+    doComplete(filesList);
+    }
+
+// ----------------------------------------------------------------------------
+// doComplete()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceDSDI::doComplete(QStringList filesList)
+    {
+    if (isActive())
+        {
+        completeRequest(mImageRequestIndex, filesList);
+        mImageRequestIndex = -1;
+        connect(this, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// isActive()
+// ----------------------------------------------------------------------------
+//
+bool GlxGetImageServiceDSDI::isActive()
+    {
+    return mImageRequestIndex > -1;
+    }
+
+// ----------------------------------------------------------------------------
+// fetch()
+// ----------------------------------------------------------------------------
+//
+void GlxGetImageServiceDSDI::fetch(QVariantMap filter, QVariant flag)
     {
     Q_UNUSED(filter)
     Q_UNUSED(flag)
@@ -278,8 +491,7 @@
 // ----------GlxImageViewerService---------------
 
 GlxImageViewerService::GlxImageViewerService(GlxAiwServiceHandler* parent) :
-    XQServiceProvider(QLatin1String(
-            "com.nokia.services.media.com.nokia.symbian.IFileView"), parent),
+    XQServiceProvider(FILE_VIEWER_SERVICE_NAME, parent),
             mServiceApp(parent), mAsyncReqId(-1), mAsyncRequest(false),
             mImageViewerInstance(NULL)
 
@@ -312,8 +524,8 @@
         {
         mImageViewerInstance = CGlxImageViewerManager::InstanceL();
         }
-    file.replace(QString("/"), QString("\\"));
-    TPtrC16 str(reinterpret_cast<const TUint16*> (file.utf16()));
+    QString filepath(QDir::toNativeSeparators(file.at(0)));
+    TPtrC16 str(reinterpret_cast<const TUint16*> (filepath.utf16()));
     HBufC* uri = str.Alloc();
 
     mImageViewerInstance->SetImageUriL(*uri);
--- a/main/glxaiwservicehandler.h	Mon May 03 00:53:50 2010 +0530
+++ b/main/glxaiwservicehandler.h	Mon May 03 16:56:16 2010 +0530
@@ -34,6 +34,9 @@
 class GlxImageViewerService;
 class GlxStateManager;
 class CGlxImageViewerManager;
+class GlxGetImageServiceNSDI;
+class GlxGetImageServiceDSDI;
+
 /**
  *  GlxAiwServiceHandler
  * 
@@ -64,11 +67,14 @@
 private:
     GlxMediaModel *mModel;
     GlxView* mView;
-    GlxGetImageService* mService;
-	GlxImageViewerService* mImageViewerService;
 	GlxStateManager *mStateMgr;
 	GlxView* mFSView;
     HbMenu *mFetcherContextMenu;
+
+    GlxGetImageService* mFetcherService;
+    GlxGetImageServiceNSDI* mNSDIService;
+    GlxGetImageServiceDSDI* mDSDIService;
+    GlxImageViewerService* mImageViewerService;
     };
 
 /**
@@ -85,6 +91,61 @@
     void complete( QStringList filesList);
     
 public slots://for QTHighway to notify provider about request
+    void fetch();
+    
+public slots://for provider to notify client
+    void fetchFailed( int errorCode );
+    
+private:
+    void doComplete( QStringList filesList);
+    
+private:
+    int mImageRequestIndex;
+    GlxAiwServiceHandler* mServiceApp;
+};
+
+/**
+ *  GlxGetImageServiceDSDI
+ *  Service provide for new service and depricated interface
+ */ 
+class GlxGetImageServiceNSDI : public XQServiceProvider
+{
+    Q_OBJECT
+public:
+    GlxGetImageServiceNSDI( GlxAiwServiceHandler *parent = 0 );
+    ~GlxGetImageServiceNSDI();
+    bool isActive();
+    void complete( QStringList filesList);
+    
+public slots://for QTHighway to notify provider about request
+    void fetch( QVariantMap filter , QVariant flag );
+    void fetch();
+    
+public slots://for provider to notify client
+    void fetchFailed( int errorCode );
+    
+private:
+    void doComplete( QStringList filesList);
+    
+private:
+    int mImageRequestIndex;
+    GlxAiwServiceHandler* mServiceApp;
+};
+
+/**
+ *  GlxGetImageServiceDSDI
+ *  Service provide for depricated service and depricated interface
+ */ 
+class GlxGetImageServiceDSDI : public XQServiceProvider
+{
+    Q_OBJECT
+public:
+    GlxGetImageServiceDSDI( GlxAiwServiceHandler *parent = 0 );
+    ~GlxGetImageServiceDSDI();
+    bool isActive();
+    void complete( QStringList filesList);
+    
+public slots://for QTHighway to notify provider about request
     void fetch( QVariantMap filter, QVariant flag);
     
 public slots://for provider to notify client
--- a/main/service_conf.xml	Mon May 03 00:53:50 2010 +0530
+++ b/main/service_conf.xml	Mon May 03 16:56:16 2010 +0530
@@ -1,13 +1,18 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <service>
-  <name>com.nokia.services.media</name>
+  <name>photos</name>
   <filepath>No path</filepath>
   <description>Image Fetcher</description>
   <interface>
      <name>Image</name>
      <version>1.0</version>
      <description>Interface which may do something</description>
-     <customproperty key="txt_aiw_action_text">Fetch</customproperty>
+     <customproperty key="deprecatedsn">com.nokia.services.media</customproperty>
+   </interface>
+  <interface>
+     <name>com.nokia.symbian.IImageFetch</name>
+     <version>1.0</version>
+     <description>Interface which may do something</description>
    </interface>
   <interface>
      <name>com.nokia.symbian.IFileView</name>