diff -r ba8a586c45f1 -r c20154ccf3c0 memspyui/ui/hb/src/viewmanager.cpp --- 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 #include +#include +#include #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 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager) @@ -40,10 +46,14 @@ &factory, &factory, &factory, + &factory, &factory, &factory, &factory, - &factory + &factory, + &factory, + &factory, + &factory }; @@ -57,8 +67,30 @@ void ViewManager::showView(ViewIndex viewIndex, const QVariantMap ¶ms) { - 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()));