piprofilerui/ui/hb/src/pisettingsview.cpp
author hgs
Mon, 23 Aug 2010 15:50:54 +0300
changeset 44 5db69f4c3d06
parent 26 41ebde60981f
child 46 fad26422216a
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
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
44
hgs
parents: 26
diff changeset
    18
#include <HbMainWindow>
hgs
parents: 26
diff changeset
    19
#include <HbDataForm>
hgs
parents: 26
diff changeset
    20
#include <HbDataFormModel>
hgs
parents: 26
diff changeset
    21
#include <HbDataFormModelItem>
hgs
parents: 26
diff changeset
    22
#include <HbDataFormViewItem>
hgs
parents: 26
diff changeset
    23
#include <QGraphicsLinearLayout>
hgs
parents: 26
diff changeset
    24
#include <QValidator>
hgs
parents: 26
diff changeset
    25
#include <QIntValidator>
hgs
parents: 26
diff changeset
    26
#include <QModelIndex>
hgs
parents: 26
diff changeset
    27
#include <HbLineEdit>
hgs
parents: 26
diff changeset
    28
#include <HbValidator>
hgs
parents: 26
diff changeset
    29
#include <HbEditorInterface>
26
hgs
parents:
diff changeset
    30
#include <hbabstractitemview.h>
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include "pisettingsview.h"
hgs
parents:
diff changeset
    33
#include "pimainview.h"
hgs
parents:
diff changeset
    34
#include "notifications.h"
hgs
parents:
diff changeset
    35
#include "piprofilerengine.h"
hgs
parents:
diff changeset
    36
#include "pluginattributes.h"
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
const QStringList OUTPUTMODES = (QStringList() << "Debug output" << "File system");
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
PISettingsView::PISettingsView(PIProfilerEngine *engine) :
hgs
parents:
diff changeset
    41
    mEngine(engine), mGeneralAttributes(), mPluginList(0), mSettingForm(0), mModel(0),
hgs
parents:
diff changeset
    42
        mGeneralSettingsGroup(0), mPluginSettingsGroup(0), mOutputItem(0), mFileLocation(0),
