--- 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;