memspyui/ui/hb/src/viewmanager.cpp
changeset 35 98924d2efce9
parent 19 4b22a598b890
equal deleted inserted replaced
34:e0ec97ec3cc4 35:98924d2efce9
    15  *  
    15  *  
    16  */
    16  */
    17 
    17 
    18 #include <HbMainWindow>
    18 #include <HbMainWindow>
    19 #include <HbAction>
    19 #include <HbAction>
       
    20 #include <HbMessageBox>
       
    21 #include <HbLabel>
    20 
    22 
    21 #include "viewmanager.h"
    23 #include "viewmanager.h"
    22 
    24 
    23 #include "enginewrapper.h"
    25 #include "enginewrapper.h"
    24 #include "memspyview.h"
    26 #include "memspyview.h"
    28 #include "memspythreaddetailindexview.h"
    30 #include "memspythreaddetailindexview.h"
    29 #include "memspythreaddetailview.h"
    31 #include "memspythreaddetailview.h"
    30 #include "memspykernelobjecttypeview.h"
    32 #include "memspykernelobjecttypeview.h"
    31 #include "memspykernelobjectview.h"
    33 #include "memspykernelobjectview.h"
    32 #include "memspykernelobjectdetailview.h"
    34 #include "memspykernelobjectdetailview.h"
       
    35 #include "memspytrackingview.h"
       
    36 #include "memspyswmtview.h"
       
    37 #include "memspyheapdumpsview.h"
    33 
    38 
    34 template <typename T>
    39 template <typename T>
    35 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
    40 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
    36 {
    41 {
    37 	return new T(engine, viewManager);
    42 	return new T(engine, viewManager);
    43 	&factory<MemSpyThreadView>,
    48 	&factory<MemSpyThreadView>,
    44 	&factory<MemSpyThreadDetailIndexView>,
    49 	&factory<MemSpyThreadDetailIndexView>,
    45 	&factory<MemSpyThreadDetailView>,
    50 	&factory<MemSpyThreadDetailView>,
    46 	&factory<MemSpyKernelObjectTypeView>,
    51 	&factory<MemSpyKernelObjectTypeView>,
    47 	&factory<MemSpyKernelObjectView>,
    52 	&factory<MemSpyKernelObjectView>,
    48 	&factory<MemSpyKernelObjectDetailView>
    53 	&factory<MemSpyKernelObjectDetailView>,
       
    54 	&factory<MemSpyTrackingView>,
       
    55 	&factory<MemSpySwmtView>,
       
    56 	&factory<MemSpyHeapDumpsView>
    49 };
    57 };
    50 
    58 
    51 
    59 
    52 ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
    60 ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
    53 	QObject(parent),
    61 	QObject(parent),
    57 	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
    65 	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
    58 }
    66 }
    59 
    67 
    60 void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
    68 void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
    61 {
    69 {
    62 	MemSpyView* view = sFactories[viewIndex](mEngine, *this);
    70     MemSpyView* view;
    63 	view->initialize(params);
    71     try {
       
    72         view = sFactories[viewIndex](mEngine, *this);
       
    73         view->initialize(params);
       
    74     }
       
    75     catch (std::exception& ex)
       
    76     {
       
    77         // show message box with exception
       
    78         // TODO: qt_symbian_exception2Error shouldn't probably be here
       
    79         QString error = tr("An error occured during the operation. Error code: %1").arg(
       
    80                 qt_symbian_exception2Error(ex));
       
    81         
       
    82         HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
       
    83         messageBox->setText(error);
       
    84         HbLabel *header = new HbLabel(tr("Error"), messageBox);
       
    85         messageBox->setHeadingWidget(header);
       
    86         messageBox->setAttribute(Qt::WA_DeleteOnClose);
       
    87         messageBox->setTimeout(HbPopup::StandardTimeout);
       
    88         messageBox->open();
       
    89         
       
    90         delete view;
       
    91         return;
       
    92     }
       
    93     
    64 	if (viewIndex != MainView) {
    94 	if (viewIndex != MainView) {
    65 		HbAction* action = new HbAction(Hb::BackNaviAction, this);
    95 		HbAction* action = new HbAction(Hb::BackNaviAction, this);
    66 		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
    96 		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
    67 		view->setNavigationAction(action);
    97 		view->setNavigationAction(action);
    68 	}
    98 	}