memspyui/ui/hb/src/viewmanager.cpp
branchGCC_SURGE
changeset 37 c20154ccf3c0
parent 35 98924d2efce9
equal deleted inserted replaced
20:ba8a586c45f1 37:c20154ccf3c0
    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"
    25 #include "memspymainview.h"
    27 #include "memspymainview.h"
    26 #include "memspyprocessview.h"
    28 #include "memspyprocessview.h"
    27 #include "memspythreadview.h"
    29 #include "memspythreadview.h"
       
    30 #include "memspythreaddetailindexview.h"
    28 #include "memspythreaddetailview.h"
    31 #include "memspythreaddetailview.h"
    29 #include "memspykernelobjecttypeview.h"
    32 #include "memspykernelobjecttypeview.h"
    30 #include "memspykernelobjectview.h"
    33 #include "memspykernelobjectview.h"
    31 #include "memspykernelobjectdetailview.h"
    34 #include "memspykernelobjectdetailview.h"
       
    35 #include "memspytrackingview.h"
       
    36 #include "memspyswmtview.h"
       
    37 #include "memspyheapdumpsview.h"
    32 
    38 
    33 template <typename T>
    39 template <typename T>
    34 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
    40 static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
    35 {
    41 {
    36 	return new T(engine, viewManager);
    42 	return new T(engine, viewManager);
    38 // This array needs to be in sync with view enum
    44 // This array needs to be in sync with view enum
    39 MemSpyView* (*sFactories[])(EngineWrapper&, ViewManager&) = { 
    45 MemSpyView* (*sFactories[])(EngineWrapper&, ViewManager&) = { 
    40 	&factory<MemSpyMainView>,
    46 	&factory<MemSpyMainView>,
    41 	&factory<MemSpyProcessView>,
    47 	&factory<MemSpyProcessView>,
    42 	&factory<MemSpyThreadView>,
    48 	&factory<MemSpyThreadView>,
       
    49 	&factory<MemSpyThreadDetailIndexView>,
    43 	&factory<MemSpyThreadDetailView>,
    50 	&factory<MemSpyThreadDetailView>,
    44 	&factory<MemSpyKernelObjectTypeView>,
    51 	&factory<MemSpyKernelObjectTypeView>,
    45 	&factory<MemSpyKernelObjectView>,
    52 	&factory<MemSpyKernelObjectView>,
    46 	&factory<MemSpyKernelObjectDetailView>
    53 	&factory<MemSpyKernelObjectDetailView>,
       
    54 	&factory<MemSpyTrackingView>,
       
    55 	&factory<MemSpySwmtView>,
       
    56 	&factory<MemSpyHeapDumpsView>
    47 };
    57 };
    48 
    58 
    49 
    59 
    50 ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
    60 ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
    51 	QObject(parent),
    61 	QObject(parent),
    55 	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
    65 	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
    56 }
    66 }
    57 
    67 
    58 void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
    68 void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
    59 {
    69 {
    60 	MemSpyView* view = sFactories[viewIndex](mEngine, *this);
    70     MemSpyView* view;
    61 	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     
    62 	if (viewIndex != MainView) {
    94 	if (viewIndex != MainView) {
    63 		HbAction* action = new HbAction(Hb::BackNaviAction, this);
    95 		HbAction* action = new HbAction(Hb::BackNaviAction, this);
    64 		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
    96 		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
    65 		view->setNavigationAction(action);
    97 		view->setNavigationAction(action);
    66 	}
    98 	}