phonebookui/phonebookservices/src/cntserviceviewmanager.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 40 b46a585f6909
--- a/phonebookui/phonebookservices/src/cntserviceviewmanager.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/phonebookservices/src/cntserviceviewmanager.cpp	Mon May 03 12:24:20 2010 +0300
@@ -17,7 +17,6 @@
 
 #include "cntserviceviewmanager.h"
 
-#include "cntbaseview.h"
 #include "cntservicehandler.h"
 
 #include "cntservicecontactfetchview.h"
@@ -26,16 +25,25 @@
 #include "cntservicecontactcardview.h"
 #include "cntservicesubeditview.h"
 #include "cntserviceassigncontactcardview.h"
+#include "cntserviceviewfactory.h"
 
+#include <hbabstractitemview.h>
 /*!
 Constructor
 */
-CntServiceViewManager::CntServiceViewManager(CntMainWindow *mainWindow, CntViewParameters::ViewId defaultView, CntServiceHandler *aHandler):
-    CntDefaultViewManager(mainWindow, defaultView),
+CntServiceViewManager::CntServiceViewManager(HbMainWindow *mainWindow, CntServiceHandler *aHandler):
+    CntDefaultViewManager(mainWindow),
     mServiceHandler(aHandler)
 {
+    
+    setViewFactory( new CntServiceViewFactory(mServiceHandler) );
     connect(mServiceHandler, SIGNAL(launchFetch(const QString&, const QString&, const QString&)), 
-            this, SLOT(launchFetch(const QString&, const QString&, const QString&)));
+            this, SLOT(handleFetch(const QString&, const QString&, const QString&)));
+    
+    // Handles signal with mode selected.
+    connect(mServiceHandler, SIGNAL(launchFetchVerified(const QString&, const QString&, const QString&, const QString&)), 
+            this, SLOT(launchFetch(const QString&, const QString&, const QString&, const QString&)));
+    
     connect(mServiceHandler, SIGNAL(launchEditor(QContact)), this, SLOT(launchEditor(QContact)));
     connect(mServiceHandler, SIGNAL(launchContactSelection(QContactDetail)), this, SLOT(launchContactSelection(QContactDetail)));
     connect(mServiceHandler, SIGNAL(launchContactCard(QContact)), this, SLOT(launchContactCard(QContact)));
@@ -52,16 +60,30 @@
 }
 
 /*!
-Launch fetch service view
+Launch fetch service view.
 */
-void CntServiceViewManager::launchFetch(const QString &title, const QString &action, const QString &filter)
+void CntServiceViewManager::handleFetch(const QString &title, const QString &action, const QString &filter)
+{
+    launchFetch(title,action,filter);
+}
+
+/*!
+Launch fetch service view. Uses a mode to determine fetching type.
+*/
+void CntServiceViewManager::launchFetch(const QString &title, const QString &action, const QString &filter, const QString &mode)
 {
-    CntViewParameters params(CntViewParameters::serviceContactFetchView);
-    QMap<int,QVariant> map;
-    map.insert(CntViewParameters::Action, QVariant(action));
-    map.insert(CntViewParameters::Filter, QVariant(filter));
-    map.insert(CntViewParameters::Title, QVariant(title));
-    params.setParameters(map);
+    CntViewParameters params;
+    params.insert(EViewId, serviceContactFetchView);
+    params.insert(ESelectionMode, action);
+    params.insert(CntServiceHandler::EFilter, filter);
+    params.insert(CntServiceHandler::ETitle, title);
+
+    if (!mode.compare(KCntSingleSelectionMode, Qt::CaseSensitive)) {
+        params.insert(ESelectionMode, HbAbstractItemView::SingleSelection);
+    }
+    else {
+        params.insert(ESelectionMode, HbAbstractItemView::MultiSelection);
+    }
     changeView(params);
 }
 
@@ -70,8 +92,11 @@
 */
 void CntServiceViewManager::launchEditor(QContact contact)
 {
-    CntViewParameters params(CntViewParameters::serviceEditView);
-    params.setSelectedContact(contact);
+    CntViewParameters params;
+    params.insert(EViewId, serviceEditView);
+    QVariant var;
+    var.setValue(contact);
+    params.insert(ESelectedContact, var);
     changeView(params);
 }
 
@@ -80,8 +105,11 @@
 */
 void CntServiceViewManager::launchContactSelection(QContactDetail detail)
 {
-    CntViewParameters params(CntViewParameters::serviceContactSelectionView);
-    params.setSelectedDetail(detail);
+    CntViewParameters params;
+    params.insert(EViewId, serviceContactSelectionView);
+    QVariant var;
+    var.setValue(detail);
+    params.insert(ESelectedDetail, var);
     changeView(params);
 }
 
@@ -90,8 +118,11 @@
 */
 void CntServiceViewManager::launchContactCard(QContact contact)
 {
-    CntViewParameters params(CntViewParameters::serviceContactCardView);
-    params.setSelectedContact(contact);
+    CntViewParameters params;
+    params.insert(EViewId, serviceContactCardView);
+    QVariant var;
+    var.setValue(contact);
+    params.insert(ESelectedContact, var);
     changeView(params);
 }
 
@@ -100,67 +131,15 @@
 */
 void CntServiceViewManager::launchAssignContactCard(QContact contact, QContactDetail detail)
 {
-    CntViewParameters params(CntViewParameters::serviceAssignContactCardView);
-    params.setSelectedContact(contact);   
-    params.setSelectedDetail(detail);
+    CntViewParameters params;
+    params.insert(EViewId, serviceAssignContactCardView);
+    QVariant var;
+    var.setValue(contact);
+    params.insert(ESelectedContact, var);
+    QVariant varDetail;
+    varDetail.setValue(detail);
+    params.insert(ESelectedDetail, varDetail);
     changeView(params);
 }
 
-/*!
-Create a view based on ID. \Return pointer to new object if success, 0 if not.
-*/
-CntBaseView *CntServiceViewManager::getView(const CntViewParameters &aArgs)
-{
-    CntBaseView* view(0);
-	
-	CntViewParameters::ViewId id = aArgs.nextViewId();
-
-    switch (id)
-    {
-    // contact fetch service view (fetching contacts from for example messaging)
-    case CntViewParameters::serviceContactFetchView:
-        {
-        view = new CntServiceContactFetchView(mServiceHandler, this);
-        break;
-        }
-    // contact selection service view (selecting contact to edit when updating existing contact)
-    case CntViewParameters::serviceContactSelectionView:
-        {
-        view = new CntServiceContactSelectionView(mServiceHandler, this);
-        break;
-        }
-    // communication launcher service view
-    case CntViewParameters::serviceContactCardView:
-        {
-        view = new CntServiceContactCardView(mServiceHandler, this);
-        break;
-        }
-    // communication launcher service view
-    case CntViewParameters::serviceAssignContactCardView:
-        {
-        view = new CntServiceAssignContactCardView(mServiceHandler, this);
-        break;
-        }
-    // contact edit service view (editing a contact from outside phonebook app)
-    case CntViewParameters::serviceEditView:
-        {
-        view = new CntServiceEditView(mServiceHandler, this);
-        break;
-        }
-    // edit view when editor opened from comm laucher service view
-    case CntViewParameters::serviceSubEditView:
-        {
-        view = new CntServiceSubEditView(mServiceHandler, this);
-        break;
-        }
-    default:
-        {
-        view = CntDefaultViewManager::getView( aArgs );
-        break;
-        }
-    }
-
-    return view;
-}
-
 // end of file