hgs
parents:
diff changeset
    43
        mPrefix(0), mSamplingPeriod(0)
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
{
hgs
parents:
diff changeset
    46
    this->setTitle("Settings");
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    //create setting form
hgs
parents:
diff changeset
    49
    mSettingForm = new HbDataForm(this);
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    //create a model class
hgs
parents:
diff changeset
    52
    mModel = new HbDataFormModel(this);
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    this->createGeneralSettingForms();
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
    // Set created model model to form
hgs
parents:
diff changeset
    57
    mSettingForm->setModel(mModel);
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
    // Set widget into view
hgs
parents:
diff changeset
    60
    setWidget(mSettingForm);
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    // load general settings into data form
hgs
parents:
diff changeset
    63
    loadGeneralSettings();
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    // Let us know when list is shown
hgs
parents:
diff changeset
    66
    connect(mSettingForm, SIGNAL(itemShown(const QModelIndex)), this,
hgs
parents:
diff changeset
    67
        SLOT(addTextValidators(const QModelIndex)));
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
    // Set general group as expanded. 
hgs
parents:
diff changeset
    70
    /*HbDataFormViewItem *viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem( 
hgs
parents:
diff changeset
    71
        mGeneralSettingsGroup));
hgs
parents:
diff changeset
    72
    viewItem->setExpanded(true);*/
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
}
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
PISettingsView::~PISettingsView()
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
    if (mSettingForm != 0) {
hgs
parents:
diff changeset
    81
        delete mSettingForm;
hgs
parents:
diff changeset
    82
        mSettingForm = 0;
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    if (mModel != 0) {
hgs
parents:
diff changeset
    86
        delete mModel;
hgs
parents:
diff changeset
    87
        mModel = 0;
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
}
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
void PISettingsView::addTextValidators(const QModelIndex index)
hgs
parents:
diff changeset
    94
{
hgs
parents:
diff changeset
    95
    HbDataFormModelItem *modelItem = mModel->itemFromIndex(index);
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    // Check if item is integer text box
hgs
parents:
diff changeset
    98
    if (modelItem->contentWidgetData(QString("TextboxType")) == QString("integer")) {
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
        QString value = modelItem->contentWidgetData(QString("text")).toString();
hgs
parents:
diff changeset
   101
        // Create validator that accepts only integer values.
hgs
parents:
diff changeset
   102
        HbValidator *validator = new HbValidator(this);
hgs
parents:
diff changeset
   103
        validator->addField(new QIntValidator(0, 10000, validator), "1");
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        // Line editor widget from form
hgs
parents:
diff changeset
   106
        HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *> (mSettingForm->itemByIndex(index));
hgs
parents:
diff changeset
   107
        HbWidget *widget = viewItem->dataItemContentWidget();
hgs
parents:
diff changeset
   108
        HbLineEdit *editor = static_cast<HbLineEdit *> (widget);
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
        if (editor != 0) {
hgs
parents:
diff changeset
   111
            // Create interface and attach lineEdit to it.
hgs
parents:
diff changeset
   112
            HbEditorInterface editInterface(editor);
hgs
parents:
diff changeset
   113
            // set editor as phone number editor so that inserting numbers is easier
hgs
parents:
diff changeset
   114
            editor->setInputMethodHints(Qt::ImhDigitsOnly);
hgs
parents:
diff changeset
   115
            editor->setValidator(validator);
hgs
parents:
diff changeset
   116
        }
hgs
parents:
diff changeset
   117
        modelItem->setContentWidgetData(QString("text"), value);
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
    }
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
}
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
void PISettingsView::createGeneralSettingForms()
hgs
parents:
diff changeset
   126
{
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
    // Add data into setting model
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    // General settings group
hgs
parents:
diff changeset
   131
    mGeneralSettingsGroup = mModel->appendDataFormGroup(QString("General settings"),
hgs
parents:
diff changeset
   132
        mModel->invisibleRootItem());
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
    // Output drop down list
hgs
parents:
diff changeset
   135
    mOutputItem = mModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,
hgs
parents:
diff changeset
   136
        QString("Output to"), mGeneralSettingsGroup);
hgs
parents:
diff changeset
   137
    mOutputItem->setContentWidgetData(QString("items"), OUTPUTMODES);
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    // Data file location textbox
hgs
parents:
diff changeset
   140
    mFileLocation = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
hgs
parents:
diff changeset
   141
        "Save file in"), mGeneralSettingsGroup);
hgs
parents:
diff changeset
   142
    mFileLocation->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
    // File name textbox
hgs
parents:
diff changeset
   145
    mPrefix = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("File prefix"),
hgs
parents:
diff changeset
   146
        mGeneralSettingsGroup);
hgs
parents:
diff changeset
   147
    mPrefix->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    // Period that used when using timed progfiling
hgs
parents:
diff changeset
   150
    mSamplingPeriod = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
hgs
parents:
diff changeset
   151
        "Sampling period(s)"), mGeneralSettingsGroup);
hgs
parents:
diff changeset
   152
    mSamplingPeriod->setContentWidgetData(QString("TextboxType"), QString("integer"));
