--- 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());
}
}
}