utilityapps/loadgen/ui/hb/src/mainview.cpp
author hgs
Mon, 18 Oct 2010 16:30:05 +0300
changeset 55 2d9cac8919d3
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "mainview.h"
hgs
parents:
diff changeset
    19
#include "enginewrapper.h"
hgs
parents:
diff changeset
    20
#include "notifications.h"
hgs
parents:
diff changeset
    21
#include "loadgen.hrh"
hgs
parents:
diff changeset
    22
#include <hblabel.h>
hgs
parents:
diff changeset
    23
#include <hbmenu.h>
hgs
parents:
diff changeset
    24
#include <hbaction.h>
hgs
parents:
diff changeset
    25
#include <hbmessagebox.h>
hgs
parents:
diff changeset
    26
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    27
#include <hbapplication.h>
hgs
parents:
diff changeset
    28
//#include <hbcommonnote.h>
hgs
parents:
diff changeset
    29
//#include <hbconfirmationquery.h>
hgs
parents:
diff changeset
    30
#include <hbprogressdialog.h>
hgs
parents:
diff changeset
    31
#include <hbtextedit.h>
hgs
parents:
diff changeset
    32
#include <hblistview.h>
hgs
parents:
diff changeset
    33
#include <hbselectiondialog.h>
hgs
parents:
diff changeset
    34
#include <hbtoolbar.h>
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    37
#include <QStandardItemModel>
hgs
parents:
diff changeset
    38
#include <QStandardItem>
hgs
parents:
diff changeset
    39
#include <QSignalMapper>
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
MainView::MainView(HbMainWindow &mainWindow) :
hgs
parents:
diff changeset
    44
					  mMainWindow(mainWindow),
hgs
parents:
diff changeset
    45
					  mEngineWrapper(0),
hgs
parents:
diff changeset
    46
					  mIsLoadListEmpty(true),
hgs
parents:
diff changeset
    47
					  mStopAll(NULL),
hgs
parents:
diff changeset
    48
					  mSuspendAll(NULL),
hgs
parents:
diff changeset
    49
					  mResumeAll(NULL),
hgs
parents:
diff changeset
    50
					  mPrevExpandedItem(-1)
hgs
parents:
diff changeset
    51
					  
