piprofilerui/ui/hb/src/pisettingsview.cpp
changeset 51 b048e15729d6
parent 44 5db69f4c3d06
child 52 36d60d12b4af
--- a/piprofilerui/ui/hb/src/pisettingsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +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 <HbMainWindow>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormModelItem>
-#include <HbDataFormViewItem>
-#include <QGraphicsLinearLayout>
-#include <QValidator>
-#include <QIntValidator>
-#include <QModelIndex>
-#include <HbLineEdit>
-#include <HbValidator>
-#include <HbEditorInterface>
-#include <hbabstractitemview.h>
-
-#include "pisettingsview.h"
-#include "pimainview.h"
-#include "notifications.h"
-#include "piprofilerengine.h"
-#include "pluginattributes.h"
-
-const QStringList OUTPUTMODES = (QStringList() << "Debug output" << "File system");
-
-PISettingsView::PISettingsView(PIProfilerEngine *engine) :
-    mEngine(engine), mGeneralAttributes(), mPluginList(0), mSettingForm(0), mModel(0),
-        mGeneralSettingsGroup(0), mPluginSettingsGroup(0), mOutputItem(0), mFileLocation(0),
-        mPrefix(0), mSamplingPeriod(0)
-
-{
-    this->setTitle("Settings");
-
-    //create setting form
-    mSettingForm = new HbDataForm(this);
-
-    //create a model class
-    mModel = new HbDataFormModel(this);
-
-    this->createGeneralSettingForms();
-
-    // Set created model model to form
-    mSettingForm->setModel(mModel);
-
-    // Set widget into view
-    setWidget(mSettingForm);
-
-    // load general settings into data form
-    loadGeneralSettings();
-
-    // Let us know when list is shown
-    connect(mSettingForm, SIGNAL(itemShown(const QModelIndex)), this,
-        SLOT(addTextValidators(const QModelIndex)));
-
-    // Set general group as expanded. 
-    /*HbDataFormViewItem *viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem( 
-        mGeneralSettingsGroup));
-    viewItem->setExpanded(true);*/
-
-}
-
-// ---------------------------------------------------------------------------
-
-PISettingsView::~PISettingsView()
-{
-    if (mSettingForm != 0) {
-        delete mSettingForm;
-        mSettingForm = 0;
-    }
-
-    if (mModel != 0) {
-        delete mModel;
-        mModel = 0;
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::addTextValidators(const QModelIndex index)
-{
-    HbDataFormModelItem *modelItem = mModel->itemFromIndex(index);
-
-    // Check if item is integer text box
-    if (modelItem->contentWidgetData(QString("TextboxType")) == QString("integer")) {
-
-        QString value = modelItem->contentWidgetData(QString("text")).toString();
-        // Create validator that accepts only integer values.
-        HbValidator *validator = new HbValidator(this);
-        validator->addField(new QIntValidator(0, 10000, validator), "1");
-
-        // Line editor widget from form
-        HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *> (mSettingForm->itemByIndex(index));
-        HbWidget *widget = viewItem->dataItemContentWidget();
-        HbLineEdit *editor = static_cast<HbLineEdit *> (widget);
-
-        if (editor != 0) {
-            // Create interface and attach lineEdit to it.
-            HbEditorInterface editInterface(editor);
-            // set editor as phone number editor so that inserting numbers is easier
-            editor->setInputMethodHints(Qt::ImhDigitsOnly);
-            editor->setValidator(validator);
-        }
-        modelItem->setContentWidgetData(QString("text"), value);
-
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::createGeneralSettingForms()
-{
-
-    // Add data into setting model
-
-    // General settings group
-    mGeneralSettingsGroup = mModel->appendDataFormGroup(QString("General settings"),
-        mModel->invisibleRootItem());
-
-    // Output drop down list
-    mOutputItem = mModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,
-        QString("Output to"), mGeneralSettingsGroup);
-    mOutputItem->setContentWidgetData(QString("items"), OUTPUTMODES);
-
-    // Data file location textbox
-    mFileLocation = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
-        "Save file in"), mGeneralSettingsGroup);
-    mFileLocation->setContentWidgetData("maxLength", 64);
-
-    // File name textbox
-    mPrefix = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("File prefix"),
-        mGeneralSettingsGroup);
-    mPrefix->setContentWidgetData("maxLength", 64);
-
-    // Period that used when using timed progfiling
-    mSamplingPeriod = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
-        "Sampling period(s)"), mGeneralSettingsGroup);
-    mSamplingPeriod->setContentWidgetData(QString("TextboxType"), QString("integer"));
-    mSamplingPeriod->setContentWidgetData("maxLength", 64);
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::createPluginSpecificSettings()
-{
-
-    // Create plug-in specific group
-    mPluginSettingsGroup = mModel->appendDataFormGroup(QString("Plug-in specific settings"),
-        mModel->invisibleRootItem());
-
-    if (mPluginList != 0) {
-
-        for (int index = 0; index < mPluginList->size(); index++) {
-
-            // create plug-in specific settings group for each plug-in which has own settings
-            if (mPluginList->at(index).mItemCount > 0 || mPluginList->at(index).mSampleRate != -1) {
-
-                // Create settings group
-                HbDataFormModelItem *mPluginGroup = mModel->appendDataFormGroup(QString(
-                    mPluginList->at(index).mName), mPluginSettingsGroup);
-
-          
-                // get plugin attributes
-                PluginAttributes attributes = mPluginList->at(index);
-
-                // Create sample rate item if it is needed
-                if (attributes.mSampleRate != -1) {
-                    attributes.mFormItemSampleRate = mModel->appendDataFormItem(
-                        HbDataFormModelItem::TextItem, "Sample rate (ms)", mPluginGroup);
-                    attributes.mFormItemSampleRate->setContentWidgetData(QString("TextboxType"), QString(
-                        "integer"));
-
-                    attributes.mFormItemSampleRate->setContentWidgetData("text",
-                        attributes.mSampleRate);
-                }
-
-                // create other setting items
-                attributes.mFormItemSettingItem1 = createPluginSettingItem(
-                    &attributes.mSettingItem1, mPluginGroup);
-                attributes.mFormItemSettingItem2 = createPluginSettingItem(
-                    &attributes.mSettingItem2, mPluginGroup);
-                attributes.mFormItemSettingItem3 = createPluginSettingItem(
-                    &attributes.mSettingItem3, mPluginGroup);
-                attributes.mFormItemSettingItem4 = createPluginSettingItem(
-                    &attributes.mSettingItem4, mPluginGroup);
-                attributes.mFormItemSettingItem5 = createPluginSettingItem(
-                    &attributes.mSettingItem5, mPluginGroup);
-                attributes.mFormItemSettingItem6 = createPluginSettingItem(
-                    &attributes.mSettingItem6, mPluginGroup);
-                mPluginList->replace(index, attributes);
-            }
-        }
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-HbDataFormModelItem *PISettingsView::createPluginSettingItem(const SettingItem *item,
-    HbDataFormModelItem *parentGroup)
-{
-    // create individual plug-in setting item
-
-    HbDataFormModelItem *settingItem = 0;
-    if (item->mSettingText != QString("")) {
-        switch (item->mType) {
-        case SettingItem::SettingItemTypeBool:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,
-                item->mUIText, parentGroup);
-            bool value = false;
-            if (item->mValue == "true") {
-                value = true;
-            }
-            settingItem->setContentWidgetData("tristate", value);
-
-            break;
-        case SettingItem::SettingItemTypeHex:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
-                parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        case SettingItem::SettingItemTypeInt:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
-                parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData(QString("TextboxType"), QString("integer"));
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        case SettingItem::SettingItemTypeText:
-            HbDataFormModelItem *settingItem = mModel->appendDataFormItem(
-                HbDataFormModelItem::TextItem, item->mUIText, parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        }
-    }
-    return settingItem;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::loadGeneralSettings()
-{
-    // load general settings from engine
-    mEngine->getGeneralSettings(mGeneralAttributes);
-
-    // set output item correct
-    if (mGeneralAttributes.mTraceOutput == "file_system") {
-        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_FILE);
-    }
-    else {
-        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_DEBUG);
-    }
-
-    mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
-    mPrefix->setContentWidgetData(QString("text"), mGeneralAttributes.mTraceFilePrefix);
-    mSamplingPeriod->setContentWidgetData(QString("text"), mGeneralAttributes.mTimedSamplingPeriod);
-
-}
-
-// ---------------------------------------------------------------------------
-
-GeneralAttributes &PISettingsView::getGeneralAttributes()
-{
-    // Read items from ui elements and save them into mGeneralAttributes
-
-
-    QString fileLocation = mFileLocation->contentWidgetData(QString("text")).toString();
-    if (fileLocation.length() > 0 && mEngine->checkTraceLocationSanity(fileLocation)) {
-        mGeneralAttributes.mSaveFileDrive = fileLocation;
-    }
-    else {
-        Notifications::showErrorNote("Invalid path, check settings!");
-        mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
-    }
-    bool ok = false;
-    mGeneralAttributes.mTimedSamplingPeriod
-        = mSamplingPeriod->contentWidgetData(QString("text")).toInt(&ok);
-
-    if (!ok) {
-        // this should not happen because intvalidator is set into text box
-        qWarning("Unable to convert sampling period to integer");
-
-    }
-    mGeneralAttributes.mTraceFilePrefix = mPrefix->contentWidgetData(QString("text")).toString();
-
-    if (mOutputItem->contentWidgetData(QString("currentIndex")).toInt(&ok) == OUTPUT_MODE_FILE) {
-        mGeneralAttributes.mTraceOutput = QString("file_system");
-    }
-    else {
-        mGeneralAttributes.mTraceOutput = QString("debug_output");
-    }
-
-    return mGeneralAttributes;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::setPluginSettings(QList<PluginAttributes> *pluginList)
-{
-    mPluginList = pluginList;
-    createPluginSpecificSettings();
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PISettingsView::readPluginSettingItemValue(HbDataFormModelItem *dataFormItem,
-    SettingItem *settingItem)
-{
-    if (settingItem != 0 && dataFormItem != 0) {
-        // check if item type is bool, convert bool to string
-        if (settingItem->mType == SettingItem::SettingItemTypeBool) {
-            bool checkboxValue = true;
-            checkboxValue = dataFormItem->contentWidgetData(QString("tristate")).toBool();
-            
-            if(checkboxValue){
-                settingItem->mValue = QString("true");
-            }
-            else{
-                settingItem->mValue = QString("false");
-            }
-
-        }
-        // otherwise save text straight into settin item
-        else {
-            settingItem->mValue = dataFormItem->contentWidgetData("text").toString();
-        }
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::readPluginSettings()
-{
-    // Read Plug-in setting item and save values into m
-    for (int index = 0; index < mPluginList->size(); index++) {
-
-        PluginAttributes attributes = mPluginList->at(index);
-
-        readPluginSettingItemValue(attributes.mFormItemSettingItem1, &attributes.mSettingItem1);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem2, &attributes.mSettingItem2);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem3, &attributes.mSettingItem3);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem4, &attributes.mSettingItem4);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem5, &attributes.mSettingItem5);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem6, &attributes.mSettingItem6);
-
-        if (attributes.mFormItemSampleRate != 0) {
-            bool ok = false;
-            attributes.mSampleRate
-                = attributes.mFormItemSampleRate->contentWidgetData("text").toInt(&ok);
-            if (!ok) {
-                // this should not happen because intvalidator is set into text box
-                qWarning("Unable to convert sample rate to integer");
-            }
-        }
-
-        mPluginList->replace(index, attributes);
-
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::expandPluginGroup(int uid)
-{
-
-    // FIXME some of the methods is deprecating fix once new methods available.
-    //collapse all group items
-    /*HbDataFormViewItem *viewItem = 0;
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(false);
-    }
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mGeneralSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(false);
-    }
-    // Set plugin group as expanded.
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(true);
-    }
-    // find group item which has same uid number
-    for (int index = 0; index < mPluginSettingsGroup->childCount(); index++) {
-        HbDataFormModelItem *item = mPluginSettingsGroup->childAt(index);
-        bool ok = false;
-        int groupUid = item->data(HbDataFormModelItem::KeyRole).toInt(&ok);
-        if (ok) {
-            if (uid == groupUid) {
-                // Set group as expanded
-                viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(item));
-                if (viewItem != 0) {
-                    viewItem->setExpanded(true);
-                }
-
-                // scroll view so that group is shown
-                mSettingForm->scrollTo(mModel->indexFromItem(item),
-                    HbAbstractItemView::PositionAtTop);
-                break;
-
-            }
-        }
-
-    }*/
-
-}
-
-// ---------------------------------------------------------------------------