phonebookui/pbkcommonui/src/cntdefaultviewfactory.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 31 2a11b5b00470
--- a/phonebookui/pbkcommonui/src/cntdefaultviewfactory.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntdefaultviewfactory.cpp	Mon May 03 12:24:20 2010 +0300
@@ -16,70 +16,113 @@
 */
 
 #include "cntabstractviewfactory.h"
-#include "cntviewparameters.h"
+#include "cntdetaileditor.h"
 #include "cntmainwindow.h"
-
+#include <cntviewparams.h>
+#include <cntviewsupplier.h>
+#include <cntuiextensionfactory.h>
+#include <hbstyleloader.h>
 // views
 #include "cntnamesview.h"
 #include "cntmycardview.h"
 #include "cntfavoritesview.h"
 #include "cntimageeditorview.h"
 #include "cntcollectionview.h"
+#include "cntgroupmemberview.h"
+#include "cntfavoritesmemberview.h"
+#include "cntcontactcardview.h"
+#include "cntgroupactionsview.h"
+#include "cnthistoryview.h"
+#include "cnteditview.h"
+#include "cntmycardselectionview.h"
+#include "cntextensionmanager.h"
 
-CntDefaultViewFactory::CntDefaultViewFactory( )
+CntDefaultViewFactory::CntDefaultViewFactory():
+    mExtensionManager(NULL)
 {
+    mExtensionManager = new CntExtensionManager();
+    HbStyleLoader::registerFilePath( ":/style" );
 }
 
 CntDefaultViewFactory::~CntDefaultViewFactory()
 {
+    delete mExtensionManager;
 }
 
 CntAbstractView* CntDefaultViewFactory::createView( int aId )
 {
     switch ( aId )
     {
-    case CntViewParameters::namesView:
-    case CntViewParameters::defaultView:
-        return new CntNamesView();
-    case CntViewParameters::noView:
-    case CntViewParameters::commLauncherView:
-    case CntViewParameters::serviceContactCardView:
-    case CntViewParameters::serviceAssignContactCardView:
+    case namesView:
+        return new CntNamesView(*mExtensionManager);
+    case noView:
+    case commLauncherView:
+        return new CntContactCardView();
+    case serviceContactCardView:
+    case serviceAssignContactCardView:
         break;
-    case CntViewParameters::myCardView:
+    case myCardView:
         return new CntMyCardView();
-    case CntViewParameters::myCardSelectionView:
-    case CntViewParameters::serviceContactSelectionView:
+    case myCardSelectionView:
+        return new CntMyCardSelectionView();
+    case serviceContactSelectionView:
         break;
-    case CntViewParameters::collectionView:
-        return new CntCollectionView();
-    case CntViewParameters::collectionFavoritesView:
+    case collectionView:
+        return new CntCollectionView(*mExtensionManager);
+    case collectionFavoritesView:
         return new CntFavoritesView();
-    case CntViewParameters::FavoritesMemberView:
-    case CntViewParameters::editView:
-    case CntViewParameters::serviceEditView:
-    case CntViewParameters::serviceSubEditView:
-    case CntViewParameters::emailEditorView:
-    case CntViewParameters::namesEditorView:
-    case CntViewParameters::urlEditorView:
-    case CntViewParameters::companyEditorView:
-    case CntViewParameters::phoneNumberEditorView:
-    case CntViewParameters::onlineAccountEditorView:
-    case CntViewParameters::noteEditorView:
-    case CntViewParameters::familyDetailEditorView:
-    case CntViewParameters::addressEditorView:
-    case CntViewParameters::dateEditorView:
+    case FavoritesMemberView:
+        return new CntFavoritesMemberView();
+    case editView:
+		return new CntEditView();
+    case onlineAccountEditorView:
+    case serviceEditView:
+    case serviceSubEditView:
+        break;
+  
+    case emailEditorView:
+    case namesEditorView:
+    case urlEditorView:
+    case companyEditorView:
+    case phoneNumberEditorView:
+    case noteEditorView:
+    case familyDetailEditorView:
+    case addressEditorView:
+    case dateEditorView:
+    case groupEditorView:
+        return new CntDetailEditor(aId);
+
+    case imageEditorView:
+        return new CntImageEditorView();
+    case serviceContactFetchView:
         break;
-    case CntViewParameters::imageEditorView:
-        return new CntImageEditorView();
-    case CntViewParameters::serviceContactFetchView:
-    case CntViewParameters::groupEditorView:
-    case CntViewParameters::groupMemberView:
-    case CntViewParameters::groupActionsView:
-    case CntViewParameters::historyView:
-        break;
+    case groupMemberView:
+        return new CntGroupMemberView();
+    case groupActionsView:
+        return new CntGroupActionsView();
+    case historyView:
+        return new CntHistoryView();
     default:
-        break;
+       return createPluginView(aId);
+    }
+    return NULL;
+}
+
+CntAbstractView* CntDefaultViewFactory::createPluginView( int aId )
+{
+    for(int i = 0;i < mExtensionManager->pluginCount();i++)
+    {
+        CntViewSupplier* viewSupplier = mExtensionManager->pluginAt(i)->viewSupplier();
+        if (viewSupplier)
+        {
+            for(int j = 0;j < viewSupplier->viewCount();j++)
+            {
+                if (viewSupplier->viewIdAt(j) == aId)
+                {
+                    return viewSupplier->viewAt(j);
+                }
+            }
+        }
     }
     return NULL;
 }