securitydialogs/SecUi/SecUiTestQt/treedataform.cpp
author hgs
Wed, 20 Oct 2010 14:51:23 +0300
changeset 66 67b3e3c1fc87
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* ====================================================
hgs
parents:
diff changeset
     3
*  Name        : treedataform.cpp
hgs
parents:
diff changeset
     4
*  Part of     : fute/SecUiTestQt
hgs
parents:
diff changeset
     5
*  Description : Data form for SecUiTestQt
hgs
parents:
diff changeset
     6
*  Version     : %version: 1 %
hgs
parents:
diff changeset
     7
*
hgs
parents:
diff changeset
     8
*  Copyright (c) 2009 Nokia.  All rights reserved.
hgs
parents:
diff changeset
     9
*  This material, including documentation and any related computer
hgs
parents:
diff changeset
    10
*  programs, is protected by copyright controlled by Nokia.  All
hgs
parents:
diff changeset
    11
*  rights are reserved.  Copying, including reproducing, storing,
hgs
parents:
diff changeset
    12
*  adapting or translating, any or all of this material requires the
hgs
parents:
diff changeset
    13
*  prior written consent of Nokia.  This material also contains
hgs
parents:
diff changeset
    14
*  confidential information which may not be disclosed to others
hgs
parents:
diff changeset
    15
*  without the prior written consent of Nokia.
hgs
parents:
diff changeset
    16
* ====================================================
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "treedataform.h"
hgs
parents:
diff changeset
    20
#include "dirviewitem.h"
hgs
parents:
diff changeset
    21
#include <hbtreeview.h>
hgs
parents:
diff changeset
    22
#include <hbtreeviewitem.h>
hgs
parents:
diff changeset
    23
#include <hbdataformmodel.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
const QStringList KDepths = ( QStringList() << "1" << "3" << "5" << "all" );
hgs
parents:
diff changeset
    26
const QStringList ViewItems = (QStringList() << "Default" << "DirItem");
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
TreeDataForm::TreeDataForm( HbAbstractItemView &view,
hgs
parents:
diff changeset
    31
                                   QGraphicsItem *parent):
hgs
parents:
diff changeset
    32
    ViewFuteDataForm(view, parent),
hgs
parents:
diff changeset
    33
    depth(1),
hgs
parents:
diff changeset
    34
    indentation(-1),
hgs
parents:
diff changeset
    35
    dirViewItemEnabled(false)
hgs
parents:
diff changeset
    36
{
hgs
parents:
diff changeset
    37
}
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
TreeDataForm::~TreeDataForm()
hgs
parents:
diff changeset
    40
{
hgs
parents:
diff changeset
    41
}
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
void TreeDataForm::initialise()
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
    depth = 1;
hgs
parents:
diff changeset
    46
    dirViewItemEnabled = false;