hgs
parents:
diff changeset
   153
    mSamplingPeriod->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
}
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
void PISettingsView::createPluginSpecificSettings()
hgs
parents:
diff changeset
   160
{
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
    // Create plug-in specific group
hgs
parents:
diff changeset
   163
    mPluginSettingsGroup = mModel->appendDataFormGroup(QString("Plug-in specific settings"),
hgs
parents:
diff changeset
   164
        mModel->invisibleRootItem());
hgs
parents:
diff changeset
   165
hgs
parents:
diff changeset
   166
    if (mPluginList != 0) {
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
        for (int index = 0; index < mPluginList->size(); index++) {
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
            // create plug-in specific settings group for each plug-in which has own settings
hgs
parents:
diff changeset
   171
            if (mPluginList->at(index).mItemCount > 0 || mPluginList->at(index).mSampleRate != -1) {
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
                // Create settings group
hgs
parents:
diff changeset
   174
                HbDataFormModelItem *mPluginGroup = mModel->appendDataFormGroup(QString(
hgs
parents:
diff changeset
   175
                    mPluginList->at(index).mName), mPluginSettingsGroup);
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
          
hgs
parents:
diff changeset
   178
                // get plugin attributes
hgs
parents:
diff changeset
   179
                PluginAttributes attributes = mPluginList->at(index);
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
                // Create sample rate item if it is needed
hgs
parents:
diff changeset
   182
                if (attributes.mSampleRate != -1) {
hgs
parents:
diff changeset
   183
                    attributes.mFormItemSampleRate = mModel->appendDataFormItem(
hgs
parents:
diff changeset
   184
                        HbDataFormModelItem::TextItem, "Sample rate (ms)", mPluginGroup);
hgs
parents:
diff changeset
   185
                    attributes.mFormItemSampleRate->setContentWidgetData(QString("TextboxType"), QString(
hgs
parents:
diff changeset
   186
                        "integer"));
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
                    attributes.mFormItemSampleRate->setContentWidgetData("text",
hgs
parents:
diff changeset
   189
                        attributes.mSampleRate);
hgs
parents:
diff changeset
   190
                }
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
                // create other setting items
hgs
parents:
diff changeset
   193
                attributes.mFormItemSettingItem1 = createPluginSettingItem(
hgs
parents:
diff changeset
   194
                    &attributes.mSettingItem1, mPluginGroup);
hgs
parents:
diff changeset
   195
                attributes.mFormItemSettingItem2 = createPluginSettingItem(
hgs
parents:
diff changeset
   196
                    &attributes.mSettingItem2, mPluginGroup);
hgs
parents:
diff changeset
   197
                attributes.mFormItemSettingItem3 = createPluginSettingItem(
hgs
parents:
diff changeset
   198
                    &attributes.mSettingItem3, mPluginGroup);
hgs
parents:
diff changeset
   199
                attributes.mFormItemSettingItem4 = createPluginSettingItem(
hgs
parents:
diff changeset
   200
                    &attributes.mSettingItem4, mPluginGroup);
hgs
parents:
diff changeset
   201
                attributes.mFormItemSettingItem5 = createPluginSettingItem(
hgs
parents:
diff changeset
   202
                    &attributes.mSettingItem5, mPluginGroup);
hgs
parents:
diff changeset
   203
                attributes.mFormItemSettingItem6 = createPluginSettingItem(
hgs
parents:
diff changeset
   204
                    &attributes.mSettingItem6, mPluginGroup);
hgs
parents:
diff changeset
   205
                mPluginList->replace(index, attributes);
hgs
parents:
diff changeset
   206
            }
hgs
parents:
diff changeset
   207
        }
hgs
parents:
diff changeset
   208
    }
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
}
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
HbDataFormModelItem *PISettingsView::createPluginSettingItem(const SettingItem *item,
hgs
parents:
diff changeset
   215
    HbDataFormModelItem *parentGroup)
hgs
parents:
diff changeset
   216
{
hgs
parents:
diff changeset
   217
    // create individual plug-in setting item
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
    HbDataFormModelItem *settingItem = 0;
hgs
parents:
diff changeset
   220
    if (item->mSettingText != QString("")) {
hgs
parents:
diff changeset
   221
        switch (item->mType) {
hgs
parents:
diff changeset
   222
        case SettingItem::SettingItemTypeBool:
hgs
parents:
diff changeset
   223
            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,
hgs
parents:
diff changeset
   224
                item->mUIText, parentGroup);
hgs
parents:
diff changeset
   225
            bool value = false;
hgs
parents:
diff changeset
   226
            if (item->mValue == "true") {
hgs
parents:
diff changeset
   227
                value = true;
hgs
parents:
diff changeset
   228
            }
hgs
parents:
diff changeset
   229
            settingItem->setContentWidgetData("tristate", value);
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
            break;
hgs
parents:
diff changeset
   232
        case SettingItem::SettingItemTypeHex:
hgs
parents:
diff changeset
   233
            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
hgs
parents:
diff changeset
   234
                parentGroup);
hgs
parents:
diff changeset
   235
            settingItem->setContentWidgetData("text", item->mValue);
hgs
parents:
diff changeset
   236
            settingItem->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
            break;
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
        case SettingItem::SettingItemTypeInt:
hgs
parents:
diff changeset
   241
            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
hgs
parents:
diff changeset
   242
                parentGroup);
