src/hbwidgets/dataform/hbdataform_p.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 3 11d3954df52a
equal deleted inserted replaced
1:f7ac710697a9 2:06ff229162e9
    72     QList<HbAbstractViewItem*> protos;
    72     QList<HbAbstractViewItem*> protos;
    73     protos.append(new HbDataFormViewItem());
    73     protos.append(new HbDataFormViewItem());
    74     protos.append(new HbDataGroup());
    74     protos.append(new HbDataGroup());
    75     q->setItemPrototypes(protos);
    75     q->setItemPrototypes(protos);
    76     q->setClampingStyle(HbScrollArea::BounceBackClamping);
    76     q->setClampingStyle(HbScrollArea::BounceBackClamping);
    77     q->setItemRecycling(true);
    77     q->setItemRecycling(false);
    78     treeModelIterator()->setItemContainer(mContainer);
    78     treeModelIterator()->setItemContainer(mContainer);
    79 }
    79 }
    80 
    80 
    81 void  HbDataFormPrivate::_q_page_changed(int index)
    81 void  HbDataFormPrivate::_q_page_changed(int index)
    82 {
    82 {
   118     Q_Q(HbDataForm);
   118     Q_Q(HbDataForm);
   119 
   119 
   120     // Create combobox if not created 
   120     // Create combobox if not created 
   121     if(!mHeadingWidget) {
   121     if(!mHeadingWidget) {
   122         mHeadingWidget = new HbDataFormHeadingWidget();
   122         mHeadingWidget = new HbDataFormHeadingWidget();
   123         static_cast<HbDataItemContainer*>(q->container())->setFormHeading(mHeadingWidget);        
   123         static_cast<HbDataItemContainer*>(mContainer)->setFormHeading(mHeadingWidget);        
   124         QEvent polishEvent(QEvent::Polish);
   124         QEvent polishEvent(QEvent::Polish);
   125         QCoreApplication::sendEvent(mHeadingWidget, &polishEvent);
   125         QCoreApplication::sendEvent(mHeadingWidget, &polishEvent);
   126     }
   126     }
   127 
   127 
   128     if(!mHeadingWidget->mPageCombo) {
   128     if(!mHeadingWidget->mPageCombo) {
   132         QEvent polishEvent(QEvent::Polish);
   132         QEvent polishEvent(QEvent::Polish);
   133         QCoreApplication::sendEvent(mHeadingWidget->mPageCombo, &polishEvent);
   133         QCoreApplication::sendEvent(mHeadingWidget->mPageCombo, &polishEvent);
   134         // setFormHeading to the layout
   134         // setFormHeading to the layout
   135         if(mHeadingWidget->mPageCombo || !mHeadingWidget->mDescription.isEmpty() || 
   135         if(mHeadingWidget->mPageCombo || !mHeadingWidget->mDescription.isEmpty() || 
   136             !mHeadingWidget->mHeading.isEmpty()) {
   136             !mHeadingWidget->mHeading.isEmpty()) {
   137             static_cast<HbDataItemContainer*>(q->container())->setFormHeading(mHeadingWidget);
   137             static_cast<HbDataItemContainer*>(mContainer)->setFormHeading(mHeadingWidget);
   138         }
   138         }
   139         QObject::connect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
   139         QObject::connect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
   140             q,SLOT(_q_page_changed(int)));
   140             q,SLOT(_q_page_changed(int)));
   141     }
   141     }
   142 
   142 
   203     if(q->model()) {
   203     if(q->model()) {
   204         HbDataFormModelItem *modelItem = static_cast<HbDataFormModel *>(q->model())->itemFromIndex(index);
   204         HbDataFormModelItem *modelItem = static_cast<HbDataFormModel *>(q->model())->itemFromIndex(index);
   205         if(modelItem){
   205         if(modelItem){
   206             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   206             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   207             if(signalList.count() > 0){
   207             if(signalList.count() > 0){
   208                 HbDataFormViewItem *viewItem = q->dataFormViewItem(index);
   208                 HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(q->itemByIndex(index));
   209                 if(viewItem){
   209                 if(viewItem){
   210                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   210                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   211                     if(contentWidget){
   211                     if(contentWidget){
   212                         foreach(ItemSignal signal, signalList) {
   212                         foreach(ItemSignal signal, signalList) {
   213                             QObject *objct = signal.reciever;
   213                             QObject *objct = signal.reciever;
   237         if(modelItem){
   237         if(modelItem){
   238             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   238             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   239             mConnectionList.remove(modelItem);
   239             mConnectionList.remove(modelItem);
   240             if(signalList.count() > 0){
   240             if(signalList.count() > 0){
   241             QModelIndex index = 
   241             QModelIndex index = 
   242                 static_cast<HbDataFormModel*>(modelItem->model())->indexFromItem(modelItem);
   242                 static_cast<HbDataFormModel*>(q->model())->indexFromItem(modelItem);
   243                 HbDataFormViewItem *viewItem = q->dataFormViewItem(index);
   243                 HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(q->itemByIndex(index));
   244                 if(viewItem){
   244                 if(viewItem){
   245                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   245                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   246                     if(contentWidget){
   246                     if(contentWidget){
   247                         //foreach(ItemSignal signalItem, signalList) {
   247                         //foreach(ItemSignal signalItem, signalList) {
   248                         for(int i = 0; i < signalList.count() ;i++){
   248                         for(int i = 0; i < signalList.count() ;i++){
   270 void HbDataFormPrivate::connectNow(HbDataFormModelItem * modelItem, 
   270 void HbDataFormPrivate::connectNow(HbDataFormModelItem * modelItem, 
   271                                    QString signal, 
   271                                    QString signal, 
   272                                    QObject *reciever, 
   272                                    QObject *reciever, 
   273                                    QString slot)
   273                                    QString slot)
   274 {
   274 {
   275     Q_Q( HbDataForm);
   275     Q_Q( HbDataForm);    
   276     QModelIndex index = static_cast<HbDataFormModel*>(modelItem->model())->indexFromItem(modelItem);
   276     
   277     Q_UNUSED(index);
   277     if(q->model()) {
   278     if(q->model()) {
   278         QModelIndex index = static_cast<HbDataFormModel*>(q->model())->indexFromItem(modelItem);
   279         if(modelItem){
   279         if(modelItem){
   280                 HbDataFormViewItem *viewItem = q->dataFormViewItem(index);
   280                 HbDataFormViewItem *viewItem =static_cast<HbDataFormViewItem*>( q->itemByIndex(index) );
   281                 if(viewItem){
   281                 if(viewItem){
   282                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   282                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   283                         // Make connection
   283                         // Make connection
   284                     if(contentWidget){
   284                     if(contentWidget){
   285                         QObject::connect(contentWidget, signal.toAscii().data(), 
   285                         QObject::connect(contentWidget, signal.toAscii().data(), 
   298 
   298 
   299         foreach(HbDataFormModelItem* item ,keys) {
   299         foreach(HbDataFormModelItem* item ,keys) {
   300             QList<ItemSignal> signalList = mConnectionList.values(item);
   300             QList<ItemSignal> signalList = mConnectionList.values(item);
   301             mConnectionList.remove(item);
   301             mConnectionList.remove(item);
   302             if(signalList.count() > 0){
   302             if(signalList.count() > 0){
   303                 QModelIndex index = static_cast<HbDataFormModel*>(item->model())->indexFromItem(item);
   303                 QModelIndex index = static_cast<HbDataFormModel*>(q->model())->indexFromItem(item);
   304                 HbDataFormViewItem *viewItem = q->dataFormViewItem(index);
   304                 HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*> (q->itemByIndex(index));
   305                 if(viewItem){
   305                 if(viewItem){
   306                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   306                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   307                     // disconnect signal and remove signal from list
   307                     // disconnect signal and remove signal from list
   308                     for(int i = 0;i<signalList.count();) {
   308                     for(int i = 0;i<signalList.count();) {
   309                         ItemSignal signalItem = signalList.takeAt(i);
   309                         ItemSignal signalItem = signalList.takeAt(i);
   325     if(q->model()) {
   325     if(q->model()) {
   326         if(modelItem){
   326         if(modelItem){
   327             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   327             QList<ItemSignal> signalList = mConnectionList.values(modelItem);
   328             mConnectionList.remove(modelItem);
   328             mConnectionList.remove(modelItem);
   329             if(signalList.count() > 0){
   329             if(signalList.count() > 0){
   330                 QModelIndex index = static_cast<HbDataFormModel*>(modelItem->model())->indexFromItem(modelItem);
   330                 QModelIndex index = static_cast<HbDataFormModel*>(q->model())->indexFromItem(modelItem);
   331                 HbDataFormViewItem *viewItem = q->dataFormViewItem(index);
   331                 HbDataFormViewItem *viewItem =static_cast<HbDataFormViewItem*>( q->itemByIndex(index));
   332                 if(viewItem){
   332                 if(viewItem){
   333                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   333                     HbWidget *contentWidget = viewItem->dataItemContentWidget();
   334                     // disconnect signal and remove signal from list
   334                     // disconnect signal and remove signal from list
   335                     for(int i = 0;i<signalList.count(); ) {
   335                     for(int i = 0;i<signalList.count(); ) {
   336                         ItemSignal signalItem = signalList.takeAt(i);
   336                         ItemSignal signalItem = signalList.takeAt(i);