diff -r 48060abbbeaf -r b3cee849fa46 loadgen/ui/hb/src/settingsview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadgen/ui/hb/src/settingsview.cpp Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,1255 @@ +/* +* 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 "settingsview.h" +#include "enginewrapper.h" +#include "loadgen.hrh" +#include "loadgen_loadattributes.h" +#include +#include +//#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include + + +#include + +QStringList PRIORITIES = (QStringList() << "Much less (-20)" << "Less (-10)" << "Normal (0)" << "More (10)" + << "Much more (20)" << "Real time (30)" << "Abs. very low (100)" << "Abs. low (200)" + << "Abs. backgr. (300)" << "Abs. foregr. (400)" << "Abs. high (500)"); +QStringList LOADMODES = (QStringList() << "Yielding" << "Blocking"); +QStringList CPULOADTYPES = (QStringList() << "Continuous" << "Periodic"); +QStringList MEMSOURCES = (QStringList() << "RAM" << "C:" << "D:" << "E:" << "F:" << "G:" << "H:" << "J:" << "K:" + << "L:" << "M:" << "N:"); +QStringList MEMEATTYPES = (QStringList() << "Memory to eat" << "Memory to be left" << "Alternate min/max"); +QStringList KEYPRESSTYPES = (QStringList() << "None" << "Arrow keys"); +QStringList MESSAGETYPES = (QStringList() << "SMS" << "MMS"); + + +SettingsView::SettingsView(HbView &mainView, HbMainWindow &parent, EngineWrapper &engine) + + : mMainWindow(parent), + mMainView(mainView), + mEngineWrapper(engine), + mAmount(NULL), + mMinAmountToBeLeft(NULL), + mMaxAmountToBeLeft(NULL), + mLength(NULL), + mIdle(NULL), + mRandomVar(NULL) +{ +} + +SettingsView::~SettingsView() +{ + +} + +// TODO HbDataFormModelItem data operations does not work correctly with WK38. +// Item data does not get updated correctly as set by initial settings(HbDataFormModelItem::RadioButtonListItem) +// or user settings.(HbDataFormModelItem::TextItem) + +// --------------------------------------------------------------------------- + +void SettingsView::open(const QString &settingsName, TLoadGenCommandIds cmdId) +{ + mCmdId = cmdId; + // Remove main view from main window and add this view to main window + mMainWindow.addView(this); + mMainWindow.setCurrentView(this); + setTitle(settingsName); + + //create toolbar showing launch popup + HbToolBar *toolBar = this->toolBar(); + HbAction *actionOk = new HbAction("Ok", toolBar); + HbAction *actionCancel = new HbAction("Cancel", toolBar); + toolBar->addAction( actionOk ); + toolBar->addAction( actionCancel ); + + //create setting form + mSettingForm = new HbDataForm(); + + //create a model class + mModel = new HbDataFormModel(this); + createItems(mModel, 0); + // Set created model to form + mSettingForm->setModel(mModel); + setWidget(mSettingForm); + loadAttributes(); + + connect(actionOk, SIGNAL(triggered()), this, SLOT(okExit())); + connect(actionCancel, SIGNAL(triggered()), this, SLOT(cancelled())); + connect(this, SIGNAL(aboutToClose()), this, SLOT(backButtonPressed())); + connect(mSettingForm, SIGNAL(activated(const QModelIndex)), this, SLOT(dataItemDisplayed(const QModelIndex))); + show(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createItems(HbDataFormModel *model, + HbDataFormModelItem *parent) +{ + switch (mCmdId) { + case ELoadGenCmdNewLoadCPULoad: { + createCpuLoadItems(model, parent); + break; + } + case ELoadGenCmdNewLoadEatMemory: { + createEatMemoryItems(model, parent); + break; + } + case ELoadGenCmdNewLoadPhoneCall: { + createPhoneCallItems(model, parent); + break; + } + case ELoadGenCmdNewLoadNetConn: { + createNetConnItems(model, parent); + break; + } + case ELoadGenCmdNewLoadKeyPress: + case ELoadGenCmdNewLoadPointerEvent: { + createKeyOrPointerItems(model, parent); + break; + } + case ELoadGenCmdNewLoadMessages: { + createMessageItems(model, parent); + break; + } + case ELoadGenCmdNewLoadApplications: { + createAppsItems(model, parent); + break; + } + case ELoadGenCmdNewLoadPhotoCaptures: { + createPhotoItems(model, parent); + break; + } + case ELoadGenCmdNewLoadBluetooth: { + createBtItems(model, parent); + break; + } + default: { + break; + } + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::createCpuLoadItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + mLoadSettings = model->appendDataFormGroup(QString("CPU load settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + // DataFormItem for load mode selection + mLoadMode = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Load mode"), + mLoadSettings); + mLoadMode->setContentWidgetData(QString("items"), LOADMODES); + + // DataFormItem for load type selection + mType = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Type"), + mLoadSettings); + mType->setContentWidgetData(QString("items"), CPULOADTYPES); + +} + +// --------------------------------------------------------------------------- + +void SettingsView::createEatMemoryItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + mLoadSettings = model->appendDataFormGroup(QString("Eat memory settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + // DataFormItem for memory eat type selection + mSource = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Source"), + mLoadSettings); + mSource->setContentWidgetData(QString("items"), MEMSOURCES); + + + // DataFormItem for memory eat type selection + mType = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Type"), + mLoadSettings); + mType->setContentWidgetData(QString("items"), MEMEATTYPES); + + // DataFormItem for idle length selection + mBuffer = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Buffer (B)"), + mLoadSettings); + mBuffer->setContentWidgetData("maximum" , 999999999); + mBuffer->setContentWidgetData("minimum", 0); + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle after buffer (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createPhoneCallItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + mLoadSettings = model->appendDataFormGroup(QString("Phone calls settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + mDestination = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Phone number:"), + mLoadSettings); + mDestination->setContentWidgetData("maximum" , 99999999999999999999.0 ); + mDestination->setContentWidgetData("minimum", 0); + + mLength = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Length (ms)"), + mLoadSettings); + mLength->setContentWidgetData("maximum" , 999999999); + mLength->setContentWidgetData("minimum", 0); + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createNetConnItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + mLoadSettings = model->appendDataFormGroup(QString("Network conn. settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + mDestination = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Destination URL:"), + mLoadSettings); + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createKeyOrPointerItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + QString settingsName; + if (mCmdId == ELoadGenCmdNewLoadPointerEvent) { + settingsName = "Pointer events settings"; + } + else { + settingsName = "Key presses settings"; + } + mLoadSettings = model->appendDataFormGroup(settingsName, parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + + // DataFormItem for heartbeat length selection + mHeartBeat = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Heartbeat (ms)"), + mLoadSettings); + mHeartBeat->setContentWidgetData("maximum" , 999999999); + mHeartBeat->setContentWidgetData("minimum", 0); + + // Random variance + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createMessageItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + mLoadSettings = model->appendDataFormGroup(QString("Messages settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + + mType = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Type"), + mLoadSettings); + mType->setContentWidgetData(QString("items"), MESSAGETYPES); + + + mDestination = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Phone number:"), + mLoadSettings); + mDestination->setContentWidgetData("maximum" , 99999999999999999999.0 ); + mDestination->setContentWidgetData("minimum", 0); + + mAmount = mModel->insertDataFormItem(3, HbDataFormModelItem::TextItem, + QString("Maximum amount of messages"), + mLoadSettings); + mAmount->setContentWidgetData("maximum" , 1000); + mAmount->setContentWidgetData("minimum", 0); + + mLength = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Message length"), + mLoadSettings); + mLength->setContentWidgetData("maximum" , 999999999); + mLength->setContentWidgetData("minimum", 0); + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createAppsItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + mLoadSettings = model->appendDataFormGroup(QString("Applications settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + mMaxParallelApps = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Max parallel applications"), + mLoadSettings); + mMaxParallelApps->setContentWidgetData("maximum" , 100); + mMaxParallelApps->setContentWidgetData("minimum", 0); + + + // DataFormItem for launching interval length selection + mLaunchingInterval = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Launching interval (ms)"), + mLoadSettings); + mLaunchingInterval->setContentWidgetData("maximum" , 999999999); + mLaunchingInterval->setContentWidgetData("minimum", 0); + + // DataFormItem for key press type selection + mKeyPressType = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Key press type"), + mLoadSettings); + mKeyPressType->setContentWidgetData(QString("items"), KEYPRESSTYPES); + + // DataFormItem for heartbeat length selection + mHeartBeat = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Key press interval (ms)"), + mLoadSettings); + mHeartBeat->setContentWidgetData("maximum" , 999999999); + mHeartBeat->setContentWidgetData("minimum", 0); + + // Random variance + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createPhotoItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + mLoadSettings = model->appendDataFormGroup(QString("Camera settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + // Random variance + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- + +void SettingsView::createBtItems(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + mLoadSettings = model->appendDataFormGroup(QString("Bluetooth settings"), parent); + + // DataFormItem for priority selection + mPriority = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("Priority"), + mLoadSettings); + mPriority->setContentWidgetData(QString("items"), PRIORITIES); + + + // DataFormItem for idle length selection + mIdle = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + // Random variance + mRandomVar = model->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); +} + +// --------------------------------------------------------------------------- +// Load attributes from engine & set the data into each form model item: + +void SettingsView::loadAttributes() +{ + switch (mCmdId) + { + case ELoadGenCmdNewLoadCPULoad: { + mCPULoadAttributes = mEngineWrapper.getCpuLoadAttributes(); + mPriority->setContentWidgetData(QString("selected"), mCPULoadAttributes.mPriority); + mLoadMode->setContentWidgetData(QString("selected"), mCPULoadAttributes.mMode); + mType->setContentWidgetData(QString("selected"), mCPULoadAttributes.mType); + + if (mCPULoadAttributes.mType == ECpuLoadTypePeriodic) { //if (mCPULoadAttributes.mMode == ECpuLoadTypePeriodic) { + // Create and append to model these items: Length, Idle, Random variance, if load type is peridodic. + + // DataFormItem for load length selection + mLength = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Length (ms)"), + mLoadSettings); + mLength->setContentWidgetData("maximum" , 999999999); + mLength->setContentWidgetData("minimum", 0); + + + // DataFormItem for load length selection + mIdle = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + + mRandomVar = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); + + mLength->setContentWidgetData(QString("text"), mCPULoadAttributes.mLength); + mIdle->setContentWidgetData(QString("text"), mCPULoadAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mCPULoadAttributes.mRandomVariance); + } + + // if there's more than one cpu available in the system, + // insert possibility to select which cpu the load is generated to + if (mCPULoadAttributes.mCpuCount > 1) + { + QStringList cpuArray; + cpuArray.append("Free scheduling"); + // add cpus to list: + for (int i = 0; i < mCPULoadAttributes.mCpuCount; i++) + { + QString cpu = QString("CPU%1").arg(i); + cpuArray.append(cpu); + } + // "All CPUs" means that one thread is started for each CPU. + cpuArray.append("All CPUs"); + + mCpu = mModel->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, + QString("CPU"), + mLoadSettings); + mCpu->setContentWidgetData(QString("items"), cpuArray); + + if (mCPULoadAttributes.mCpu < 0) { + mCpu->setContentWidgetData(QString("selected"), 0); + } + + else if (mCPULoadAttributes.mCpu == KCPUSelection_AllCPUs) { + mCpu->setContentWidgetData(QString("selected"), cpuArray.count()-1); + } + // CPU is defined, set the correct CPU as default selection in query list + else { + // mCpu starts from zero (i.e. CPU0 is first CPU), but index zero + // in settings Ui form item is reserved for "Free scheduling", hence iCpu+1. + mCpu->setContentWidgetData(QString("selected"), mCPULoadAttributes.mCpu+1); + } + } + break; + } + case ELoadGenCmdNewLoadEatMemory: { + mMemoryEatAttributes = mEngineWrapper.getMemoryEatAttributes(); + mPriority->setContentWidgetData(QString("selected"), mMemoryEatAttributes.mPriority); + mSource->setContentWidgetData(QString("selected"), mMemoryEatAttributes.mSource); + mType->setContentWidgetData(QString("selected"), mMemoryEatAttributes.mType); + + if (mMemoryEatAttributes.mType == EMemoryEatTypeWavy) { + mMinAmountToBeLeft = mModel->insertDataFormItem(3, HbDataFormModelItem::TextItem, + QString("Min to be left (B)"), + mLoadSettings); + mMinAmountToBeLeft->setContentWidgetData("maximum" , 99999999999999); + mMinAmountToBeLeft->setContentWidgetData("minimum", 0); + + mMaxAmountToBeLeft = mModel->insertDataFormItem(4, HbDataFormModelItem::TextItem, + QString("Max to be left (B)"), + mLoadSettings); + mMaxAmountToBeLeft->setContentWidgetData("maximum" , 99999999999999); + mMaxAmountToBeLeft->setContentWidgetData("minimum", 0); + + mMinAmountToBeLeft->setContentWidgetData(QString("text"), mMemoryEatAttributes.mRandomMinDes); + mMaxAmountToBeLeft->setContentWidgetData(QString("text"), mMemoryEatAttributes.mRandomMaxDes); + } + else if (mMemoryEatAttributes.mType == EMemoryEatTypeMemoryToEat || + mMemoryEatAttributes.mType == EMemoryEatTypeMemoryToBeLeft ) { + mAmount = mModel->insertDataFormItem(3, HbDataFormModelItem::TextItem, + QString("Amout(B)"), + mLoadSettings); + mAmount->setContentWidgetData("maximum" , 99999999999999); + mAmount->setContentWidgetData("minimum", 0); + + mAmount->setContentWidgetData(QString("text"), mMemoryEatAttributes.mAmount); + } + mBuffer->setContentWidgetData(QString("text"), mMemoryEatAttributes.mBuffer); + mIdle->setContentWidgetData(QString("text"), mMemoryEatAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mMemoryEatAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadPhoneCall: { + mPhoneCallAttributes = mEngineWrapper.getPhoneCallAttributes(); + mPriority->setContentWidgetData(QString("selected"), mPhoneCallAttributes.mPriority); + mDestination->setContentWidgetData(QString("text"), mPhoneCallAttributes.mDestination); + mLength->setContentWidgetData(QString("text"), mPhoneCallAttributes.mLength); + mIdle->setContentWidgetData(QString("text"), mPhoneCallAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mPhoneCallAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadNetConn: { + mNetConnAttributes = mEngineWrapper.getNetConnAttributes(); + mPriority->setContentWidgetData(QString("selected"), mNetConnAttributes.mPriority); + mDestination->setContentWidgetData(QString("text"), mNetConnAttributes.mDestination); + mIdle->setContentWidgetData(QString("text"), mNetConnAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mNetConnAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadKeyPress: { + mKeyPressAttributes = mEngineWrapper.getKeyPressAttributes(); + mPriority->setContentWidgetData(QString("selected"), mKeyPressAttributes.mPriority); + mHeartBeat->setContentWidgetData(QString("text"), mKeyPressAttributes.mHeartBeat); + mRandomVar->setContentWidgetData(QString("text"), mKeyPressAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadPointerEvent: { + mPointerEventAttributes = mEngineWrapper.getPointerEventAttributes(); + mPriority->setContentWidgetData(QString("selected"), mPointerEventAttributes.mPriority); + mHeartBeat->setContentWidgetData(QString("text"), mPointerEventAttributes.mHeartBeat); + mRandomVar->setContentWidgetData(QString("text"), mPointerEventAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadMessages: { + mMessageAttributes = mEngineWrapper.getMessageAttributes(); + mPriority->setContentWidgetData(QString("selected"), mMessageAttributes.mPriority); + mType->setContentWidgetData(QString("selected"), mMessageAttributes.mMessageType); + mDestination->setContentWidgetData(QString("text"), mMessageAttributes.mDestination); + mAmount->setContentWidgetData(QString("text"), mMessageAttributes.mAmount); + mLength->setContentWidgetData(QString("text"), mMessageAttributes.mLength); + mIdle->setContentWidgetData(QString("text"), mMessageAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mMessageAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadApplications: { + mApplicationsAttributes = mEngineWrapper.getApplicationsAttributes(); + mPriority->setContentWidgetData(QString("selected"), mApplicationsAttributes.mPriority); + mMaxParallelApps->setContentWidgetData(QString("text"), mApplicationsAttributes.mMaxOpen); + mHeartBeat->setContentWidgetData(QString("text"), mApplicationsAttributes.mHeartBeat); + mLaunchingInterval->setContentWidgetData(QString("text"), mApplicationsAttributes.mLaunchingInterval); + mKeyPressType->setContentWidgetData(QString("selected"), mApplicationsAttributes.mKeyPressType); + mRandomVar->setContentWidgetData(QString("text"), mApplicationsAttributes.mRandomVariance); + break; + } + case ELoadGenCmdNewLoadPhotoCaptures: { + mPhotoCaptureAttributes = mEngineWrapper.getPhotoCaptureAttributes(); + mPriority->setContentWidgetData(QString("selected"), mPhotoCaptureAttributes.mPriority); + mIdle->setContentWidgetData(QString("text"), mPhotoCaptureAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mPhotoCaptureAttributes.mRandomVariance); + + // if there's any cameras avaialable in system, construct form item for it/them: + if (mPhotoCaptureAttributes.mCameraCount > 0) + { + QStringList devices; + // add cameras to list: + for (int i = 0; i < mPhotoCaptureAttributes.mCameraCount; i++) + { + QString cam = QString("Camera %1").arg(i); + devices.append(cam); + } + mCamera = mModel->insertDataFormItem(1, HbDataFormModelItem::RadioButtonListItem, + QString("Device"), + mLoadSettings); + mCamera->setContentWidgetData(QString("items"), devices); + mCamera->setContentWidgetData(QString("selected"), mPhotoCaptureAttributes.mCamera); + } + break; + } + case ELoadGenCmdNewLoadBluetooth: { + mBluetoothAttributes = mEngineWrapper.getBluetoothAttributes(); + mPriority->setContentWidgetData(QString("selected"), mBluetoothAttributes.mPriority); + mIdle->setContentWidgetData(QString("text"), mBluetoothAttributes.mIdle); + mRandomVar->setContentWidgetData(QString("text"), mBluetoothAttributes.mRandomVariance); + break; + } + + default: { + break; + } + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::setDefaultSettings() +{ + +} + +// --------------------------------------------------------------------------- + +void SettingsView::backButtonPressed() +{ + okExit(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveSettings() +{ + switch (mCmdId) { + case ELoadGenCmdNewLoadCPULoad: { + saveCpuLoadSettings(); + break; + } + case ELoadGenCmdNewLoadEatMemory: { + saveEatMemorySettings(); + break; + } + case ELoadGenCmdNewLoadPhoneCall: { + savePhoneCallSettings(); + break; + } + case ELoadGenCmdNewLoadNetConn: { + saveNetConnSettings(); + break; + } + case ELoadGenCmdNewLoadKeyPress: { + saveKeyPressSettings(); + break; + } + case ELoadGenCmdNewLoadPointerEvent: { + savePointerEventSettings(); + break; + } + case ELoadGenCmdNewLoadMessages: { + saveMessageSettings(); + break; + } + case ELoadGenCmdNewLoadApplications: { + saveApplicationsSettings(); + break; + } + case ELoadGenCmdNewLoadPhotoCaptures: { + savePhotoSettings(); + break; + } + case ELoadGenCmdNewLoadBluetooth: { + saveBtSettings(); + break; + } + default: { + break; + } + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveCpuLoadSettings() +{ + mCPULoadAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mCPULoadAttributes.mMode = mLoadMode->contentWidgetData("selected").toInt(); + mCPULoadAttributes.mType = mType->contentWidgetData("selected").toInt(); + if (mType->contentWidgetData("selected").toInt() == ECpuLoadTypePeriodic) { + // TODO: remove temp checks if (mLength != NULL) etc. when HbDataFormModelItem bugs fixed. + if (mLength != NULL) { + mCPULoadAttributes.mLength = mLength->contentWidgetData("text").toInt(); + } + if (mIdle != NULL) { + mCPULoadAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + } + if (mRandomVar != NULL) { + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mCPULoadAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mCPULoadAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + } + } + + // we are running in SMP environment + if (mCPULoadAttributes.mCpuCount > 1) + { + TInt currentValueIndex = mCpu->contentWidgetData("selected").toInt(); + // user selected a specific CPU in which the load thread should be run in. + if (currentValueIndex == 0) + { + // User selected "Free scheduling" + mCPULoadAttributes.mCpu = KCPUSelection_FreeScheduling; + } + else if( currentValueIndex == (mCpu->childCount()-1) ) + { + // User selected "All CPUs", which is the last item in the form radio button selection list + mCPULoadAttributes.mCpu = KCPUSelection_AllCPUs; + } + else + { + // mCpu should start from zero (CPU0 is the first cpu) + // but zero in Ui form item index means "Free scheduling". CPU0 in + // index of form radio button list is at index 1, hence -1. + mCPULoadAttributes.mCpu = currentValueIndex - 1; + } + } + + +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveEatMemorySettings() +{ + mMemoryEatAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mMemoryEatAttributes.mSource = mSource->contentWidgetData("selected").toInt(); + mMemoryEatAttributes.mType = mType->contentWidgetData("selected").toInt(); + + if (mType->contentWidgetData("selected").toInt() == EMemoryEatTypeWavy) { + // TODO: remove temp checks if (mLength != NULL) etc. when HbDataFormModelItem bugs fixed. + if (mMinAmountToBeLeft != NULL) { + mMemoryEatAttributes.mRandomMin = + mMinAmountToBeLeft->contentWidgetData("text").toInt(); + } + if (mMaxAmountToBeLeft != NULL) { + mMemoryEatAttributes.mRandomMax = + mMaxAmountToBeLeft->contentWidgetData("text").toInt(); + } + } + else if (mType->contentWidgetData("selected").toInt() == EMemoryEatTypeMemoryToEat || + mType->contentWidgetData("selected").toInt() == EMemoryEatTypeMemoryToBeLeft) { + if (mAmount != NULL) { + mMemoryEatAttributes.mAmount = mAmount->contentWidgetData("text").toInt(); + } + } + mMemoryEatAttributes.mBuffer = mBuffer->contentWidgetData("text").toInt(); + mMemoryEatAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mMemoryEatAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mMemoryEatAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + + // swap min- & max values if they are in wrong order + if (mMemoryEatAttributes.mRandomMin > mMemoryEatAttributes.mRandomMax) + { + qint64 temp(mMemoryEatAttributes.mRandomMin); + mMemoryEatAttributes.mRandomMin = mMemoryEatAttributes.mRandomMax; + mMemoryEatAttributes.mRandomMax = temp; + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::savePhoneCallSettings() +{ + mPhoneCallAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mPhoneCallAttributes.mLength = mLength->contentWidgetData("text").toInt(); + mPhoneCallAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mPhoneCallAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mPhoneCallAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + + + mPhoneCallAttributes.mDestination = mDestination->contentWidgetData("text").toString(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveNetConnSettings() +{ + mPhoneCallAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mPhoneCallAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mPhoneCallAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mPhoneCallAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + mPhoneCallAttributes.mDestination = mDestination->contentWidgetData("text").toString(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveKeyPressSettings() +{ + mKeyPressAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mKeyPressAttributes.mHeartBeat = mHeartBeat->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mKeyPressAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mKeyPressAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + +} + +// --------------------------------------------------------------------------- + +void SettingsView::savePointerEventSettings() +{ + mPointerEventAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mPointerEventAttributes.mHeartBeat = mHeartBeat->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mPointerEventAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mPointerEventAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveMessageSettings() +{ + mMessageAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mMessageAttributes.mMessageType = mType->contentWidgetData("selected").toInt(); + mMessageAttributes.mDestination = mDestination->contentWidgetData("text").toString(); + int amount = mAmount->contentWidgetData("text").toInt(); + if( amount >=0 && amount <= mAmount->contentWidgetData("maximum").toInt() ) + { + mMessageAttributes.mAmount = mAmount->contentWidgetData("text").toInt(); + } + else + { + mMessageAttributes.mAmount = mAmount->contentWidgetData("maximum").toInt(); + } + mMessageAttributes.mLength = mLength->contentWidgetData("text").toInt(); + mMessageAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mMessageAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mMessageAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveApplicationsSettings() +{ + mApplicationsAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + int maxApps = mMaxParallelApps->contentWidgetData("text").toInt(); + if( maxApps >=0 && maxApps <= mMaxParallelApps->contentWidgetData("maximum").toInt() ) + { + mApplicationsAttributes.mMaxOpen = mMaxParallelApps->contentWidgetData("text").toInt(); + } + else + { + mApplicationsAttributes.mMaxOpen = mMaxParallelApps->contentWidgetData("maximum").toInt(); + } + mApplicationsAttributes.mLaunchingInterval = mLaunchingInterval->contentWidgetData("text").toInt(); + mApplicationsAttributes.mKeyPressType = mKeyPressType->contentWidgetData("selected").toInt(); + mPointerEventAttributes.mHeartBeat = mHeartBeat->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mApplicationsAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mApplicationsAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::savePhotoSettings() +{ + mPhotoCaptureAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mPhotoCaptureAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mPhotoCaptureAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mPhotoCaptureAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + + // update only if there's more than one camera device available in the system, + // for use case of one camera available, the selection cannot be changed by user. + if (mPhotoCaptureAttributes.mCameraCount > 1) + { + mPhotoCaptureAttributes.mCamera = mCamera->contentWidgetData("selected").toInt(); + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveBtSettings() +{ + mBluetoothAttributes.mPriority = mPriority->contentWidgetData("selected").toInt(); + mBluetoothAttributes.mIdle = mIdle->contentWidgetData("text").toInt(); + int randVar = mRandomVar->contentWidgetData("text").toInt(); + if( randVar >=0 && randVar <= mRandomVar->contentWidgetData("maximum").toInt() ) + { + mBluetoothAttributes.mRandomVariance = mRandomVar->contentWidgetData("text").toInt(); + } + else + { + mBluetoothAttributes.mRandomVariance = mRandomVar->contentWidgetData("maximum").toInt(); + } + +} + +// --------------------------------------------------------------------------- + +void SettingsView::cancelled() +{ + connect(this, + SIGNAL(loadCanclled()), + &mEngineWrapper, + SLOT(loadSettingsCanclled())); + emit loadCanclled(); + + mMainWindow.removeView(this); + mMainWindow.setCurrentView(&mMainView, true); + deleteLater(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::okExit() +{ + saveSettings(); + setLoadAttributes(); + connect(this, + SIGNAL(loadCompleted(TLoadGenCommandIds)), + &mEngineWrapper, + SLOT(loadAddedOrEdited(TLoadGenCommandIds))); + emit loadCompleted(mCmdId); + + mMainWindow.removeView(this); + mMainWindow.setCurrentView(&mMainView, true); + deleteLater(); +} + +// --------------------------------------------------------------------------- + +void SettingsView::setLoadAttributes() +{ + switch (mCmdId) { + case ELoadGenCmdNewLoadCPULoad: { + mEngineWrapper.setCpuLoadAttributes(mCPULoadAttributes); + break; + } + case ELoadGenCmdNewLoadEatMemory: { + mEngineWrapper.setMemoryEatAttributes(mMemoryEatAttributes); + break; + } + case ELoadGenCmdNewLoadPhoneCall: { + mEngineWrapper.setPhoneCallAttributes(mPhoneCallAttributes); + break; + } + case ELoadGenCmdNewLoadNetConn: { + mEngineWrapper.setNetConnAttributes(mNetConnAttributes); + break; + } + case ELoadGenCmdNewLoadKeyPress: { + mEngineWrapper.setKeyPressAttributes(mKeyPressAttributes); + break; + } + case ELoadGenCmdNewLoadPointerEvent: { + mEngineWrapper.setPointerEventAttributes(mPointerEventAttributes); + break; + } + case ELoadGenCmdNewLoadMessages: { + mEngineWrapper.setMessageAttributes(mMessageAttributes); + break; + } + case ELoadGenCmdNewLoadApplications: { + mEngineWrapper.setApplicationsAttributes(mApplicationsAttributes); + break; + } + case ELoadGenCmdNewLoadPhotoCaptures: { + mEngineWrapper.setPhotoCaptureAttributes(mPhotoCaptureAttributes); + break; + } + case ELoadGenCmdNewLoadBluetooth: { + mEngineWrapper.setBluetoothAttributes(mBluetoothAttributes); + break; + } + default: { + break; + } + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::dataItemDisplayed(const QModelIndex &index) +{ + HbDataFormViewItem *item = static_cast(mSettingForm->itemByIndex(index)); + HbWidget *contentWidget = static_cast(item->dataItemContentWidget()); + switch(mCmdId){ + case ELoadGenCmdNewLoadCPULoad: { + if (index.row() == 2) { // Cpu load type selection is in this row: periodic vs. continuous + mModes = static_cast(contentWidget); + connect(mModes , SIGNAL(itemSelected(int)), this, SLOT(selectionChanged(int))); + } + break; + } + case ELoadGenCmdNewLoadEatMemory: { + // Memory eat type is in this row: mem to eat/ mem to be left vs. alternate min/max + if (index.row() == 2) { + mTypes = static_cast(contentWidget ); + connect(mTypes ,SIGNAL(itemSelected(int)), this,SLOT(selectionChanged(int))); + } + break; + } + } +} + +// --------------------------------------------------------------------------- + +void SettingsView::selectionChanged(int index) +{ + switch (mCmdId) { + case ELoadGenCmdNewLoadCPULoad: { + if (index == ECpuLoadTypePeriodic) { + // if periodic selected, add Length, Idle and Random variance to settings, + // if they does not exist yet. + if (mLength == NULL) { + mLength = mModel->insertDataFormItem(3, + HbDataFormModelItem::TextItem, + QString("Length (ms)"), + mLoadSettings); + mLength->setContentWidgetData("maximum" , 999999999); + mLength->setContentWidgetData("minimum", 0); + mLength->setContentWidgetData(QString("text"), mCPULoadAttributes.mLength); + } + if (mIdle == NULL) { + // DataFormItem for load length selection + mIdle = mModel->insertDataFormItem(4, + HbDataFormModelItem::TextItem, + QString("Idle (ms)"), + mLoadSettings); + mIdle->setContentWidgetData("maximum" , 999999999); + mIdle->setContentWidgetData("minimum", 0); + mIdle->setContentWidgetData(QString("text"), mCPULoadAttributes.mIdle); + } + if (mRandomVar == NULL) { + mRandomVar = mModel->insertDataFormItem(5, + HbDataFormModelItem::TextItem, + QString("Random variance (%)"), + mLoadSettings); + mRandomVar->setContentWidgetData("maximum" , 100); + mRandomVar->setContentWidgetData("minimum", 0); + mRandomVar->setContentWidgetData(QString("text"), mCPULoadAttributes.mRandomVariance); + } + } + else if (index == ECpuLoadTypeContinuous) { + // if continuous selected, remove existing Length, Idle and Random variance from settings view: + // if they does not exist do nothing. + if (mLength != NULL) { + mModel->removeItem(mLength); + mLength = NULL; + } + if (mIdle != NULL) { + mModel->removeItem(mIdle); + mIdle = NULL; + } + if (mRandomVar != NULL) { + mModel->removeItem(mRandomVar); + mRandomVar = NULL; + } + } + break; + } + case ELoadGenCmdNewLoadEatMemory: { + if (index == EMemoryEatTypeWavy) { + // remove one item, if exists. + if (mAmount != NULL) { + mModel->removeItem(mAmount); + mAmount = NULL; + } + // insert two new item rows, if not exists. + if (mMinAmountToBeLeft == NULL) { + mMinAmountToBeLeft = mModel->insertDataFormItem(3, HbDataFormModelItem::TextItem, + QString("Min to be left (B)"), + mLoadSettings); + mMinAmountToBeLeft->setContentWidgetData("maximum" , 99999999999999); + mMinAmountToBeLeft->setContentWidgetData("minimum", 0); + mMinAmountToBeLeft->setContentWidgetData( QString("text"),mMemoryEatAttributes.mRandomMin ); + } + if (mMaxAmountToBeLeft == NULL) { + mMaxAmountToBeLeft = mModel->insertDataFormItem(4, HbDataFormModelItem::TextItem, + QString("Max to be left (B)"), + mLoadSettings); + mMaxAmountToBeLeft->setContentWidgetData("maximum" , 99999999999999); + mMaxAmountToBeLeft->setContentWidgetData("minimum", 0); + mMaxAmountToBeLeft->setContentWidgetData( QString("text"),mMemoryEatAttributes.mRandomMax ); + } + } + else if (index == EMemoryEatTypeMemoryToEat || index == EMemoryEatTypeMemoryToBeLeft) { + // remove two item rows, if exists. + if (mMinAmountToBeLeft != NULL) { + mModel->removeItem(mMinAmountToBeLeft); + mMinAmountToBeLeft = NULL; + } + if (mMaxAmountToBeLeft != NULL) { + mModel->removeItem(mMaxAmountToBeLeft); + mMaxAmountToBeLeft = NULL; + } + // insert one item, if not exists. + if (mAmount == NULL) { + mAmount = mModel->insertDataFormItem(3, HbDataFormModelItem::TextItem, + QString("Amout(B)"), + mLoadSettings); + mAmount->setContentWidgetData("maximum" , 99999999999999); + mAmount->setContentWidgetData("minimum", 0); + mAmount->setContentWidgetData( QString("text"),mMemoryEatAttributes.mAmount ); + } + } + } + default: { + break; + } + } +} + +// ---------------------------------------------------------------------------