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