hgs
parents:
diff changeset
   243
            settingItem->setContentWidgetData("text", item->mValue);
hgs
parents:
diff changeset
   244
            settingItem->setContentWidgetData(QString("TextboxType"), QString("integer"));
hgs
parents:
diff changeset
   245
            settingItem->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
            break;
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        case SettingItem::SettingItemTypeText:
hgs
parents:
diff changeset
   250
            HbDataFormModelItem *settingItem = mModel->appendDataFormItem(
hgs
parents:
diff changeset
   251
                HbDataFormModelItem::TextItem, item->mUIText, parentGroup);
hgs
parents:
diff changeset
   252
            settingItem->setContentWidgetData("text", item->mValue);
hgs
parents:
diff changeset
   253
            settingItem->setContentWidgetData("maxLength", 64);
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
            break;
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
        }
hgs
parents:
diff changeset
   258
    }
hgs
parents:
diff changeset
   259
    return settingItem;
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
}
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
void PISettingsView::loadGeneralSettings()
hgs
parents:
diff changeset
   266
{
hgs
parents:
diff changeset
   267
    // load general settings from engine
hgs
parents:
diff changeset
   268
    mEngine->getGeneralSettings(mGeneralAttributes);
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
    // set output item correct
hgs
parents:
diff changeset
   271
    if (mGeneralAttributes.mTraceOutput == "file_system") {
hgs
parents:
diff changeset
   272
        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_FILE);
hgs
parents:
diff changeset
   273
    }
hgs
parents:
diff changeset
   274
    else {
hgs
parents:
diff changeset
   275
        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_DEBUG);
hgs
parents:
diff changeset
   276
    }
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
    mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
hgs
parents:
diff changeset
   279
    mPrefix->setContentWidgetData(QString("text"), mGeneralAttributes.mTraceFilePrefix);
hgs
parents:
diff changeset
   280
    mSamplingPeriod->setContentWidgetData(QString("text"), mGeneralAttributes.mTimedSamplingPeriod);
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
}
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   285
hgs
parents:
diff changeset
   286
GeneralAttributes &PISettingsView::getGeneralAttributes()
hgs
parents:
diff changeset
   287
{
hgs
parents:
diff changeset
   288
    // Read items from ui elements and save them into mGeneralAttributes
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
    QString fileLocation = mFileLocation->contentWidgetData(QString("text")).toString();
hgs
parents:
diff changeset
   292
    if (fileLocation.length() > 0 && mEngine->checkTraceLocationSanity(fileLocation)) {
hgs
parents:
diff changeset
   293
        mGeneralAttributes.mSaveFileDrive = fileLocation;
hgs
parents:
diff changeset
   294
    }
hgs
parents:
diff changeset
   295
    else {
hgs
parents:
diff changeset
   296
        Notifications::showErrorNote("Invalid path, check settings!");
hgs
parents:
diff changeset
   297
        mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
hgs
parents:
diff changeset
   298
    }
hgs
parents:
diff changeset
   299
    bool ok = false;
hgs
parents:
diff changeset
   300
    mGeneralAttributes.mTimedSamplingPeriod
hgs
parents:
diff changeset
   301
        = mSamplingPeriod->contentWidgetData(QString("text")).toInt(&ok);
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    if (!ok) {
hgs
parents:
diff changeset
   304
        // this should not happen because intvalidator is set into text box
hgs
parents:
diff changeset
   305
        qWarning("Unable to convert sampling period to integer");
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
    }
hgs
parents:
diff changeset
   308
    mGeneralAttributes.mTraceFilePrefix = mPrefix->contentWidgetData(QString("text")).toString();
hgs
parents:
diff changeset
   309
hgs
parents:
diff changeset
   310
    if (mOutputItem->contentWidgetData(QString("currentIndex")).toInt(&ok) == OUTPUT_MODE_FILE) {
hgs
parents:
diff changeset
   311
        mGeneralAttributes.mTraceOutput = QString("file_system");
hgs
parents:
diff changeset
   312
    }
hgs
parents:
diff changeset
   313
    else {
hgs
parents:
diff changeset
   314
        mGeneralAttributes.mTraceOutput = QString("debug_output");
hgs
parents:
diff changeset
   315
    }
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
    return mGeneralAttributes;
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
}
hgs
parents:
diff changeset
   320
