memspyui/ui/hb/src/viewmanager.cpp
branchGCC_SURGE
changeset 37 c20154ccf3c0
parent 35 98924d2efce9
--- a/memspyui/ui/hb/src/viewmanager.cpp	Fri Jun 11 16:29:34 2010 +0100
+++ b/memspyui/ui/hb/src/viewmanager.cpp	Thu Jul 22 16:33:59 2010 +0100
@@ -17,6 +17,8 @@
 
 #include <HbMainWindow>
 #include <HbAction>
+#include <HbMessageBox>
+#include <HbLabel>
 
 #include "viewmanager.h"
 
@@ -25,10 +27,14 @@
 #include "memspymainview.h"
 #include "memspyprocessview.h"
 #include "memspythreadview.h"
+#include "memspythreaddetailindexview.h"
 #include "memspythreaddetailview.h"
 #include "memspykernelobjecttypeview.h"
 #include "memspykernelobjectview.h"
 #include "memspykernelobjectdetailview.h"
+#include "memspytrackingview.h"
+#include "memspyswmtview.h"
+#include "memspyheapdumpsview.h"
 
 template <typename T>
 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
@@ -40,10 +46,14 @@
 	&factory<MemSpyMainView>,
 	&factory<MemSpyProcessView>,
 	&factory<MemSpyThreadView>,
+	&factory<MemSpyThreadDetailIndexView>,
 	&factory<MemSpyThreadDetailView>,
 	&factory<MemSpyKernelObjectTypeView>,
 	&factory<MemSpyKernelObjectView>,
-	&factory<MemSpyKernelObjectDetailView>
+	&factory<MemSpyKernelObjectDetailView>,
+	&factory<MemSpyTrackingView>,
+	&factory<MemSpySwmtView>,
+	&factory<MemSpyHeapDumpsView>
 };
 
 
@@ -57,8 +67,30 @@
 
 void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
 {
-	MemSpyView* view = sFactories[viewIndex](mEngine, *this);
-	view->initialize(params);
+    MemSpyView* view;
+    try {
+        view = sFactories[viewIndex](mEngine, *this);
+        view->initialize(params);
+    }
+    catch (std::exception& ex)
+    {
+        // show message box with exception
+        // TODO: qt_symbian_exception2Error shouldn't probably be here
+        QString error = tr("An error occured during the operation. Error code: %1").arg(
+                qt_symbian_exception2Error(ex));
+        
+        HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
+        messageBox->setText(error);
+        HbLabel *header = new HbLabel(tr("Error"), messageBox);
+        messageBox->setHeadingWidget(header);
+        messageBox->setAttribute(Qt::WA_DeleteOnClose);
+        messageBox->setTimeout(HbPopup::StandardTimeout);
+        messageBox->open();
+        
+        delete view;
+        return;
+    }
+    
 	if (viewIndex != MainView) {
 		HbAction* action = new HbAction(Hb::BackNaviAction, this);
 		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));