src/hbwidgets/dataform/hbdataform_p.cpp
changeset 6 c3690ec91ef8
parent 3 11d3954df52a
child 7 923ff622b8b9
--- a/src/hbwidgets/dataform/hbdataform_p.cpp	Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataform_p.cpp	Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,7 @@
 #include <hbdataformviewitem.h>
 #include "hbdataformviewitem_p.h"
 #include "hbdataitemcontainer_p.h"
+#include "hbdatagroup_p_p.h"
 #include <hbcombobox.h>
 #include <hbapplication.h>
 #include <hbdataformmodel.h>
@@ -82,28 +83,43 @@
 void  HbDataFormPrivate::_q_page_changed(int index)
 {
     Q_Q(const HbDataForm);
-    QStringListModel *model = static_cast<QStringListModel*>(
+    QModelIndex childIndex = q->model()->index(index,0);
+    HbDataFormModelItem::DataItemType itemType =
+        static_cast<HbDataFormModelItem::DataItemType>(
+        (childIndex.data(HbDataFormModelItem::ItemTypeRole)).toInt());
+
+    if(mHeadingWidget->mPageCombo) {
+        if(mHeadingWidget->mPageCombo->currentIndex() != index) {
+            QObject::disconnect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
+                q,SLOT(_q_page_changed(int)));
+            mHeadingWidget->mPageCombo->setCurrentIndex(index);
+            QObject::connect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
+                q,SLOT(_q_page_changed(int)));
+        }
+    }
+
+   /* QStringListModel *model = static_cast<QStringListModel*>(
         mHeadingWidget->mPageCombo->model());
-    QModelIndex changedIndex = model->index(index, 0);
-    if(changedIndex.isValid()) {
-        if(changedIndex.row() != mHeadingWidget->mActivePage) {
+    QModelIndex changedIndex = model->index(index, 0);*/
+    if(itemType == HbDataFormModelItem::FormPageItem) {
+        if(index != mHeadingWidget->mActivePage) {
             QModelIndex prevPageIndex = q->model()->index(mHeadingWidget->mActivePage,0);
-            QModelIndex newPageIndex = q->model()->index(changedIndex.row(),0);
+            QModelIndex newPageIndex = q->model()->index(index,0);
             if(prevPageIndex.isValid()) {
                 HbDataGroup *prevPage = static_cast<HbDataGroup *>(
                                                q->itemByIndex(prevPageIndex));
                 if(prevPage) {
-                    prevPage->setExpanded(false);
+                    HbDataGroupPrivate::d_ptr(prevPage)->setExpanded(false);
                 }
             }
             if(newPageIndex.isValid()) {
                 HbDataGroup *newPage = static_cast<HbDataGroup *>(
                                                q->itemByIndex(newPageIndex));
                 if(newPage) {
-                    newPage->setExpanded(true);
+                    HbDataGroupPrivate::d_ptr(newPage)->setExpanded(true);
                 }
             }
-            mHeadingWidget->mActivePage = changedIndex.row();
+            mHeadingWidget->mActivePage = index;
         }
     }
 }
@@ -166,12 +182,7 @@
 
     if(mHeadingWidget && mHeadingWidget->mPageCombo) {
         if(mHeadingWidget->mPageCombo->currentText() == page){
-            if(mHeadingWidget->mActivePage != 0) {
-                mHeadingWidget->mPageCombo->setCurrentIndex(0);
-            }
-            else {
-                mHeadingWidget->mPageCombo->setCurrentIndex(mHeadingWidget->mActivePage+1);
-            }
+            mHeadingWidget->mPageCombo->setCurrentIndex(mHeadingWidget->mActivePage+1);
         }
     }
         QObject::disconnect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
@@ -195,7 +206,7 @@
         "instead itemShown SIGNAL should be used");
 }
 
-void HbDataFormPrivate::makeConnection(QModelIndex index)
+void HbDataFormPrivate::makeConnection(QModelIndex index, HbWidget* widget)
 {
     Q_Q( HbDataForm);
     if(!index.isValid()){
@@ -206,21 +217,17 @@
         if(modelItem){
             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
             if(signalList.count() > 0){
-                HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(q->itemByIndex(index));
-                if(viewItem){
-                    HbWidget *contentWidget = HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget;
-                    if(contentWidget){
-                        foreach(ItemSignal signal, signalList) {
-                            QObject *objct = signal.reciever;
-                            QString signalName = signal.signal;
-                            QString slot = signal.slot;
-                            // Make connection
-                            if(objct) { 
-                                QObject::connect(contentWidget, signalName.toAscii().data(), 
-                                    objct,slot.toAscii().data());
-                            }
-                            
+                if(widget){
+                    foreach(const ItemSignal& signal, signalList) {
+                        QObject *objct = signal.receiver;
+                        QString signalName = signal.signal;
+                        QString slot = signal.slot;
+                        // Make connection
+                        if(objct) { 
+                            QObject::connect(widget, signalName.toAscii().data(), 
+                                objct,slot.toAscii().data());
                         }
+                        
                     }
                 }
             }
@@ -228,9 +235,10 @@
     }
 }
 
+
 void HbDataFormPrivate::removeConnection(HbDataFormModelItem * modelItem, 
                                   QString signal, 
-                                  QObject *reciever, 
+                                  QObject *receiver, 
                                   QString slot)
 {
     Q_Q( HbDataForm);
@@ -248,12 +256,12 @@
                         //foreach(ItemSignal signalItem, signalList) {
                         for(int i = 0; i < signalList.count() ;i++){
                             ItemSignal signalItem = signalList.at(i);
-                            if(reciever == signalItem.reciever &&
+                            if(receiver == signalItem.receiver &&
                             signal == signalItem.signal &&
                             slot == signalItem.slot){
                             // disconnect
                                 QObject::disconnect(contentWidget, signal.toAscii().data(), 
-                                    reciever,slot.toAscii().data());
+                                    receiver,slot.toAscii().data());
                                 signalList.removeAt(i);
                                 for(int j = 0; j < signalList.count(); j++){
                                     mConnectionList.insertMulti(modelItem, signalList.at(j));
@@ -270,7 +278,7 @@
 
 void HbDataFormPrivate::connectNow(HbDataFormModelItem * modelItem, 
                                    QString signal, 
-                                   QObject *reciever, 
+                                   QObject *receiver, 
                                    QString slot)
 {
     Q_Q( HbDataForm);    
@@ -283,7 +291,7 @@
                 if(HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget) {
                     // Make connection
                         QObject::connect(HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget, signal.toAscii().data(), 
-                            reciever,slot.toAscii().data());
+                            receiver,slot.toAscii().data());
                 }
             }
         }
@@ -309,7 +317,7 @@
                         ItemSignal signalItem = signalList.takeAt(i);
                             // Make connection
                         QObject::disconnect(contentWidget, signalItem.signal.toAscii().data(), 
-                                signalItem.reciever,signalItem.slot.toAscii().data());
+                                signalItem.receiver,signalItem.slot.toAscii().data());
                             
                         
                     }
@@ -336,7 +344,7 @@
                         ItemSignal signalItem = signalList.takeAt(i);
                             // Make connection
                         QObject::disconnect(contentWidget, signalItem.signal.toAscii().data(), 
-                                signalItem.reciever,signalItem.slot.toAscii().data());
+                                signalItem.receiver,signalItem.slot.toAscii().data());
                     }
                 }
             }