hgs
parents:
diff changeset
    47
    for (int i=0; i< TreeCustomLast; i++) {
hgs
parents:
diff changeset
    48
        customTreeSettingsIndexes[i] = -1;
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
    ViewFuteDataForm::initialise();
hgs
parents:
diff changeset
    51
}
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
int TreeDataForm::populateCustomSettingsItem(int previousItem)
hgs
parents:
diff changeset
    54
{
hgs
parents:
diff changeset
    55
    HbTreeView *tree = qobject_cast<HbTreeView*>(view);
hgs
parents:
diff changeset
    56
    HbTreeViewItem *prototype = qobject_cast<HbTreeViewItem *>(tree->itemPrototypes().first());
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
    if (tree) {
hgs
parents:
diff changeset
    59
        if (previousItem == ViewFuteDataForm::ScrollHint) {
hgs
parents:
diff changeset
    60
            customTreeSettingsIndexes[Depth] = counter;
hgs
parents:
diff changeset
    61
            HbDataFormModelItem *item = settingsFormModel->appendDataFormItem(
hgs
parents:
diff changeset
    62
                HbDataFormModelItem::RadioButtonListItem, QString("Depth of visible tree:"));
hgs
parents:
diff changeset
    63
            item->setContentWidgetData("items", KDepths);
hgs
parents:
diff changeset
    64
            if (depth == 1) {
hgs
parents:
diff changeset
    65
                item->setContentWidgetData("selected", 0);
hgs
parents:
diff changeset
    66
            } else if (depth == 3) {
hgs
parents:
diff changeset
    67
                item->setContentWidgetData("selected", 1);
hgs
parents:
diff changeset
    68
            } else if (depth == 5) {
hgs
parents:
diff changeset
    69
                item->setContentWidgetData("selected", 2);
hgs
parents:
diff changeset
    70
            } else {
hgs
parents:
diff changeset
    71
                item->setContentWidgetData("selected", 3);
hgs
parents:
diff changeset
    72
            }
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
            customTreeSettingsIndexes[Indentation] = counter+1;           
hgs
parents:
diff changeset
    75
            item = settingsFormModel->appendDataFormItem(
hgs
parents:
diff changeset
    76
                    HbDataFormModelItem::TextItem, QString("Indentation: (negative sets default)"));
hgs
parents:
diff changeset
    77
            QString indentationString;
hgs
parents:
diff changeset
    78
            indentationString.setNum(indentation);
hgs
parents:
diff changeset
    79
            item->setContentWidgetData("text", indentationString);
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
            customTreeSettingsIndexes[ItemUserExpandable] = counter + 2;
hgs
parents:
diff changeset
    82
            item = settingsFormModel->appendDataFormItem(
hgs
parents:
diff changeset
    83
                HbDataFormModelItem::ToggleValueItem, QString("Items user expandable:"));
hgs
parents:
diff changeset
    84
            if (prototype->isUserExpandable()) {
hgs
parents:
diff changeset
    85
                item->setContentWidgetData("text", "On");
hgs
parents:
diff changeset
    86
                item->setContentWidgetData("additionalText", "Off");
hgs
parents:
diff changeset
    87
            } else {
hgs
parents:
diff changeset
    88
                item->setContentWidgetData("text", "Off");
hgs
parents:
diff changeset
    89
                item->setContentWidgetData("additionalText", "On");
hgs
parents:
diff changeset
    90
            }
hgs
parents:
diff changeset
    91
            return 3;
hgs
parents:
diff changeset
    92
        } else if ( previousItem == ViewFuteDataForm::FrictionEnabled
hgs
parents:
diff changeset
    93
                   && dirViewItemEnabled) {
hgs
parents:
diff changeset
    94
            customTreeSettingsIndexes[ViewItemType] = counter;
hgs
parents:
diff changeset
    95
            HbDataFormModelItem *item = settingsFormModel->appendDataFormItem(
hgs
parents:
diff changeset
    96
                HbDataFormModelItem::RadioButtonListItem, QString("View item type:"));
hgs
parents:
diff changeset
    97
            item->setContentWidgetData("items", ViewItems);
hgs
parents:
diff changeset
    98
            if (qobject_cast<DirViewItem*>(tree->itemPrototypes().first())) {
hgs
parents:
diff changeset
    99
                item->setContentWidgetData("selected", 1);
hgs
parents:
diff changeset
   100
            } else {
hgs
parents:
diff changeset
   101
                item->setContentWidgetData("selected", 0);
hgs
parents:
diff changeset
   102
            }
hgs
parents:
diff changeset
   103
            return 1;
hgs
parents:
diff changeset
   104
        }
hgs
parents:
diff changeset
   105
    }
hgs
parents:
diff changeset
   106
    return 0;
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
void TreeDataForm::resolveSettingsResults()
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
    HbTreeView *tree = qobject_cast<HbTreeView*>(view);
hgs
parents:
diff changeset
   112
    HbTreeViewItem *prototype = qobject_cast<HbTreeViewItem *>(tree->itemPrototypes().first());
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
    if (tree) {
hgs
parents:
diff changeset
   115
        if (dirViewItemEnabled) {
hgs
parents:
diff changeset
   116
            if ( static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(customTreeSettingsIndexes[ViewItemType],0)))->
hgs
parents:
diff changeset
   117
                dataItemContentWidget()->property("selected").toInt() == 1) {
hgs
parents:
diff changeset
   118
                if (!qgraphicsitem_cast<DirViewItem*>(tree->itemPrototypes().first())) {
hgs
parents:
diff changeset
   119
                    DirViewItem *prototype = new DirViewItem;
hgs
parents:
diff changeset
   120
                    tree->setItemPrototype(prototype);
hgs
parents:
diff changeset
   121
                    tree->setLayoutName("treeviewitem_dir_button");
hgs
parents:
diff changeset
   122
                }
hgs
parents:
diff changeset
   123
            }
hgs
parents:
diff changeset
   124
            else {
hgs
parents:
diff changeset
   125
                HbTreeViewItem *prototype = new HbTreeViewItem;
hgs
parents:
diff changeset
   126
                tree->setItemPrototype(prototype);
hgs
parents:
diff changeset
   127
                tree->setLayoutName("default");
hgs
parents:
diff changeset
   128
            }
hgs
parents:
diff changeset
   129
        }
