src/hbwidgets/dataform/hbdataformmodelitem.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 3 11d3954df52a
equal deleted inserted replaced
1:f7ac710697a9 2:06ff229162e9
    47 
    47 
    48 QString HbDataFormModelItemPrivate::dirtyProperty()
    48 QString HbDataFormModelItemPrivate::dirtyProperty()
    49 {
    49 {
    50     return mDirtyProperty;
    50     return mDirtyProperty;
    51 }
    51 }
       
    52 
       
    53 
       
    54 void HbDataFormModelItemPrivate::setModel(const QAbstractItemModel *model)
       
    55 {
       
    56     Q_Q(HbDataFormModelItem);
       
    57 
       
    58     mModel = const_cast<QAbstractItemModel*>(model);
       
    59     int count = q->childCount();    
       
    60     for (int index = 0; index < count ; index++) {
       
    61         HbDataFormModelItem* item = mChildItems.at(index);
       
    62         HbDataFormModelItemPrivate::d_ptr(item)->setModel(model);         
       
    63     }
       
    64      
       
    65 }
       
    66 
       
    67 QAbstractItemModel* HbDataFormModelItemPrivate::model() const
       
    68 {   
       
    69     return mModel;
       
    70 }
       
    71 
    52 /*!
    72 /*!
    53     @beta
    73     @beta
    54     @hbwidgets
    74     @hbwidgets
    55     \class HbDataFormModelItem hbdataformmodelitem.cpp
    75     \class HbDataFormModelItem hbdataformmodelitem.cpp
    56     \brief The HbDataFormModelItem class is for applications to add their data.
    76     \brief The HbDataFormModelItem class is for applications to add their data.
    84 /*!
   104 /*!
    85     \enum HbDataFormModelItem::Roles
   105     \enum HbDataFormModelItem::Roles
    86 
   106 
    87     This enum defines the Roles supported by dataForm.Any data from application 
   107     This enum defines the Roles supported by dataForm.Any data from application 
    88     can be added through these Roles.
   108     can be added through these Roles.
    89  */
       
    90 
       
    91 /*!
       
    92     \deprecated HbDataFormModelItem::KeyRole
       
    93         is deprecated.Please remove the reference to this Role.
       
    94 
       
    95     \var HbDataFormModelItem::KeyRole
       
    96     KeyRole: This Role is used for the key string for the data item. This will be used 
       
    97     for storing and loading the data from central repository.
       
    98  */
   109  */
    99 
   110 
   100 /*!
   111 /*!
   101     \var HbDataFormModelItem::LabelRole
   112     \var HbDataFormModelItem::LabelRole
   102     LabelRole: This Role is used for data label of the DataFormViewItem
   113     LabelRole: This Role is used for data label of the DataFormViewItem
   365     Q_D(HbDataFormModelItem);    
   376     Q_D(HbDataFormModelItem);    
   366 
   377 
   367     if(child){
   378     if(child){
   368         child->setParent(this);
   379         child->setParent(this);
   369         if(d->mModel) {
   380         if(d->mModel) {
   370             child->setModel(d->mModel);
   381             HbDataFormModelItemPrivate::d_ptr(child)->setModel(d->mModel);
   371             HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   382             HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   372             model->d_func()->rowsAboutToBeInserted(this, d->mChildItems.count(), d->mChildItems.count());
   383             model->d_func()->rowsAboutToBeInserted(this, d->mChildItems.count(), d->mChildItems.count());
   373             d->mChildItems.append(child);
   384             d->mChildItems.append(child);
   374             model->d_func()->rowsInserted();
   385             model->d_func()->rowsInserted();
   375         }
   386         }
   389 {
   400 {
   390     Q_D(HbDataFormModelItem);
   401     Q_D(HbDataFormModelItem);
   391 
   402 
   392     if(child) {
   403     if(child) {
   393         child->setParent(this);
   404         child->setParent(this);
   394         if(d->mModel) {
   405         if(d->mModel) {            
   395             child->setModel(model());
   406             HbDataFormModelItemPrivate::d_ptr(child)->setModel(d->mModel);
   396             HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   407             HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   397             model->d_func()->rowsAboutToBeInserted(this, index, index);
   408             model->d_func()->rowsAboutToBeInserted(this, index, index);
   398             d->mChildItems.insert(index,child);
   409             d->mChildItems.insert(index,child);
   399             model->d_func()->rowsInserted();
   410             model->d_func()->rowsInserted();
   400         } else {
   411         } else {
   413         QList<HbDataFormModelItem*> items)
   424         QList<HbDataFormModelItem*> items)
   414 {
   425 {
   415     Q_D(HbDataFormModelItem);
   426     Q_D(HbDataFormModelItem);
   416     HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   427     HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   417 
   428 
   418     model->d_func()->rowsAboutToBeInserted(this, row, row + count - 1);
   429     if(model) {
   419     for(int index = 0; index < count; index++) {
   430         model->d_func()->rowsAboutToBeInserted(this, row, row + count - 1);
       
   431         for(int index = 0; index < count; index++) {
   420         d->mChildItems.insert(row + index, items.at(index));
   432         d->mChildItems.insert(row + index, items.at(index));
   421     }
   433         }
   422     model->d_func()->rowsInserted();
   434         model->d_func()->rowsInserted();
       
   435     }
       
   436     else {
       
   437         for(int index = 0; index < count; index++) {
       
   438         d->mChildItems.insert(row + index, items.at(index));
       
   439         }
       
   440     }
   423 
   441 
   424 }
   442 }
   425 
   443 
   426 /*!
   444 /*!
   427     @beta
   445     @beta
   433 void HbDataFormModelItem::removeChild(int index)
   451 void HbDataFormModelItem::removeChild(int index)
   434 {
   452 {
   435     Q_D(HbDataFormModelItem);
   453     Q_D(HbDataFormModelItem);
   436 
   454 
   437     HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   455     HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
   438     model->d_func()->rowsAboutToBeRemoved(this, index, index);
   456     if(model) {
   439     HbDataFormModelItem *item = d->mChildItems.takeAt(index);
   457         model->d_func()->rowsAboutToBeRemoved(this, index, index);
   440     if ( item ) {
   458         HbDataFormModelItem *item = d->mChildItems.takeAt(index);
   441         delete item;
   459         if ( item ) {
   442         item = 0;
   460             delete item;
   443     }
   461             item = 0;
   444     model->d_func()->rowsRemoved();
   462         }
       
   463         model->d_func()->rowsRemoved();
       
   464     }
       
   465     else {
       
   466         HbDataFormModelItem *item = d->mChildItems.takeAt(index);
       
   467         if ( item ) {
       
   468             delete item;
       
   469             item = 0;
       
   470         }
       
   471     }
       
   472    
   445 }
   473 }
   446 
   474 
   447 /*!
   475 /*!
   448     @beta
   476     @beta
   449     Removes the given no of \a count of childitems from the given \a startindex. The
   477     Removes the given no of \a count of childitems from the given \a startindex. The
   512     items other then GroupItem and data item.
   540     items other then GroupItem and data item.
   513 */
   541 */
   514 QVariant HbDataFormModelItem::data(int role ) const
   542 QVariant HbDataFormModelItem::data(int role ) const
   515 {
   543 {
   516     Q_D(const HbDataFormModelItem);
   544     Q_D(const HbDataFormModelItem);
   517     if(role == KeyRole) {
   545     if (role == LabelRole) {
   518         return d->mKey;
       
   519     } else if (role == LabelRole) {
       
   520         return d->mLabel;
   546         return d->mLabel;
   521     } else if (role == ItemTypeRole) {
   547     } else if (role == ItemTypeRole) {
   522         return d->mItemType;
   548         return d->mItemType;
   523     } else if (role == Qt::DecorationRole) {
   549     } else if (role == Qt::DecorationRole) {
   524         return d->mIcon;
   550         return d->mIcon;
   542     Sets the given \a value of variant to the given \a role.
   568     Sets the given \a value of variant to the given \a role.
   543 */
   569 */
   544  void HbDataFormModelItem::setData(int role ,const QVariant &value)
   570  void HbDataFormModelItem::setData(int role ,const QVariant &value)
   545 {
   571 {
   546     Q_D(HbDataFormModelItem);
   572     Q_D(HbDataFormModelItem);
   547     if(role == KeyRole) {
   573    if (role == LabelRole) {
   548         d->mKey = value.toString();
       
   549     } else if (role == LabelRole) {
       
   550         d->mLabel = value.toString();
   574         d->mLabel = value.toString();
   551         d->mDirtyProperty = "LabelRole";
   575         d->mDirtyProperty = "LabelRole";
   552     } else if (role == ItemTypeRole) {
   576     } else if (role == ItemTypeRole) {
   553         d->mItemType = (DataItemType)value.toInt();   
   577         d->mItemType = (DataItemType)value.toInt();   
   554         d->mDirtyProperty = "ItemTypeRole";
   578         d->mDirtyProperty = "ItemTypeRole";
   567         }
   591         }
   568     } else {
   592     } else {
   569         d->mItemData.insert(role,value);       
   593         d->mItemData.insert(role,value);       
   570     }
   594     }
   571 
   595 
   572     HbDataFormModel* data_model = static_cast<HbDataFormModel*>(model());
   596     HbDataFormModel* data_model = static_cast<HbDataFormModel*>(d->mModel);
   573     if(data_model){
   597     if(data_model){
   574         QModelIndex index = data_model->indexFromItem(this);
   598         QModelIndex index = data_model->indexFromItem(this);
   575         emit data_model->dataChanged(index, index);
   599         emit data_model->dataChanged(index, index);
   576     }
   600     }
   577 }
   601 }
   598     Q_D(HbDataFormModelItem);
   622     Q_D(HbDataFormModelItem);
   599     d->mProperties.remove(propertyName);
   623     d->mProperties.remove(propertyName);
   600     d->mProperties.insert(propertyName,value);
   624     d->mProperties.insert(propertyName,value);
   601     d->mDirtyProperty = propertyName;
   625     d->mDirtyProperty = propertyName;
   602 
   626 
   603     HbDataFormModel *data_model = static_cast<HbDataFormModel*>(model());
   627     HbDataFormModel *data_model = static_cast<HbDataFormModel*>(d->mModel);
   604     if(data_model) {
   628     if(data_model) {
   605         QModelIndex index = data_model->indexFromItem(this);
   629         QModelIndex index = data_model->indexFromItem(this);
   606         emit data_model->dataChanged(index, index);
   630         emit data_model->dataChanged(index, index);
   607     }
   631     }
   608 }
   632 }
   701 QString HbDataFormModelItem::icon() const
   725 QString HbDataFormModelItem::icon() const
   702 {
   726 {
   703     return data(Qt::DecorationRole).toString();
   727     return data(Qt::DecorationRole).toString();
   704 }
   728 }
   705 
   729 
   706 
       
   707 /*!
       
   708     \deprecated HbDataFormModelItem::setModel(const QAbstractItemModel*)
       
   709         is deprecated. Please remove all refernces to this API.
       
   710 
       
   711     Sets the given \a model to the item's model. Also sets the Model to Child Items.
       
   712 */
       
   713 void HbDataFormModelItem::setModel(const QAbstractItemModel *model)
       
   714 {
       
   715      Q_D(HbDataFormModelItem);
       
   716      d->mModel = const_cast<QAbstractItemModel*>(model);
       
   717      int count = childCount();    
       
   718      for (int index = 0; index < count ; index++) {
       
   719          d->mChildItems.at(index)->setModel(model);
       
   720      }
       
   721      
       
   722 }
       
   723 
       
   724 /*!
       
   725     \deprecated HbDataFormModelItem::model() const
       
   726         is deprecated. Please remove all refernces to this API.
       
   727 
       
   728     Returns the model of the item.
       
   729 */
       
   730 QAbstractItemModel* HbDataFormModelItem::model() const
       
   731 {
       
   732     Q_D(const HbDataFormModelItem);
       
   733     return d->mModel;
       
   734 }
       
   735 /*
   730 /*
   736 QHash<QString, QVariant> HbDataFormModelItem::getContentWidgetValues()
   731 QHash<QString, QVariant> HbDataFormModelItem::getContentWidgetValues()
   737 {
   732 {
   738     Q_D(const HbDataFormModelItem);
   733     Q_D(const HbDataFormModelItem);
   739     return d->mProperties;
   734     return d->mProperties;
   753         if (enabled) {
   748         if (enabled) {
   754             d->mFlags |= Qt::ItemIsEnabled;
   749             d->mFlags |= Qt::ItemIsEnabled;
   755         } else {
   750         } else {
   756             d->mFlags &= ~Qt::ItemIsEnabled;
   751             d->mFlags &= ~Qt::ItemIsEnabled;
   757         }
   752         }
   758         HbDataFormModel* data_model = static_cast<HbDataFormModel*>(model());
   753         HbDataFormModel* data_model = static_cast<HbDataFormModel*>(d->mModel);
   759         if(data_model){
   754         if(data_model){
   760             QModelIndex index = data_model->indexFromItem(this);
   755             QModelIndex index = data_model->indexFromItem(this);
   761             emit data_model->dataChanged(index, index);
   756             emit data_model->dataChanged(index, index);
   762         }
   757         }
   763     }
   758     }