memspyui/ui/hb/src/viewmanager.cpp
changeset 35 98924d2efce9
parent 19 4b22a598b890
--- a/memspyui/ui/hb/src/viewmanager.cpp	Wed Jun 23 18:13:31 2010 +0300
+++ b/memspyui/ui/hb/src/viewmanager.cpp	Tue Jul 06 14:17:03 2010 +0300
@@ -17,6 +17,8 @@
 
 #include <HbMainWindow>
 #include <HbAction>
+#include <HbMessageBox>
+#include <HbLabel>
 
 #include "viewmanager.h"
 
@@ -30,6 +32,9 @@
 #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)
@@ -45,7 +50,10 @@
 	&factory<MemSpyThreadDetailView>,
 	&factory<MemSpyKernelObjectTypeView>,
 	&factory<MemSpyKernelObjectView>,
-	&factory<MemSpyKernelObjectDetailView>
+	&factory<MemSpyKernelObjectDetailView>,
+	&factory<MemSpyTrackingView>,
+	&factory<MemSpySwmtView>,
+	&factory<MemSpyHeapDumpsView>
 };
 
 
@@ -59,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()));