hgs
parents:
diff changeset
   321
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
void PISettingsView::setPluginSettings(QList<PluginAttributes> *pluginList)
hgs
parents:
diff changeset
   324
{
hgs
parents:
diff changeset
   325
    mPluginList = pluginList;
hgs
parents:
diff changeset
   326
    createPluginSpecificSettings();
hgs
parents:
diff changeset
   327
}
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
void PISettingsView::readPluginSettingItemValue(HbDataFormModelItem *dataFormItem,
hgs
parents:
diff changeset
   333
    SettingItem *settingItem)
hgs
parents:
diff changeset
   334
{
hgs
parents:
diff changeset
   335
    if (settingItem != 0 && dataFormItem != 0) {
hgs
parents:
diff changeset
   336
        // check if item type is bool, convert bool to string
hgs
parents:
diff changeset
   337
        if (settingItem->mType == SettingItem::SettingItemTypeBool) {
hgs
parents:
diff changeset
   338
            bool checkboxValue = true;
hgs
parents:
diff changeset
   339
            checkboxValue = dataFormItem->contentWidgetData(QString("tristate")).toBool();
hgs
parents:
diff changeset
   340
            
hgs
parents:
diff changeset
   341
            if(checkboxValue){
hgs
parents:
diff changeset
   342
                settingItem->mValue = QString("true");
hgs
parents:
diff changeset
   343
            }
hgs
parents:
diff changeset
   344
            else{
hgs
parents:
diff changeset
   345
                settingItem->mValue = QString("false");
hgs
parents:
diff changeset
   346
            }
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
        }
hgs
parents:
diff changeset
   349
        // otherwise save text straight into settin item
hgs
parents:
diff changeset
   350
        else {
hgs
parents:
diff changeset
   351
            settingItem->mValue = dataFormItem->contentWidgetData("text").toString();
hgs
parents:
diff changeset
   352
        }
hgs
parents:
diff changeset
   353
    }
hgs
parents:
diff changeset
   354
}
hgs
parents:
diff changeset
   355
