src/hbwidgets/itemviews/hbradiobuttonlist.cpp
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
--- a/src/hbwidgets/itemviews/hbradiobuttonlist.cpp	Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbwidgets/itemviews/hbradiobuttonlist.cpp	Mon Oct 18 18:23:13 2010 +0300
@@ -126,14 +126,12 @@
 
     QModelIndex mCurrentIndex; //Note that this is not the same as d->mHitItem
     HbRadioButtonList::PreviewMode mPreviewMode;
-    bool mPreviewGoingOn;
     bool mStartUp;
 };
 
 HbRadioButtonListPrivate::HbRadioButtonListPrivate() :
     HbListViewPrivate(),
     mPreviewMode(HbRadioButtonList::NoPreview),
-    mPreviewGoingOn(false),
     mStartUp(true)
 {     
 }
@@ -314,7 +312,26 @@
     Q_D( HbRadioButtonList );
      
     if(d->mPreviewMode == HbRadioButtonList::Preview && d->mCurrentIndex != modelIndex){
-        QTimer::singleShot(HB_RADIOBUTTONLIST_PREVIEW_TIMER, this, SLOT(_q_itemPreviewTimerExpired()));          
+        QTimer::singleShot(HB_RADIOBUTTONLIST_PREVIEW_TIMER, this, SLOT(_q_itemPreviewTimerExpired())); 
+        QModelIndexList selected;
+
+        if (d->mCurrentIndex.isValid()) {
+            selected.append(d->mCurrentIndex);
+        } else {
+            selected = d->mSelectionModel->selectedIndexes();
+        }
+        int count = selected.count();
+        for (int i=0; i<count; i++) {
+            HbAbstractViewItem* item = itemByIndex(selected.at(i));
+            if (item) {
+                item->setCheckState(Qt::Unchecked);
+            }
+        }
+
+        HbAbstractViewItem *item = itemByIndex(modelIndex);
+        if (item) {
+            itemByIndex(modelIndex)->setCheckState(Qt::Checked);
+        }
         d->mCurrentIndex=modelIndex;
     }else {
         //Now we let the activate signal go to the application
@@ -326,25 +343,6 @@
 /*!
     \reimp
 */
-void HbRadioButtonList::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_D(HbRadioButtonList);     
-    if(d->mPreviewMode == HbRadioButtonList::Preview ){    
-        HbAbstractViewItem *hitItem = d->itemAt(event->scenePos());
-        if (hitItem){
-            if (hitItem->modelIndex() == d->mCurrentIndex) {
-                d->mPreviewGoingOn=false;
-            } else {
-                d->mPreviewGoingOn=true;
-            }
-        }
-    }
-    HbListView::mouseReleaseEvent(event);
-}
-
-/*!
-    \reimp
-*/
 QItemSelectionModel::SelectionFlags HbRadioButtonList::selectionCommand(const HbAbstractViewItem *item,
                                                                           const QEvent *event)
 {  
@@ -355,7 +353,7 @@
         || event->type() != QEvent::GraphicsSceneMouseRelease){
             return QItemSelectionModel::NoUpdate;
     } else {
-        if(d->mPreviewGoingOn==true) {
+        if(d->mPreviewMode == HbRadioButtonList::Preview && d->mCurrentIndex != item->modelIndex()){
             return QItemSelectionModel::NoUpdate;
         } else {
             return QItemSelectionModel::ClearAndSelect;