hgs
parents:
diff changeset
   130
        QString indentationString = static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(
hgs
parents:
diff changeset
   131
            customTreeSettingsIndexes[Indentation],0)))->dataItemContentWidget()->property("text").toString();
hgs
parents:
diff changeset
   132
        bool ok = false;
hgs
parents:
diff changeset
   133
        int newIndentation = indentationString.toInt(&ok);
hgs
parents:
diff changeset
   134
        if (ok) {
hgs
parents:
diff changeset
   135
            indentation = newIndentation;
hgs
parents:
diff changeset
   136
        }
hgs
parents:
diff changeset
   137
        tree->setIndentation(indentation);
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
        if (prototype) {
hgs
parents:
diff changeset
   140
            if (static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(
hgs
parents:
diff changeset
   141
                customTreeSettingsIndexes[ItemUserExpandable],0)))->dataItemContentWidget()->property("text").toString() == "On") {
hgs
parents:
diff changeset
   142
                prototype->setUserExpandable(true);
hgs
parents:
diff changeset
   143
            } else {
hgs
parents:
diff changeset
   144
                prototype->setUserExpandable(false);
hgs
parents:
diff changeset
   145
            }
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
    }
hgs
parents:
diff changeset
   148
    ViewFuteDataForm::resolveSettingsResults();
hgs
parents:
diff changeset
   149
}
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
void TreeDataForm::setIndentation(int indentation)
hgs
parents:
diff changeset
   154
{
hgs
parents:
diff changeset
   155
    this->indentation = indentation;
hgs
parents:
diff changeset
   156
}
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
void TreeDataForm::setDepth(int depth)
hgs
parents:
diff changeset
   160
{
hgs
parents:
diff changeset
   161
    this->depth = depth;
hgs
parents:
diff changeset
   162
}
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
void TreeDataForm::setDirViewItemEnabled(bool enable)
hgs
parents:
diff changeset
   165
{
hgs
parents:
diff changeset
   166
    dirViewItemEnabled = enable;
hgs
parents:
diff changeset
   167
}
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
int TreeDataForm::getDepth() const
hgs
parents:
diff changeset
   170
{
hgs
parents:
diff changeset
   171
    int selected = static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(customTreeSettingsIndexes[Depth],0)))->
hgs
parents:
diff changeset
   172
                    dataItemContentWidget()->property("selected").toInt();
hgs
parents:
diff changeset
   173
    if (    selected >= 0
hgs
parents:
diff changeset
   174
        &&  selected < KDepths.count()) {
hgs
parents:
diff changeset
   175
        if (KDepths[selected] == KDepths[KDepths.count()-1]) {
hgs
parents:
diff changeset
   176
            return 999;
hgs
parents:
diff changeset
   177
        } else {
hgs
parents:
diff changeset
   178
            return KDepths[selected].toInt();
hgs
parents:
diff changeset
   179
        }
hgs
parents:
diff changeset
   180
    } else {
hgs
parents:
diff changeset
   181
        return depth;
hgs
parents:
diff changeset
   182
    }
hgs
parents:
diff changeset
   183
}
hgs
parents:
diff changeset
   184