diff -r 627c4a0fd0e7 -r c3690ec91ef8 src/hbwidgets/dataform/hbdataform_p.cpp --- 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 #include "hbdataformviewitem_p.h" #include "hbdataitemcontainer_p.h" +#include "hbdatagroup_p_p.h" #include #include #include @@ -82,28 +83,43 @@ void HbDataFormPrivate::_q_page_changed(int index) { Q_Q(const HbDataForm); - QStringListModel *model = static_cast( + QModelIndex childIndex = q->model()->index(index,0); + HbDataFormModelItem::DataItemType itemType = + static_cast( + (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( 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( q->itemByIndex(prevPageIndex)); if(prevPage) { - prevPage->setExpanded(false); + HbDataGroupPrivate::d_ptr(prevPage)->setExpanded(false); } } if(newPageIndex.isValid()) { HbDataGroup *newPage = static_cast( 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 signalList = mConnectionList.values(modelItem); if(signalList.count() > 0){ - HbDataFormViewItem *viewItem = static_cast(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()); } } }