hgs
parents:
diff changeset
    52
{
hgs
parents:
diff changeset
    53
}
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
MainView::~MainView()
hgs
parents:
diff changeset
    58
{
hgs
parents:
diff changeset
    59
    if (mEngineWrapper != 0) {
hgs
parents:
diff changeset
    60
        delete mEngineWrapper;
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
    delete mListModel;    
hgs
parents:
diff changeset
    63
    delete mListView;
hgs
parents:
diff changeset
    64
	delete mSm;	
hgs
parents:
diff changeset
    65
}
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
void MainView::init(HbApplication &app)
hgs
parents:
diff changeset
    70
{
hgs
parents:
diff changeset
    71
	//this->setTitle("Load Gener.");
hgs
parents:
diff changeset
    72
	this->setTitle("Load Generator");
hgs
parents:
diff changeset
    73
    mEngineWrapper = new EngineWrapper(mMainWindow, *this);
hgs
parents:
diff changeset
    74
    int error = mEngineWrapper->init();
hgs
parents:
diff changeset
    75
    Q_ASSERT_X(error == 1, "LoadGen", "Engine initialization failed");
hgs
parents:
diff changeset
    76
    createMenu(app);
hgs
parents:
diff changeset
    77
	loadListIinit();
hgs
parents:
diff changeset
    78
	
hgs
parents:
diff changeset
    79
	
hgs
parents:
diff changeset
    80
	//create toolbar showing launch popup
hgs
parents:
diff changeset
    81
	HbToolBar *toolBar = this->toolBar();
hgs
parents:
diff changeset
    82
	
hgs
parents:
diff changeset
    83
	
hgs
parents:
diff changeset
    84
	HbIcon newLoadIcon(QString(":/newload.svg"));
hgs
parents:
diff changeset
    85
	newLoadIcon.setFlags(newLoadIcon.flags() | HbIcon::Colorized );
hgs
parents:
diff changeset
    86
	HbIcon pauseIcon(QString(":/pause.svg"));
hgs
parents:
diff changeset
    87
	pauseIcon.setFlags(pauseIcon.flags() | HbIcon::Colorized );
hgs
parents:
diff changeset
    88
	HbIcon playIcon(QString(":/play.svg"));
hgs
parents:
diff changeset
    89
	playIcon.setFlags(playIcon.flags() | HbIcon::Colorized );
hgs
parents:
diff changeset
    90
	HbIcon stopIcon(QString(":/cross.svg"));
hgs
parents:
diff changeset
    91
	stopIcon.setFlags(stopIcon.flags() | HbIcon::Colorized );
hgs
parents:
diff changeset
    92
	
hgs
parents:
diff changeset
    93
	HbAction *actionNewLoad = new HbAction(newLoadIcon,"", toolBar);
hgs
parents:
diff changeset
    94
	HbAction *actionSuspendAll = new HbAction(pauseIcon,"", toolBar);
hgs
parents:
diff changeset
    95
	HbAction *actionResumeAll = new HbAction(playIcon,"", toolBar);
hgs
parents:
diff changeset
    96
	HbAction *actionStopAll = new HbAction(stopIcon,"", toolBar);
hgs
parents:
diff changeset
    97
	
hgs
parents:
diff changeset
    98
	toolBar->addAction( actionNewLoad );
hgs
parents:
diff changeset
    99
	toolBar->addAction( actionSuspendAll );
hgs
parents:
diff changeset
   100
	toolBar->addAction( actionResumeAll );
hgs
parents:
diff changeset
   101
	toolBar->addAction( actionStopAll );
hgs
parents:
diff changeset
   102
	
hgs
parents:
diff changeset
   103
	toolBar->adjustSize();
hgs
parents:
diff changeset
   104
	//toolBar->childrenBoundingRect(). //adjustSize();
hgs
parents:
diff changeset
   105
	connect(actionNewLoad, SIGNAL( triggered() ), this, SLOT( NewLoad() ));
hgs
parents:
diff changeset
   106
	connect(actionSuspendAll, SIGNAL( triggered() ), this, SLOT( suspendAllLoads() ));
hgs
parents:
diff changeset
   107
	connect(actionResumeAll, SIGNAL(triggered()), this, SLOT( resumeAllLoads() ));
hgs
parents:
diff changeset
   108
	connect(actionStopAll, SIGNAL(triggered()), this, SLOT( stopAllLoads() ));
hgs
parents:
diff changeset
   109
}
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
void MainView::createMenu(HbApplication &app)
hgs
parents:
diff changeset
   114
{
hgs
parents:
diff changeset
   115
    HbMenu *menu = this->menu();
hgs
parents:
diff changeset
   116
	
hgs
parents:
diff changeset
   117
    // signal mapper for identifying the different command actions  
hgs
parents:
diff changeset
   118
	// in executeCommand() handler function:
hgs
parents:
diff changeset
   119
    mSm = new QSignalMapper(this);
hgs
parents:
diff changeset
   120
    connect(mSm, SIGNAL(mapped(int)), this, SLOT(executeMenuCommand(int)));
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    if (menu != NULL) {
hgs
parents:
diff changeset
   123
		// Temp work-around for menu item bug in Orbit Wk38,
hgs
parents:
diff changeset
   124
		// sub menu cannot contain more than 6 functional action items!
hgs
parents:
diff changeset
   125
		// two sub menus created to fix this problem.
hgs
parents:
diff changeset
   126
		mLoadSubMenu1 = menu->addMenu("New loads");
hgs
parents:
diff changeset
   127
		//mLoadSubMenu2 = menu->addMenu("More new loads");
hgs
parents:
diff changeset
   128
		mCpuLoadAction = mLoadSubMenu1->addAction("CPU load");
hgs
parents:
diff changeset
   129
		connect(mCpuLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   130
		mSm->setMapping(mCpuLoadAction, ELoadGenCmdNewLoadCPULoad);
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
		mMemoryEatLoadAction = mLoadSubMenu1->addAction("Eat memory");
hgs
parents:
diff changeset
   133
		connect(mMemoryEatLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   134
		mSm->setMapping(mMemoryEatLoadAction, ELoadGenCmdNewLoadEatMemory);
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
		mPhoneCallLoadAction = mLoadSubMenu1->addAction("Phone calls");
hgs
parents:
diff changeset
   137
		connect(mPhoneCallLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   138
		mSm->setMapping(mPhoneCallLoadAction, ELoadGenCmdNewLoadPhoneCall);
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
		mMessagesLoadAction = mLoadSubMenu1->addAction("Messages");
hgs
parents:
diff changeset
   141
		connect(mMessagesLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   142
		mSm->setMapping(mMessagesLoadAction, ELoadGenCmdNewLoadMessages);
hgs
parents:
diff changeset
   143
//TODO to be fixed using replacement for downloadmanager
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
		mNetConnLoadAction = mLoadSubMenu1->addAction("Network conn.");
hgs
parents:
diff changeset
   146
		connect(mNetConnLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   147
		mSm->setMapping(mNetConnLoadAction, ELoadGenCmdNewLoadNetConn);
hgs
parents:
diff changeset
   148
	
hgs
parents:
diff changeset
   149
		//mKeyPressLoadAction = mLoadSubMenu2->addAction("Key presses");
hgs
parents:
diff changeset
   150
		mKeyPressLoadAction = mLoadSubMenu1->addAction("Key presses");
hgs
parents:
diff changeset
   151
		connect(mKeyPressLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   152
		mSm->setMapping(mKeyPressLoadAction, ELoadGenCmdNewLoadKeyPress);
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
		//mAppsLoadAction = mLoadSubMenu2->addAction("Applications");
hgs
parents:
diff changeset
   155
		mAppsLoadAction = mLoadSubMenu1->addAction("Applications");
hgs
parents:
diff changeset
   156
		connect(mAppsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   157
		mSm->setMapping(mAppsLoadAction, ELoadGenCmdNewLoadApplications);
hgs
parents:
diff changeset
   158
		
hgs
parents:
diff changeset
   159
		//mPhotoCapturesLoadAction = mLoadSubMenu2->addAction("Photo captures");
hgs
parents:
diff changeset
   160
		mPhotoCapturesLoadAction = mLoadSubMenu1->addAction("Photo captures");
hgs
parents:
diff changeset
   161
		connect(mPhotoCapturesLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   162
		mSm->setMapping(mPhotoCapturesLoadAction, ELoadGenCmdNewLoadPhotoCaptures);
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
		//mBtActionsLoadAction = mLoadSubMenu2->addAction("Bluetooth actions");
hgs
parents:
diff changeset
   165
		mBtActionsLoadAction = mLoadSubMenu1->addAction("Bluetooth actions");
hgs
parents:
diff changeset
   166
		connect(mBtActionsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   167
		mSm->setMapping(mBtActionsLoadAction, ELoadGenCmdNewLoadBluetooth);
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
		//mPointerEventsLoadAction = mLoadSubMenu2->addAction("Pointer events");
hgs
parents:
diff changeset
   170
		mPointerEventsLoadAction = mLoadSubMenu1->addAction("Pointer events");
hgs
parents:
diff changeset
   171
		connect(mPointerEventsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
hgs
parents:
diff changeset
   172
		mSm->setMapping(mPointerEventsLoadAction, ELoadGenCmdNewLoadPointerEvent);
hgs
parents:
diff changeset
   173
		
hgs
parents:
diff changeset
   174
		mActionPerfMon = menu->addAction("Launch PerfMon");
hgs
parents:
diff changeset
   175
		connect(mActionPerfMon, SIGNAL(triggered()), this, SLOT( launchPerfMon()));
hgs
parents:
diff changeset
   176
		
hgs
parents:
diff changeset
   177
		mActionAbout = menu->addAction("About");
hgs
parents:
diff changeset
   178
		connect(mActionAbout, SIGNAL(triggered()), this, SLOT( showAboutPopup()));
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
		mActionExit = menu->addAction("Exit");
hgs
parents:
diff changeset
   181
		connect(mActionExit, SIGNAL(triggered()), &app, SLOT(quit()));
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
		// menu dynamic update
hgs
parents:
diff changeset
   184
		connect(menu, SIGNAL(aboutToShow()), this, SLOT(updateMenu()));        		
hgs
parents:
diff changeset
   185
	}
hgs
parents:
diff changeset
   186
}
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
void MainView::loadListIinit()
hgs
parents:
diff changeset
   191
{
hgs
parents:
diff changeset
   192
	if(mListItemExpanded.count())
hgs
parents:
diff changeset
   193
			{
hgs
parents:
diff changeset
   194
			mListItemExpanded.clear();
hgs
parents:
diff changeset
   195
			}
hgs
parents:
diff changeset
   196
    // Create list view and model for it
hgs
parents:
diff changeset
   197
    mListView = new HbListView(this);
hgs
parents:
diff changeset
   198
    mListView->setItemPrototype( new LoadGenListItem( *mEngineWrapper, mListView ) );
hgs
parents:
diff changeset
   199
    mListModel = new QStandardItemModel(this);
hgs
parents:
diff changeset
   200
    mListModel->setItemPrototype(new LoadGenLoadItem());
hgs
parents:
diff changeset
   201
	mListView->setModel(mListModel); 
hgs
parents:
diff changeset
   202
	mListView->setSelectionMode(HbListView::NoSelection);
hgs
parents:
diff changeset
   203
	mListView->setVisible( false ); //HighlightMode(HbItemHighlight::Hidden);
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
    connect(mListView, 
hgs
parents:
diff changeset
   206
			SIGNAL(longPressed(HbAbstractViewItem*, QPointF)), 
hgs
parents:
diff changeset
   207
			this, 
hgs
parents:
diff changeset
   208
			SLOT(handleLoadListEvent(HbAbstractViewItem*, QPointF)));	
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
    connect(mListView, SIGNAL( activated( const QModelIndex& ) ), this,	SLOT( activated( const QModelIndex& )));
hgs
parents:
diff changeset
   211
    
hgs
parents:
diff changeset
   212
	
hgs
parents:
diff changeset
   213
    // Create layout and add list view there:
hgs
parents:
diff changeset
   214
    QGraphicsLinearLayout *mainlayout = new QGraphicsLinearLayout(Qt::Vertical, this);
hgs
parents:
diff changeset
   215
    mainlayout->addItem(mListView);
hgs
parents:
diff changeset
   216
	mainlayout->setAlignment(mListView, Qt::AlignCenter);
hgs
parents:
diff changeset
   217
    setLayout(mainlayout);
hgs
parents:
diff changeset
   218
}
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
void MainView::showAboutPopup()
hgs
parents:
diff changeset
   223
{
hgs
parents:
diff changeset
   224
    Notifications::about();
hgs
parents:
diff changeset
   225
}
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
void MainView::executeMenuCommand(int cmd)
hgs
parents:
diff changeset
   230
{
hgs
parents:
diff changeset
   231
	mEngineWrapper->startNewLoad(cmd);
hgs
parents:
diff changeset
   232
}
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
void MainView::activated( const QModelIndex& index)
hgs
parents:
diff changeset
   239
	{
hgs
parents:
diff changeset
   240
	LoadGenListItem* listItem = qobject_cast<LoadGenListItem*>( mListView->viewItem( index.row() ) );
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
	if( listItem )
hgs
parents:
diff changeset
   243
		{
hgs
parents:
diff changeset
   244
		if( mPrevExpandedItem == index.row() || mPrevExpandedItem == -1 )
hgs
parents:
diff changeset
   245
			{
hgs
parents:
diff changeset
   246
			LoadGenLoadItem* item = (LoadGenLoadItem*)(mListModel->item( index.row(), index.column() ));
hgs
parents:
diff changeset
   247
			item->setExpanded( !item->getExpandedState() );
hgs
parents:
diff changeset
   248
			mPrevExpandedItem = index.row();
hgs
parents:
diff changeset
   249
			}
hgs
parents:
diff changeset
   250
		else 
hgs
parents:
diff changeset
   251
			{
hgs
parents:
diff changeset
   252
			LoadGenLoadItem* item = (LoadGenLoadItem*)(mListModel->item( index.row(), index.column() ));
hgs
parents:
diff changeset
   253
			item->setExpanded( !item->getExpandedState() );
hgs
parents:
diff changeset
   254
			LoadGenLoadItem* prevItem = (LoadGenLoadItem*)(mListModel->item( mPrevExpandedItem, 0 ));
hgs
parents:
diff changeset
   255
			if( prevItem ) //in case the load was stopped
hgs
parents:
diff changeset
   256
				{
hgs
parents:
diff changeset
   257
				if(prevItem->getExpandedState())
hgs
parents:
diff changeset
   258
					{
hgs
parents:
diff changeset
   259
					prevItem->setExpanded( !prevItem->getExpandedState() );
hgs
parents:
diff changeset
   260
					}
hgs
parents:
diff changeset
   261
				mPrevExpandedItem = index.row();
hgs
parents:
diff changeset
   262
				}
hgs
parents:
diff changeset
   263
						
hgs
parents:
diff changeset
   264
			}
hgs
parents:
diff changeset
   265
		
hgs
parents:
diff changeset
   266
		mListView->reset();
hgs
parents:
diff changeset
   267
		}
hgs
parents:
diff changeset
   268
	}
hgs
parents:
diff changeset
   269
/*
hgs
parents:
diff changeset
   270
 LoadGenLoadItem* item = (LoadGenLoadItem*)(mListModel->item( index.row(), index.column() ));
hgs
parents:
diff changeset
   271
		item->setExpanded( !item->getExpandedState() );
hgs
parents:
diff changeset
   272
		//close previous expanded item 
hgs
parents:
diff changeset
   273
		if( mPrevExpandedItem == -1 )
hgs
parents:
diff changeset
   274
			{
hgs
parents:
diff changeset
   275
			mPrevExpandedItem = index.row();
hgs
parents:
diff changeset
   276
			}
hgs
parents:
diff changeset
   277
		else if( mPrevExpandedItem != index.row() )
hgs
parents:
diff changeset
   278
			{
hgs
parents:
diff changeset
   279
			LoadGenLoadItem* prevItem = (LoadGenLoadItem*)(mListModel->item( mPrevExpandedItem, 0 ));
hgs
parents:
diff changeset
   280
			if( prevItem ) //in case that was stopped
hgs
parents:
diff changeset
   281
				{
hgs
parents:
diff changeset
   282
				prevItem->setExpanded( !prevItem->getExpandedState() );
hgs
parents:
diff changeset
   283
				mPrevExpandedItem = index.row();
hgs
parents:
diff changeset
   284
				}
hgs
parents:
diff changeset
   285
			else
hgs
parents:
diff changeset
   286
				{
hgs
parents:
diff changeset
   287
				mPrevExpandedItem = -1;
hgs
parents:
diff changeset
   288
				}
hgs
parents:
diff changeset
   289
			}
hgs
parents:
diff changeset
   290
		mListView->reset();
hgs
parents:
diff changeset
   291
 */
hgs
parents:
diff changeset
   292
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
void MainView::handleLoadListEvent(HbAbstractViewItem */*listViewItem*/, const QPointF &/*coords*/)
hgs
parents:
diff changeset
   295
{
hgs
parents:
diff changeset
   296
    const QStringList items = (QStringList() << "Stop" << "Resume/Suspend" << "Edit");
hgs
parents:
diff changeset
   297
    HbSelectionDialog *dlg = new HbSelectionDialog();
hgs
parents:
diff changeset
   298
    dlg->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   299
    dlg->setStringItems(items);
hgs
parents:
diff changeset
   300
    dlg->setSelectionMode(HbAbstractItemView::SingleSelection);
hgs
parents:
diff changeset
   301
    dlg->open(this, SLOT(ItemActionPopupClosed(HbAction*)));
hgs
parents:
diff changeset
   302
}
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
void MainView::ItemActionPopupClosed(HbAction* action)
hgs
parents:
diff changeset
   307
{
hgs
parents:
diff changeset
   308
    HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
hgs
parents:
diff changeset
   309
    if(!action && dlg->selectedItems().count()){
hgs
parents:
diff changeset
   310
        int userSelectionIndex = dlg->selectedItems().at(0).toInt();   
hgs
parents:
diff changeset
   311
        // all operations for selected list item only. Query selected load list item index from model.
hgs
parents:
diff changeset
   312
        if (userSelectionIndex == 0) {
hgs
parents:
diff changeset
   313
            // stop selected load from the load list:
hgs
parents:
diff changeset
   314
            stopLoad(false);
hgs
parents:
diff changeset
   315
        }
hgs
parents:
diff changeset
   316
        else if (userSelectionIndex == 1) {
hgs
parents:
diff changeset
   317
            // Suspend or Resume
hgs
parents:
diff changeset
   318
            mEngineWrapper->suspendOrResumeSelectedOrHighlightedItems();
hgs
parents:
diff changeset
   319
        }
hgs
parents:
diff changeset
   320
        else {
hgs
parents:
diff changeset
   321
            // current selected row number from the load list. 
hgs
parents:
diff changeset
   322
            int selectedRow = mListView->selectionModel()->currentIndex().row();
hgs
parents:
diff changeset
   323
            // edit load setttings:
hgs
parents:
diff changeset
   324
            mEngineWrapper->loadEdit(selectedRow);
hgs
parents:
diff changeset
   325
        }
hgs
parents:
diff changeset
   326
    }
hgs
parents:
diff changeset
   327
}
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
void MainView::LoadEdit()
hgs
parents:
diff changeset
   330
	{
hgs
parents:
diff changeset
   331
	int selectedRow = mListView->selectionModel()->currentIndex().row();
hgs
parents:
diff changeset
   332
	
hgs
parents:
diff changeset
   333
	mEngineWrapper->loadEdit(selectedRow);
hgs
parents:
diff changeset
   334
	}
hgs
parents:
diff changeset
   335
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
void MainView::stopAllLoads()
hgs
parents:
diff changeset
   338
{
hgs
parents:
diff changeset
   339
	stopLoad(true);
hgs
parents:
diff changeset
   340
}
hgs
parents:
diff changeset
   341
hgs
parents:
diff changeset
   342
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
bool MainView::stopLoad(bool stopAll)
hgs
parents:
diff changeset
   345
{
hgs
parents:
diff changeset
   346
	int success = false;
hgs
parents:
diff changeset
   347
	if (mListView != NULL) {
hgs
parents:
diff changeset
   348
		if (stopAll == true) {
hgs
parents:
diff changeset
   349
			success = mEngineWrapper->stopLoad(stopAll);
hgs
parents:
diff changeset
   350
			mIsLoadListEmpty = true;
hgs
parents:
diff changeset
   351
		}
hgs
parents:
diff changeset
   352
		else {
hgs
parents:
diff changeset
   353
			success = mEngineWrapper->stopLoad(stopAll);
hgs
parents:
diff changeset
   354
		}
hgs
parents:
diff changeset
   355
	}
hgs
parents:
diff changeset
   356
	return success;
hgs
parents:
diff changeset
   357
}
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
void MainView::updateMenu()
hgs
parents:
diff changeset
   362
{
hgs
parents:
diff changeset
   363
	if (mIsLoadListEmpty != true) {
hgs
parents:
diff changeset
   364
		if (mStopAll == NULL) {
hgs
parents:
diff changeset
   365
			mStopAll = new HbAction("Stop all", menu());
hgs
parents:
diff changeset
   366
			connect(mStopAll, SIGNAL(triggered()), this, SLOT(stopAllLoads()));
hgs
parents:
diff changeset
   367
			menu()->insertAction(mActionAbout, mStopAll);
hgs
parents:
diff changeset
   368
		}
hgs
parents:
diff changeset
   369
		else{
hgs
parents:
diff changeset
   370
            mStopAll->setVisible(true);
hgs
parents:
diff changeset
   371
		}
hgs
parents:
diff changeset
   372
		if (mSuspendAll == NULL) {
hgs
parents:
diff changeset
   373
			mSuspendAll = new HbAction("Suspend all", menu());
hgs
parents:
diff changeset
   374
			connect(mSuspendAll, SIGNAL(triggered()), this, SLOT(suspendAllLoads()));
hgs
parents:
diff changeset
   375
			menu()->insertAction(mActionAbout, mSuspendAll);
hgs
parents:
diff changeset
   376
		}
hgs
parents:
diff changeset
   377
		else{
hgs
parents:
diff changeset
   378
            mSuspendAll->setVisible(true);
hgs
parents:
diff changeset
   379
        }
hgs
parents:
diff changeset
   380
		if (mResumeAll == NULL) {
hgs
parents:
diff changeset
   381
			mResumeAll = new HbAction("Resume all", menu());
hgs
parents:
diff changeset
   382
			connect(mResumeAll, SIGNAL(triggered()), this, SLOT(resumeAllLoads()));
hgs
parents:
diff changeset
   383
			menu()->insertAction(mActionAbout, mResumeAll);
hgs
parents:
diff changeset
   384
		}
hgs
parents:
diff changeset
   385
		else{
hgs
parents:
diff changeset
   386
            mResumeAll->setVisible(true);
hgs
parents:
diff changeset
   387
        }
hgs
parents:
diff changeset
   388
	}
hgs
parents:
diff changeset
   389
	else if (mIsLoadListEmpty == true) {
hgs
parents:
diff changeset
   390
		if (mStopAll != NULL && mStopAll->text() == "Stop all") {
hgs
parents:
diff changeset
   391
            mStopAll->setVisible(false);
hgs
parents:
diff changeset
   392
		}
hgs
parents:
diff changeset
   393
		if (mSuspendAll != NULL && mSuspendAll->text() == "Suspend all") {
hgs
parents:
diff changeset
   394
            mSuspendAll->setVisible(false);
hgs
parents:
diff changeset
   395
		}
hgs
parents:
diff changeset
   396
		if (mResumeAll != NULL && mResumeAll->text() == "Resume all") {
hgs
parents:
diff changeset
   397
            mSuspendAll->setVisible(false);
hgs
parents:
diff changeset
   398
		}		
hgs
parents:
diff changeset
   399
	}
hgs
parents:
diff changeset
   400
}
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
int MainView::currentItemIndex()
hgs
parents:
diff changeset
   406
{
hgs
parents:
diff changeset
   407
	return mListView->selectionModel()->currentIndex().row();
hgs
parents:
diff changeset
   408
}
hgs
parents:
diff changeset
   409
hgs
parents:
diff changeset
   410
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
void MainView::setCurrentItemIndex(int index) 
hgs
parents:
diff changeset
   413
{
hgs
parents:
diff changeset
   414
    QModelIndex newIndex = mListView->model()->index(index, 0);
hgs
parents:
diff changeset
   415
    mListView->selectionModel()->setCurrentIndex(newIndex, 
hgs
parents:
diff changeset
   416
                                                QItemSelectionModel::SelectCurrent);
hgs
parents:
diff changeset
   417
	//mListView->setCurrentIndex( index ); //setCurrentRow(index);
hgs
parents:
diff changeset
   418
}	
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
void MainView::launchPerfMon()
hgs
parents:
diff changeset
   423
{
hgs
parents:
diff changeset
   424
	mEngineWrapper->launchPerfMonApp();
hgs
parents:
diff changeset
   425
}
hgs
parents:
diff changeset
   426
hgs
parents:
diff changeset
   427
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
QList<int> MainView::listSelectionIndexes()
hgs
parents:
diff changeset
   430
    {
hgs
parents:
diff changeset
   431
	QList<int> indices;
hgs
parents:
diff changeset
   432
    if (mListView != NULL) {
hgs
parents:
diff changeset
   433
		QItemSelectionModel *selectionModel = mListView->selectionModel();
hgs
parents:
diff changeset
   434
		if (selectionModel->hasSelection()) {
hgs
parents:
diff changeset
   435
			QModelIndexList modelIndexes = selectionModel->selectedIndexes();
hgs
parents:
diff changeset
   436
			QModelIndex index;
hgs
parents:
diff changeset
   437
			foreach (index, modelIndexes) {
hgs
parents:
diff changeset
   438
				indices.append(index.row());
hgs
parents:
diff changeset
   439
			}
hgs
parents:
diff changeset
   440
		}
hgs
parents:
diff changeset
   441
    }
hgs
parents:
diff changeset
   442
    return indices;
hgs
parents:
diff changeset
   443
	}
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
// --------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   446
hgs
parents:
diff changeset
   447
void MainView::NewLoad()
hgs
parents:
diff changeset
   448
	{
hgs
parents:
diff changeset
   449
	const QStringList items = (QStringList() << "CPU Load" << "Eat memory" << "Phone calls" << "Messages" << "Network conn." << "Key presses" << "Applications" << "Photo captures" << "Bluetooth actions" << "Pointer events" );
hgs
parents:
diff changeset
   450
    HbSelectionDialog *dlg = new HbSelectionDialog();
hgs
parents:
diff changeset
   451
    dlg->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   452
    dlg->setStringItems(items);
hgs
parents:
diff changeset
   453
    dlg->setSelectionMode(HbAbstractItemView::SingleSelection);
hgs
parents:
diff changeset
   454
    dlg->open(this, SLOT(loadActionPopupClosed(HbAction*)));
hgs
parents:
diff changeset
   455
	}
hgs
parents:
diff changeset
   456
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
void MainView::loadActionPopupClosed(HbAction* action)
hgs
parents:
diff changeset
   459
	{
hgs
parents:
diff changeset
   460
	HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
hgs
parents:
diff changeset
   461
	    if(!action && dlg->selectedItems().count()){
hgs
parents:
diff changeset
   462
	        int userSelectionIndex = dlg->selectedItems().at(0).toInt();   
hgs
parents:
diff changeset
   463
	        // all operations for selected list item only. Query selected load list item index from model.
hgs
parents:
diff changeset
   464
	        if (userSelectionIndex == 0) {
hgs
parents:
diff changeset
   465
				mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadCPULoad);
hgs
parents:
diff changeset
   466
	        }
hgs
parents:
diff changeset
   467
	        if (userSelectionIndex == 1) {
hgs
parents:
diff changeset
   468
				mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadEatMemory);
hgs
parents:
diff changeset
   469
	        }
hgs
parents:
diff changeset
   470
	        if (userSelectionIndex == 2) {
hgs
parents:
diff changeset
   471
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadPhoneCall);
hgs
parents:
diff changeset
   472
	        }
hgs
parents:
diff changeset
   473
	        if (userSelectionIndex == 3) {
hgs
parents:
diff changeset
   474
	           	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadMessages);
hgs
parents:
diff changeset
   475
	        }
hgs
parents:
diff changeset
   476
	        if (userSelectionIndex == 4) {
hgs
parents:
diff changeset
   477
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadNetConn);
hgs
parents:
diff changeset
   478
	        }
hgs
parents:
diff changeset
   479
	        if (userSelectionIndex == 5) {
hgs
parents:
diff changeset
   480
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadKeyPress);
hgs
parents:
diff changeset
   481
	        }
hgs
parents:
diff changeset
   482
	        if (userSelectionIndex == 6) {
hgs
parents:
diff changeset
   483
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadApplications);
hgs
parents:
diff changeset
   484
	        }
hgs
parents:
diff changeset
   485
	        if (userSelectionIndex == 7) {
hgs
parents:
diff changeset
   486
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadPhotoCaptures);
hgs
parents:
diff changeset
   487
	        }
hgs
parents:
diff changeset
   488
	        if (userSelectionIndex == 8) {
hgs
parents:
diff changeset
   489
	        	mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadBluetooth);
hgs
parents:
diff changeset
   490
	        }
hgs
parents:
diff changeset
   491
	        if (userSelectionIndex == 9) {
hgs
parents:
diff changeset
   492
	       	    mEngineWrapper->startNewLoad(ELoadGenCmdNewLoadPointerEvent);
hgs
parents:
diff changeset
   493
	       	}
hgs
parents:
diff changeset
   494
	        	        
hgs
parents:
diff changeset
   495
	    }
hgs
parents:
diff changeset
   496
	}
hgs
parents:
diff changeset
   497
 
hgs
parents:
diff changeset
   498
// --------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   499
void MainView::suspendAllLoads()
hgs
parents:
diff changeset
   500
{
hgs
parents:
diff changeset
   501
	mEngineWrapper->suspendAllLoadItems();
hgs
parents:
diff changeset
   502
}
hgs
parents:
diff changeset
   503
hgs
parents:
diff changeset
   504
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   505
	
hgs
parents:
diff changeset
   506
void MainView::resumeAllLoads()
hgs
parents:
diff changeset
   507
{
hgs
parents:
diff changeset
   508
	mEngineWrapper->resumeAllLoadItems();
hgs
parents:
diff changeset
   509
}
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
void MainView::clearListSelection()
hgs
parents:
diff changeset
   512
{
hgs
parents:
diff changeset
   513
    if (mListView != NULL) {
hgs
parents:
diff changeset
   514
		mListView->clearSelection();
hgs
parents:
diff changeset
   515
	}
hgs
parents:
diff changeset
   516
}
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   519
hgs
parents:
diff changeset
   520
void MainView::setLoadListData(QStringList& items)
hgs
parents:
diff changeset
   521
{
hgs
parents:
diff changeset
   522
	QString loadItem;
hgs
parents:
diff changeset
   523
	QString iconName;
hgs
parents:
diff changeset
   524
	mListItemExpanded.clear();
hgs
parents:
diff changeset
   525
	
hgs
parents:
diff changeset
   526
	if (mListView) {
hgs
parents:
diff changeset
   527
	mListView->setSelectionMode(HbListView::MultiSelection);
hgs
parents:
diff changeset
   528
	mListView->setVisible(true); //setHighlightMode(HbItemHighlight::AlwaysVisible);
hgs
parents:
diff changeset
   529
	mListModel->clear();
hgs
parents:
diff changeset
   530
	}
hgs
parents:
diff changeset
   531
	if (items.count() > 0) {
hgs
parents:
diff changeset
   532
		mIsLoadListEmpty = false;
hgs
parents:
diff changeset
   533
	}
hgs
parents:
diff changeset
   534
	else if (items.count() == 0) {
hgs
parents:
diff changeset
   535
		mIsLoadListEmpty = true;
hgs
parents:
diff changeset
   536
	}
hgs
parents:
diff changeset
   537
	for (int i = 0; i < items.count(); i++) {
hgs
parents:
diff changeset
   538
		 
hgs
parents:
diff changeset
   539
		LoadGenLoadItem *item = new LoadGenLoadItem();
hgs
parents:
diff changeset
   540
		//QStandardItem *item = new QStandardItem();
hgs
parents:
diff changeset
   541
		
hgs
parents:
diff changeset
   542
		loadItem = items.at(i);
hgs
parents:
diff changeset
   543
		if (loadItem.startsWith("1")) {
hgs
parents:
diff changeset
   544
			iconName = ":/paused.svg";
hgs
parents:
diff changeset
   545
			item->setSuspended(true);
hgs
parents:
diff changeset
   546
		}
hgs
parents:
diff changeset
   547
		else {
hgs
parents:
diff changeset
   548
			iconName = ":/active.svg";
hgs
parents:
diff changeset
   549
			item->setSuspended(false);
hgs
parents:
diff changeset
   550
		}
hgs
parents:
diff changeset
   551
		// remove icon indicator info from string
hgs
parents:
diff changeset
   552
		// to show in load in load list
hgs
parents:
diff changeset
   553
		loadItem.remove(0,2);
hgs
parents:
diff changeset
   554
		item->setText(loadItem);
hgs
parents:
diff changeset
   555
		item->setIcon(QIcon(iconName));
hgs
parents:
diff changeset
   556
		if(i == mPrevExpandedItem)
hgs
parents:
diff changeset
   557
			{
hgs
parents:
diff changeset
   558
			item->setExpanded(false);
hgs
parents:
diff changeset
   559
			//item->setExpanded(true);
hgs
parents:
diff changeset
   560
			}
hgs
parents:
diff changeset
   561
		else 
hgs
parents:
diff changeset
   562
			{
hgs
parents:
diff changeset
   563
			item->setExpanded(false);
hgs
parents:
diff changeset
   564
			}
hgs
parents:
diff changeset
   565
		// set new load to correct row in load list
hgs
parents:
diff changeset
   566
		mListModel->appendRow(item); //insertRow(i, item);
hgs
parents:
diff changeset
   567
	}
hgs
parents:
diff changeset
   568
}	
hgs
parents:
diff changeset
   569
hgs
parents:
diff changeset
   570
// ---------------------------------------------------------------------------