diff -r b3cee849fa46 -r fad26422216a loadgen/ui/hb/src/mainview.cpp --- a/loadgen/ui/hb/src/mainview.cpp Tue Aug 31 15:15:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,399 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "mainview.h" -#include "enginewrapper.h" -#include "notifications.h" -#include "loadgen.hrh" -#include -#include -#include -#include -#include -#include -//#include -//#include -#include -#include -#include -#include - -#include -#include -#include -#include - -// --------------------------------------------------------------------------- - -MainView::MainView(HbMainWindow &mainWindow) : - mMainWindow(mainWindow), - mEngineWrapper(0), - mIsLoadListEmpty(true), - mStopAll(NULL), - mSuspendAll(NULL), - mResumeAll(NULL) - -{ -} - -// --------------------------------------------------------------------------- - -MainView::~MainView() -{ - if (mEngineWrapper != 0) { - delete mEngineWrapper; - } - delete mListModel; - delete mListView; - delete mSm; -} - -// --------------------------------------------------------------------------- - -void MainView::init(HbApplication &app) -{ - this->setTitle("Load Gener."); - mEngineWrapper = new EngineWrapper(mMainWindow, *this); - int error = mEngineWrapper->init(); - Q_ASSERT_X(error == 1, "LoadGen", "Engine initialization failed"); - createMenu(app); - loadListIinit(); -} - -// --------------------------------------------------------------------------- - -void MainView::createMenu(HbApplication &app) -{ - HbMenu *menu = this->menu(); - - // signal mapper for identifying the different command actions - // in executeCommand() handler function: - mSm = new QSignalMapper(this); - connect(mSm, SIGNAL(mapped(int)), this, SLOT(executeMenuCommand(int))); - - if (menu != NULL) { - // Temp work-around for menu item bug in Orbit Wk38, - // sub menu cannot contain more than 6 functional action items! - // two sub menus created to fix this problem. - mLoadSubMenu1 = menu->addMenu("New loads"); - mLoadSubMenu2 = menu->addMenu("More new loads"); - mCpuLoadAction = mLoadSubMenu1->addAction("CPU load"); - connect(mCpuLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mCpuLoadAction, ELoadGenCmdNewLoadCPULoad); - - mMemoryEatLoadAction = mLoadSubMenu1->addAction("Eat memory"); - connect(mMemoryEatLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mMemoryEatLoadAction, ELoadGenCmdNewLoadEatMemory); - - mPhoneCallLoadAction = mLoadSubMenu1->addAction("Phone calls"); - connect(mPhoneCallLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mPhoneCallLoadAction, ELoadGenCmdNewLoadPhoneCall); - - mMessagesLoadAction = mLoadSubMenu1->addAction("Messages"); - connect(mMessagesLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mMessagesLoadAction, ELoadGenCmdNewLoadMessages); -//TODO to be fixed using replacement for downloadmanager -/* - mNetConnLoadAction = mLoadSubMenu1->addAction("Network conn."); - connect(mNetConnLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mNetConnLoadAction, ELoadGenCmdNewLoadNetConn); -*/ - mKeyPressLoadAction = mLoadSubMenu2->addAction("Key presses"); - connect(mKeyPressLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mKeyPressLoadAction, ELoadGenCmdNewLoadKeyPress); - - mAppsLoadAction = mLoadSubMenu2->addAction("Applications"); - connect(mAppsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mAppsLoadAction, ELoadGenCmdNewLoadApplications); - - mPhotoCapturesLoadAction = mLoadSubMenu2->addAction("Photo captures"); - connect(mPhotoCapturesLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mPhotoCapturesLoadAction, ELoadGenCmdNewLoadPhotoCaptures); - - mBtActionsLoadAction = mLoadSubMenu2->addAction("Bluetooth actions"); - connect(mBtActionsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mBtActionsLoadAction, ELoadGenCmdNewLoadBluetooth); - - mPointerEventsLoadAction = mLoadSubMenu2->addAction("Pointer events"); - connect(mPointerEventsLoadAction, SIGNAL( triggered() ), mSm, SLOT(map())); - mSm->setMapping(mPointerEventsLoadAction, ELoadGenCmdNewLoadPointerEvent); - - mActionPerfMon = menu->addAction("Launch PerfMon"); - connect(mActionPerfMon, SIGNAL(triggered()), this, SLOT( launchPerfMon())); - - mActionAbout = menu->addAction("About"); - connect(mActionAbout, SIGNAL(triggered()), this, SLOT( showAboutPopup())); - - mActionExit = menu->addAction("Exit"); - connect(mActionExit, SIGNAL(triggered()), &app, SLOT(quit())); - - // menu dynamic update - connect(menu, SIGNAL(aboutToShow()), this, SLOT(updateMenu())); - } -} - -// --------------------------------------------------------------------------- - -void MainView::loadListIinit() -{ - // Create list view and model for it - mListView = new HbListView(this); - mListModel = new QStandardItemModel(this); - mListView->setModel(mListModel); - mListView->setSelectionMode(HbListView::NoSelection); - mListView->setVisible( false ); //HighlightMode(HbItemHighlight::Hidden); - - QStandardItem *item = new QStandardItem(QString("No loads activated. (Select new load from menu to generate new load)")); - mListModel->setItem(0, item); - - connect(mListView, - SIGNAL(longPressed(HbAbstractViewItem*, QPointF)), - this, - SLOT(handleLoadListEvent(HbAbstractViewItem*, QPointF))); - - - // Create layout and add list view there: - QGraphicsLinearLayout *mainlayout = new QGraphicsLinearLayout(Qt::Vertical, this); - mainlayout->addItem(mListView); - mainlayout->setAlignment(mListView, Qt::AlignCenter); - setLayout(mainlayout); -} - -// --------------------------------------------------------------------------- - -void MainView::showAboutPopup() -{ - Notifications::about(); -} - -// --------------------------------------------------------------------------- - -void MainView::executeMenuCommand(int cmd) -{ - mEngineWrapper->startNewLoad(cmd); -} - -// --------------------------------------------------------------------------- - -void MainView::handleLoadListEvent(HbAbstractViewItem */*listViewItem*/, const QPointF &/*coords*/) -{ - const QStringList items = (QStringList() << "Stop" << "Resume/Suspend" << "Edit"); - HbSelectionDialog *dlg = new HbSelectionDialog(); - dlg->setAttribute(Qt::WA_DeleteOnClose); - dlg->setStringItems(items); - dlg->setSelectionMode(HbAbstractItemView::SingleSelection); - dlg->open(this, SLOT(ItemActionPopupClosed(HbAction*))); -} - -// --------------------------------------------------------------------------- - -void MainView::ItemActionPopupClosed(HbAction* action) -{ - HbSelectionDialog *dlg = static_cast(sender()); - if(!action && dlg->selectedItems().count()){ - int userSelectionIndex = dlg->selectedItems().at(0).toInt(); - // all operations for selected list item only. Query selected load list item index from model. - if (userSelectionIndex == 0) { - // stop selected load from the load list: - stopLoad(false); - } - else if (userSelectionIndex == 1) { - // Suspend or Resume - mEngineWrapper->suspendOrResumeSelectedOrHighlightedItems(); - } - else { - // current selected row number from the load list. - int selectedRow = mListView->selectionModel()->currentIndex().row(); - // edit load setttings: - mEngineWrapper->loadEdit(selectedRow); - } - } -} - -// -------------------------------------------------------------------------- - -void MainView::stopAllLoads() -{ - stopLoad(true); -} - -// --------------------------------------------------------------------------- - -bool MainView::stopLoad(bool stopAll) -{ - int success = false; - if (mListView != NULL) { - if (stopAll == true) { - success = mEngineWrapper->stopLoad(stopAll); - mIsLoadListEmpty = true; - } - else { - success = mEngineWrapper->stopLoad(stopAll); - } - } - return success; -} - -// --------------------------------------------------------------------------- - -void MainView::updateMenu() -{ - if (mIsLoadListEmpty != true) { - if (mStopAll == NULL) { - mStopAll = new HbAction("Stop all", menu()); - connect(mStopAll, SIGNAL(triggered()), this, SLOT(stopAllLoads())); - menu()->insertAction(mActionAbout, mStopAll); - } - else{ - mStopAll->setVisible(true); - } - if (mSuspendAll == NULL) { - mSuspendAll = new HbAction("Suspend all", menu()); - connect(mSuspendAll, SIGNAL(triggered()), this, SLOT(suspendAllLoads())); - menu()->insertAction(mActionAbout, mSuspendAll); - } - else{ - mSuspendAll->setVisible(true); - } - if (mResumeAll == NULL) { - mResumeAll = new HbAction("Resume all", menu()); - connect(mResumeAll, SIGNAL(triggered()), this, SLOT(resumeAllLoads())); - menu()->insertAction(mActionAbout, mResumeAll); - } - else{ - mResumeAll->setVisible(true); - } - } - else if (mIsLoadListEmpty == true) { - if (mStopAll != NULL && mStopAll->text() == "Stop all") { - mStopAll->setVisible(false); - } - if (mSuspendAll != NULL && mSuspendAll->text() == "Suspend all") { - mSuspendAll->setVisible(false); - } - if (mResumeAll != NULL && mResumeAll->text() == "Resume all") { - mSuspendAll->setVisible(false); - } - } -} - - -// --------------------------------------------------------------------------- - -int MainView::currentItemIndex() -{ - return mListView->selectionModel()->currentIndex().row(); -} - -// --------------------------------------------------------------------------- - -void MainView::setCurrentItemIndex(int index) -{ - QModelIndex newIndex = mListView->model()->index(index, 0); - mListView->selectionModel()->setCurrentIndex(newIndex, - QItemSelectionModel::SelectCurrent); - //mListView->setCurrentIndex( index ); //setCurrentRow(index); -} - -// --------------------------------------------------------------------------- - -void MainView::launchPerfMon() -{ - mEngineWrapper->launchPerfMonApp(); -} - -// --------------------------------------------------------------------------- - -QList MainView::listSelectionIndexes() - { - QList indices; - if (mListView != NULL) { - QItemSelectionModel *selectionModel = mListView->selectionModel(); - if (selectionModel->hasSelection()) { - QModelIndexList modelIndexes = selectionModel->selectedIndexes(); - QModelIndex index; - foreach (index, modelIndexes) { - indices.append(index.row()); - } - } - } - return indices; - } - -// -------------------------------------------------------------------------------------------- - -void MainView::suspendAllLoads() -{ - mEngineWrapper->suspendAllLoadItems(); -} - -// --------------------------------------------------------------------------- - -void MainView::resumeAllLoads() -{ - mEngineWrapper->resumeAllLoadItems(); -} - -void MainView::clearListSelection() -{ - if (mListView != NULL) { - mListView->clearSelection(); - } -} - -// --------------------------------------------------------------------------- - -void MainView::setLoadListData(QStringList& items) -{ - QString loadItem; - QString iconName; - - if (mListView) { - mListView->setSelectionMode(HbListView::MultiSelection); - mListView->setVisible(true); //setHighlightMode(HbItemHighlight::AlwaysVisible); - if(mListModel->rowCount()) - { - mListModel->removeRows(0,mListModel->rowCount()); - } -// mListModel->clear(); - } - if (items.count() > 0) { - mIsLoadListEmpty = false; - } - else if (items.count() == 0) { - mIsLoadListEmpty = true; - } - for (int i = 0; i < items.count(); i++) { - QStandardItem *item = new QStandardItem(); - loadItem = items.at(i); - if (loadItem.startsWith("1")) { - iconName = ":/paused.svg"; - } - else { - iconName = ":/active.svg"; - } - // remove icon indicator info from string - // to show in load in load list - loadItem.remove(0,2); - item->setText(loadItem); - item->setIcon(QIcon(iconName)); - // set new load to correct row in load list - mListModel->insertRow(i, item); - } -} - -// ---------------------------------------------------------------------------