securitydialogs/SecUi/SecUiTestQt/treedataform.cpp
changeset 66 67b3e3c1fc87
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/SecUi/SecUiTestQt/treedataform.cpp	Wed Oct 20 14:51:23 2010 +0300
@@ -0,0 +1,184 @@
+/*
+* ====================================================
+*  Name        : treedataform.cpp
+*  Part of     : fute/SecUiTestQt
+*  Description : Data form for SecUiTestQt
+*  Version     : %version: 1 %
+*
+*  Copyright (c) 2009 Nokia.  All rights reserved.
+*  This material, including documentation and any related computer
+*  programs, is protected by copyright controlled by Nokia.  All
+*  rights are reserved.  Copying, including reproducing, storing,
+*  adapting or translating, any or all of this material requires the
+*  prior written consent of Nokia.  This material also contains
+*  confidential information which may not be disclosed to others
+*  without the prior written consent of Nokia.
+* ====================================================
+*/
+
+#include "treedataform.h"
+#include "dirviewitem.h"
+#include <hbtreeview.h>
+#include <hbtreeviewitem.h>
+#include <hbdataformmodel.h>
+
+const QStringList KDepths = ( QStringList() << "1" << "3" << "5" << "all" );
+const QStringList ViewItems = (QStringList() << "Default" << "DirItem");
+
+// ======== MEMBER FUNCTIONS ========
+
+TreeDataForm::TreeDataForm( HbAbstractItemView &view,
+                                   QGraphicsItem *parent):
+    ViewFuteDataForm(view, parent),
+    depth(1),
+    indentation(-1),
+    dirViewItemEnabled(false)
+{
+}
+
+TreeDataForm::~TreeDataForm()
+{
+}
+
+void TreeDataForm::initialise()
+{
+    depth = 1;
+    dirViewItemEnabled = false;
+    for (int i=0; i< TreeCustomLast; i++) {
+        customTreeSettingsIndexes[i] = -1;
+    }
+    ViewFuteDataForm::initialise();
+}
+
+int TreeDataForm::populateCustomSettingsItem(int previousItem)
+{
+    HbTreeView *tree = qobject_cast<HbTreeView*>(view);
+    HbTreeViewItem *prototype = qobject_cast<HbTreeViewItem *>(tree->itemPrototypes().first());
+
+    if (tree) {
+        if (previousItem == ViewFuteDataForm::ScrollHint) {
+            customTreeSettingsIndexes[Depth] = counter;
+            HbDataFormModelItem *item = settingsFormModel->appendDataFormItem(
+                HbDataFormModelItem::RadioButtonListItem, QString("Depth of visible tree:"));
+            item->setContentWidgetData("items", KDepths);
+            if (depth == 1) {
+                item->setContentWidgetData("selected", 0);
+            } else if (depth == 3) {
+                item->setContentWidgetData("selected", 1);
+            } else if (depth == 5) {
+                item->setContentWidgetData("selected", 2);
+            } else {
+                item->setContentWidgetData("selected", 3);
+            }
+
+            customTreeSettingsIndexes[Indentation] = counter+1;           
+            item = settingsFormModel->appendDataFormItem(
+                    HbDataFormModelItem::TextItem, QString("Indentation: (negative sets default)"));
+            QString indentationString;
+            indentationString.setNum(indentation);
+            item->setContentWidgetData("text", indentationString);
+
+            customTreeSettingsIndexes[ItemUserExpandable] = counter + 2;
+            item = settingsFormModel->appendDataFormItem(
+                HbDataFormModelItem::ToggleValueItem, QString("Items user expandable:"));
+            if (prototype->isUserExpandable()) {
+                item->setContentWidgetData("text", "On");
+                item->setContentWidgetData("additionalText", "Off");
+            } else {
+                item->setContentWidgetData("text", "Off");
+                item->setContentWidgetData("additionalText", "On");
+            }
+            return 3;
+        } else if ( previousItem == ViewFuteDataForm::FrictionEnabled
+                   && dirViewItemEnabled) {
+            customTreeSettingsIndexes[ViewItemType] = counter;
+            HbDataFormModelItem *item = settingsFormModel->appendDataFormItem(
+                HbDataFormModelItem::RadioButtonListItem, QString("View item type:"));
+            item->setContentWidgetData("items", ViewItems);
+            if (qobject_cast<DirViewItem*>(tree->itemPrototypes().first())) {
+                item->setContentWidgetData("selected", 1);
+            } else {
+                item->setContentWidgetData("selected", 0);
+            }
+            return 1;
+        }
+    }
+    return 0;
+}
+
+void TreeDataForm::resolveSettingsResults()
+{
+    HbTreeView *tree = qobject_cast<HbTreeView*>(view);
+    HbTreeViewItem *prototype = qobject_cast<HbTreeViewItem *>(tree->itemPrototypes().first());
+
+    if (tree) {
+        if (dirViewItemEnabled) {
+            if ( static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(customTreeSettingsIndexes[ViewItemType],0)))->
+                dataItemContentWidget()->property("selected").toInt() == 1) {
+                if (!qgraphicsitem_cast<DirViewItem*>(tree->itemPrototypes().first())) {
+                    DirViewItem *prototype = new DirViewItem;
+                    tree->setItemPrototype(prototype);
+                    tree->setLayoutName("treeviewitem_dir_button");
+                }
+            }
+            else {
+                HbTreeViewItem *prototype = new HbTreeViewItem;
+                tree->setItemPrototype(prototype);
+                tree->setLayoutName("default");
+            }
+        }
+        QString indentationString = static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(
+            customTreeSettingsIndexes[Indentation],0)))->dataItemContentWidget()->property("text").toString();
+        bool ok = false;
+        int newIndentation = indentationString.toInt(&ok);
+        if (ok) {
+            indentation = newIndentation;
+        }
+        tree->setIndentation(indentation);
+
+        if (prototype) {
+            if (static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(
+                customTreeSettingsIndexes[ItemUserExpandable],0)))->dataItemContentWidget()->property("text").toString() == "On") {
+                prototype->setUserExpandable(true);
+            } else {
+                prototype->setUserExpandable(false);
+            }
+        }
+    }
+    ViewFuteDataForm::resolveSettingsResults();
+}
+
+
+
+void TreeDataForm::setIndentation(int indentation)
+{
+    this->indentation = indentation;
+}
+
+
+void TreeDataForm::setDepth(int depth)
+{
+    this->depth = depth;
+}
+
+void TreeDataForm::setDirViewItemEnabled(bool enable)
+{
+    dirViewItemEnabled = enable;
+}
+
+int TreeDataForm::getDepth() const
+{
+    int selected = static_cast<HbDataFormViewItem*>(itemByIndex(settingsFormModel->index(customTreeSettingsIndexes[Depth],0)))->
+                    dataItemContentWidget()->property("selected").toInt();
+    if (    selected >= 0
+        &&  selected < KDepths.count()) {
+        if (KDepths[selected] == KDepths[KDepths.count()-1]) {
+            return 999;
+        } else {
+            return KDepths[selected].toInt();
+        }
+    } else {
+        return depth;
+    }
+}
+