hgs
parents:
diff changeset
   356
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
void PISettingsView::readPluginSettings()
hgs
parents:
diff changeset
   359
{
hgs
parents:
diff changeset
   360
    // Read Plug-in setting item and save values into m
hgs
parents:
diff changeset
   361
    for (int index = 0; index < mPluginList->size(); index++) {
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
        PluginAttributes attributes = mPluginList->at(index);
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
        readPluginSettingItemValue(attributes.mFormItemSettingItem1, &attributes.mSettingItem1);
hgs
parents:
diff changeset
   366
        readPluginSettingItemValue(attributes.mFormItemSettingItem2, &attributes.mSettingItem2);
hgs
parents:
diff changeset
   367
        readPluginSettingItemValue(attributes.mFormItemSettingItem3, &attributes.mSettingItem3);
hgs
parents:
diff changeset
   368
        readPluginSettingItemValue(attributes.mFormItemSettingItem4, &attributes.mSettingItem4);
hgs
parents:
diff changeset
   369
        readPluginSettingItemValue(attributes.mFormItemSettingItem5, &attributes.mSettingItem5);
hgs
parents:
diff changeset
   370
        readPluginSettingItemValue(attributes.mFormItemSettingItem6, &attributes.mSettingItem6);
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
        if (attributes.mFormItemSampleRate != 0) {
hgs
parents:
diff changeset
   373
            bool ok = false;
hgs
parents:
diff changeset
   374
            attributes.mSampleRate
hgs
parents:
diff changeset
   375
                = attributes.mFormItemSampleRate->contentWidgetData("text").toInt(&ok);
hgs
parents:
diff changeset
   376
            if (!ok) {
hgs
parents:
diff changeset
   377
                // this should not happen because intvalidator is set into text box
hgs
parents:
diff changeset
   378
                qWarning("Unable to convert sample rate to integer");
hgs
parents:
diff changeset
   379
            }
hgs
parents:
diff changeset
   380
        }
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
        mPluginList->replace(index, attributes);
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
    }
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
}
hgs
parents:
diff changeset
   387
hgs
parents:
diff changeset
   388
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
void PISettingsView::expandPluginGroup(int uid)
hgs
parents:
diff changeset
   391
{
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
    // FIXME some of the methods is deprecating fix once new methods available.
hgs
parents:
diff changeset
   394
    //collapse all group items
hgs
parents:
diff changeset
   395
    /*HbDataFormViewItem *viewItem = 0;
hgs
parents:
diff changeset
   396
    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
hgs
parents:
diff changeset
   397
    if (viewItem != 0) {
hgs
parents:
diff changeset
   398
        viewItem->setExpanded(false);
hgs
parents:
diff changeset
   399
    }
hgs
parents:
diff changeset
   400
    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mGeneralSettingsGroup));
hgs
parents:
diff changeset
   401
    if (viewItem != 0) {
hgs
parents:
diff changeset
   402
        viewItem->setExpanded(false);
hgs
parents:
diff changeset
   403
    }
hgs
parents:
diff changeset
   404
    // Set plugin group as expanded.
hgs
parents:
diff changeset
   405
    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
hgs
parents:
diff changeset
   406
    if (viewItem != 0) {
hgs
parents:
diff changeset
   407
        viewItem->setExpanded(true);
hgs
parents:
diff changeset
   408
    }
hgs
parents:
diff changeset
   409
    // find group item which has same uid number
hgs
parents:
diff changeset
   410
    for (int index = 0; index < mPluginSettingsGroup->childCount(); index++) {
hgs
parents:
diff changeset
   411
        HbDataFormModelItem *item = mPluginSettingsGroup->childAt(index);
hgs
parents:
diff changeset
   412
        bool ok = false;
hgs
parents:
diff changeset
   413
        int groupUid = item->data(HbDataFormModelItem::KeyRole).toInt(&ok);
hgs
parents:
diff changeset
   414
        if (ok) {
hgs
parents:
diff changeset
   415
            if (uid == groupUid) {
hgs
parents:
diff changeset
   416
                // Set group as expanded
hgs
parents:
diff changeset
   417
                viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(item));
hgs
parents:
diff changeset
   418
                if (viewItem != 0) {
hgs
parents:
diff changeset
   419
                    viewItem->setExpanded(true);
hgs
parents:
diff changeset
   420
                }
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
                // scroll view so that group is shown
hgs
parents:
diff changeset
   423
                mSettingForm->scrollTo(mModel->indexFromItem(item),
hgs
parents:
diff changeset
   424
                    HbAbstractItemView::PositionAtTop);
hgs
parents:
diff changeset
   425
                break;
hgs
parents:
diff changeset
   426
hgs
parents:
diff changeset
   427
            }
hgs
parents:
diff changeset
   428
        }
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
    }*/
hgs
parents:
diff changeset
   431
hgs
parents:
diff changeset
   432
}
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
// ---------------------------------------------------------------------------