src/hbwidgets/itemviews/hbradiobuttonlist.cpp
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
equal deleted inserted replaced
31:7516d6d86cf5 34:ed14f46c0e55
   124     void _q_itemActivationTimerExpired();
   124     void _q_itemActivationTimerExpired();
   125     void _q_itemPreviewTimerExpired();
   125     void _q_itemPreviewTimerExpired();
   126 
   126 
   127     QModelIndex mCurrentIndex; //Note that this is not the same as d->mHitItem
   127     QModelIndex mCurrentIndex; //Note that this is not the same as d->mHitItem
   128     HbRadioButtonList::PreviewMode mPreviewMode;
   128     HbRadioButtonList::PreviewMode mPreviewMode;
   129     bool mPreviewGoingOn;
       
   130     bool mStartUp;
   129     bool mStartUp;
   131 };
   130 };
   132 
   131 
   133 HbRadioButtonListPrivate::HbRadioButtonListPrivate() :
   132 HbRadioButtonListPrivate::HbRadioButtonListPrivate() :
   134     HbListViewPrivate(),
   133     HbListViewPrivate(),
   135     mPreviewMode(HbRadioButtonList::NoPreview),
   134     mPreviewMode(HbRadioButtonList::NoPreview),
   136     mPreviewGoingOn(false),
       
   137     mStartUp(true)
   135     mStartUp(true)
   138 {     
   136 {     
   139 }
   137 }
   140 
   138 
   141 HbRadioButtonListPrivate::~HbRadioButtonListPrivate() 
   139 HbRadioButtonListPrivate::~HbRadioButtonListPrivate() 
   312 void HbRadioButtonList::emitActivated(const QModelIndex &modelIndex)
   310 void HbRadioButtonList::emitActivated(const QModelIndex &modelIndex)
   313 {
   311 {
   314     Q_D( HbRadioButtonList );
   312     Q_D( HbRadioButtonList );
   315      
   313      
   316     if(d->mPreviewMode == HbRadioButtonList::Preview && d->mCurrentIndex != modelIndex){
   314     if(d->mPreviewMode == HbRadioButtonList::Preview && d->mCurrentIndex != modelIndex){
   317         QTimer::singleShot(HB_RADIOBUTTONLIST_PREVIEW_TIMER, this, SLOT(_q_itemPreviewTimerExpired()));          
   315         QTimer::singleShot(HB_RADIOBUTTONLIST_PREVIEW_TIMER, this, SLOT(_q_itemPreviewTimerExpired())); 
       
   316         QModelIndexList selected;
       
   317 
       
   318         if (d->mCurrentIndex.isValid()) {
       
   319             selected.append(d->mCurrentIndex);
       
   320         } else {
       
   321             selected = d->mSelectionModel->selectedIndexes();
       
   322         }
       
   323         int count = selected.count();
       
   324         for (int i=0; i<count; i++) {
       
   325             HbAbstractViewItem* item = itemByIndex(selected.at(i));
       
   326             if (item) {
       
   327                 item->setCheckState(Qt::Unchecked);
       
   328             }
       
   329         }
       
   330 
       
   331         HbAbstractViewItem *item = itemByIndex(modelIndex);
       
   332         if (item) {
       
   333             itemByIndex(modelIndex)->setCheckState(Qt::Checked);
       
   334         }
   318         d->mCurrentIndex=modelIndex;
   335         d->mCurrentIndex=modelIndex;
   319     }else {
   336     }else {
   320         //Now we let the activate signal go to the application
   337         //Now we let the activate signal go to the application
   321         d->mCurrentIndex=modelIndex;
   338         d->mCurrentIndex=modelIndex;
   322         QTimer::singleShot(HB_RADIOBUTTONLIST_ITEM_ACTIVATION_TIMER, this, SLOT(_q_itemActivationTimerExpired()));
   339         QTimer::singleShot(HB_RADIOBUTTONLIST_ITEM_ACTIVATION_TIMER, this, SLOT(_q_itemActivationTimerExpired()));
   324 }
   341 }
   325 
   342 
   326 /*!
   343 /*!
   327     \reimp
   344     \reimp
   328 */
   345 */
   329 void HbRadioButtonList::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
       
   330 {
       
   331     Q_D(HbRadioButtonList);     
       
   332     if(d->mPreviewMode == HbRadioButtonList::Preview ){    
       
   333         HbAbstractViewItem *hitItem = d->itemAt(event->scenePos());
       
   334         if (hitItem){
       
   335             if (hitItem->modelIndex() == d->mCurrentIndex) {
       
   336                 d->mPreviewGoingOn=false;
       
   337             } else {
       
   338                 d->mPreviewGoingOn=true;
       
   339             }
       
   340         }
       
   341     }
       
   342     HbListView::mouseReleaseEvent(event);
       
   343 }
       
   344 
       
   345 /*!
       
   346     \reimp
       
   347 */
       
   348 QItemSelectionModel::SelectionFlags HbRadioButtonList::selectionCommand(const HbAbstractViewItem *item,
   346 QItemSelectionModel::SelectionFlags HbRadioButtonList::selectionCommand(const HbAbstractViewItem *item,
   349                                                                           const QEvent *event)
   347                                                                           const QEvent *event)
   350 {  
   348 {  
   351     Q_D(HbRadioButtonList);
   349     Q_D(HbRadioButtonList);
   352 
   350 
   353     if (!item->modelIndex().isValid() 
   351     if (!item->modelIndex().isValid() 
   354         || selectionMode() != SingleSelection
   352         || selectionMode() != SingleSelection
   355         || event->type() != QEvent::GraphicsSceneMouseRelease){
   353         || event->type() != QEvent::GraphicsSceneMouseRelease){
   356             return QItemSelectionModel::NoUpdate;
   354             return QItemSelectionModel::NoUpdate;
   357     } else {
   355     } else {
   358         if(d->mPreviewGoingOn==true) {
   356         if(d->mPreviewMode == HbRadioButtonList::Preview && d->mCurrentIndex != item->modelIndex()){
   359             return QItemSelectionModel::NoUpdate;
   357             return QItemSelectionModel::NoUpdate;
   360         } else {
   358         } else {
   361             return QItemSelectionModel::ClearAndSelect;
   359             return QItemSelectionModel::ClearAndSelect;
   362         }
   360         }
   363     }
   361     }