phonebookui/phonebookservices/src/cntserviceviewmanager.cpp
changeset 24 0ba2181d7c28
child 25 76a2435edfd4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/phonebookservices/src/cntserviceviewmanager.cpp	Fri Mar 19 09:27:18 2010 +0200
@@ -0,0 +1,191 @@
+/*
+* 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 "cntserviceviewmanager.h"
+
+#include "cntbaseview.h"
+#include "cntservicehandler.h"
+
+#include "cntservicecontactfetchview.h"
+#include "cntservicecontactselectionview.h"
+#include "cntserviceeditview.h"
+#include "cntservicecontactcardview.h"
+#include "cntservicesubeditview.h"
+#include "cntserviceassigncontactcardview.h"
+
+/*!
+Constructor
+*/
+CntServiceViewManager::CntServiceViewManager(CntMainWindow *mainWindow, CntViewParameters::ViewId defaultView, CntServiceHandler *aHandler):
+    CntViewManager(mainWindow, defaultView),
+    mServiceHandler(aHandler)
+{
+    connect(mServiceHandler, SIGNAL(launchFetch(const QString&, const QString&, const QString&)), 
+            this, SLOT(launchFetch(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)));
+    connect(mServiceHandler, SIGNAL(launchAssignContactCard(QContact, QContactDetail)), this, 
+            SLOT(launchAssignContactCard(QContact, QContactDetail)));
+}
+
+/*!
+Destructor
+*/
+CntServiceViewManager::~CntServiceViewManager()
+{
+/*Remove all views*/
+}
+
+/*!
+Launch fetch service view
+*/
+void CntServiceViewManager::launchFetch(const QString &title, const QString &action, const QString &filter)
+{
+    CntBaseView *view = getView(CntViewParameters::serviceContactFetchView);
+    if (view)
+    {
+        //add view to main window
+        addViewToWindow(view);
+        view->setTitle(title);
+        static_cast<CntServiceContactFetchView*>(view)->setActionFilter(action, filter);
+        CntViewParameters viewParameters(CntViewParameters::noView);
+        view->activateView(viewParameters);
+    }
+}
+
+/*!
+Launch editor service view
+*/
+void CntServiceViewManager::launchEditor(QContact contact)
+{
+    CntBaseView *view = getView(CntViewParameters::serviceEditView);
+    if (view)
+    {
+        //add view to main window
+        addViewToWindow(view);
+        CntViewParameters viewParameters(CntViewParameters::noView);
+        viewParameters.setSelectedContact(contact);   
+        view->activateView(viewParameters);
+    }
+}
+
+/*!
+Launch contact selection service view (update existing contact with detail)
+*/
+void CntServiceViewManager::launchContactSelection(QContactDetail detail)
+{
+    CntBaseView *view = getView(CntViewParameters::serviceContactSelectionView);
+    if (view)
+    {
+        //add view to main window
+        addViewToWindow(view);
+        CntViewParameters viewParameters(CntViewParameters::noView);
+        viewParameters.setSelectedDetail(detail);   
+        view->activateView(viewParameters);
+    }
+}
+
+/*!
+Launch contact card service view
+*/
+void CntServiceViewManager::launchContactCard(QContact contact)
+{
+    CntBaseView *view = getView(CntViewParameters::serviceContactCardView);
+    if (view)
+    {
+        //add view to main window
+        addViewToWindow(view);
+        CntViewParameters viewParameters(CntViewParameters::noView);
+        viewParameters.setSelectedContact(contact);   
+        view->activateView(viewParameters);
+    }
+}
+
+/*!
+Launch assign (temporary) contact card service view
+*/
+void CntServiceViewManager::launchAssignContactCard(QContact contact, QContactDetail detail)
+{
+    CntBaseView *view = getView(CntViewParameters::serviceAssignContactCardView);
+    if (view)
+    {
+        //add view to main window
+        addViewToWindow(view);
+        CntViewParameters viewParameters(CntViewParameters::noView);
+        viewParameters.setSelectedContact(contact);   
+        viewParameters.setSelectedDetail(detail);
+        view->activateView(viewParameters);
+    }
+}
+
+/*!
+Create a view based on ID. \Return pointer to new object if success, 0 if not.
+*/
+CntBaseView *CntServiceViewManager::getView(CntViewParameters::ViewId id)
+{
+    CntBaseView* view(0);
+
+    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 = CntViewManager::getView(id);
+        break;
+        }
+    }
+
+    return view;
+}
+
+// end of file