62 /*! |
62 /*! |
63 Finds out the graphics item type of the parent widget. |
63 Finds out the graphics item type of the parent widget. |
64 */ |
64 */ |
65 int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget) |
65 int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget) |
66 { |
66 { |
67 int graphicsItemType = 0; |
67 QGraphicsItem *parent = widget->parentItem(); |
68 if (const HbWidget *parent = dynamic_cast<const HbWidget *>(widget->parentItem())) { |
68 if(parent) |
69 graphicsItemType = parent->type(); |
69 return parent->type(); |
70 } |
70 else |
71 return graphicsItemType; |
71 return 0; |
72 } |
72 } |
73 |
73 |
74 /*! |
74 /*! |
75 Returns the widget family for a widget. |
75 Returns the widget family for a widget. |
76 */ |
76 */ |
266 if (widget->type() == HbPrivate::ItemType_TitlePane) { |
266 if (widget->type() == HbPrivate::ItemType_TitlePane) { |
267 if (isOptionsMenuEmpty(widget)) { |
267 if (isOptionsMenuEmpty(widget)) { |
268 effect = HbFeedback::None; |
268 effect = HbFeedback::None; |
269 } |
269 } |
270 } |
270 } |
|
271 |
|
272 if (widget->type() == Hb::ItemType_ComboBox) { |
|
273 effect = HbFeedback::BasicButton; |
|
274 } |
|
275 |
271 break; |
276 break; |
272 |
277 |
273 case HbFeedbackEffectUtils::List: |
278 case HbFeedbackEffectUtils::List: |
274 if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) { |
279 if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) { |
275 effect = HbFeedback::BasicItem; |
280 effect = HbFeedback::BasicItem; |
276 } |
281 } |
277 else { |
282 else { |
278 effect = HbFeedback::BasicItem; |
283 effect = HbFeedback::BasicItem; |
279 } |
284 } |
280 if (widget->type() == Hb::ItemType_DataFormViewItem) { |
285 if (widget->type() == Hb::ItemType_DataFormViewItem || |
281 effect = HbFeedback::SensitiveItem; |
286 widget->type() == HbPrivate::ItemType_DataGroup) { |
282 } |
|
283 else if (widget->type() == HbPrivate::ItemType_DataGroup) { |
|
284 effect = HbFeedback::None; |
287 effect = HbFeedback::None; |
285 } |
288 } |
286 |
|
287 break; |
289 break; |
288 |
290 |
289 case HbFeedbackEffectUtils::Grid: |
291 case HbFeedbackEffectUtils::Grid: |
290 effect = HbFeedback::BasicItem; |
292 effect = HbFeedback::BasicItem; |
291 break; |
293 break; |
324 effect = HbFeedback::None; |
326 effect = HbFeedback::None; |
325 } |
327 } |
326 break; |
328 break; |
327 |
329 |
328 case HbFeedbackEffectUtils::Editor: |
330 case HbFeedbackEffectUtils::Editor: |
329 effect = HbFeedback::Editor; |
331 if (const HbAbstractEdit* editor = qobject_cast<const HbAbstractEdit *>(widget)) { |
|
332 if(editor->isReadOnly() && (Hb::TextCursorHidden == editor->cursorVisibility())) { |
|
333 // cannot edit nor select |
|
334 effect = HbFeedback::None; |
|
335 } else { |
|
336 effect = HbFeedback::Editor; |
|
337 } |
|
338 } |
330 break; |
339 break; |
331 |
340 |
332 default: |
341 default: |
333 break; |
342 break; |
334 } |
343 } |
358 |
367 |
359 // radio button list behaves like an item view on press |
368 // radio button list behaves like an item view on press |
360 if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) { |
369 if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) { |
361 effect = HbFeedback::BasicItem; |
370 effect = HbFeedback::BasicItem; |
362 } |
371 } |
363 else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) { |
372 else if(viewItem->type() == Hb::ItemType_DatePickerViewItem || |
|
373 viewItem->type() == Hb::ItemType_TumbleViewItem) { |
364 effect = HbFeedback::BasicItem; |
374 effect = HbFeedback::BasicItem; |
365 } |
375 } |
366 |
376 |
367 // expandable or collapsable items give a BasicItem feedback |
377 // expandable or collapsable items give a BasicItem feedback |
368 if (const HbTreeViewItem* treeItem = qobject_cast<const HbTreeViewItem *>(widget)) { |
378 if (const HbTreeViewItem* treeItem = qobject_cast<const HbTreeViewItem *>(widget)) { |
370 effect = HbFeedback::BasicItem; |
380 effect = HbFeedback::BasicItem; |
371 } |
381 } |
372 else { |
382 else { |
373 effect = HbFeedback::BasicItem; |
383 effect = HbFeedback::BasicItem; |
374 } |
384 } |
|
385 } |
|
386 // Combo box drop down list |
|
387 if (QString(widget->metaObject()->className()) == "HbComboListViewItem") { |
|
388 effect = HbFeedback::BasicItem; |
375 } |
389 } |
376 } |
390 } |
377 } |
391 } |
378 |
392 |
379 if (widget->type() == Hb::ItemType_VirtualTrackPoint || QString(widget->metaObject()->className()) == "HbSelectionControl") { |
393 if (widget->type() == Hb::ItemType_VirtualTrackPoint || QString(widget->metaObject()->className()) == "HbSelectionControl") { |
466 effect = HbFeedback::None; |
480 effect = HbFeedback::None; |
467 } |
481 } |
468 else if (widget->type() == Hb::ItemType_DataFormViewItem) { |
482 else if (widget->type() == Hb::ItemType_DataFormViewItem) { |
469 effect = HbFeedback::None; |
483 effect = HbFeedback::None; |
470 } |
484 } |
|
485 |
471 break; |
486 break; |
472 |
487 |
473 case HbFeedbackEffectUtils::Grid: |
488 case HbFeedbackEffectUtils::Grid: |
474 effect = HbFeedback::BasicItem; |
489 effect = HbFeedback::BasicItem; |
475 break; |
490 break; |
530 |
545 |
531 // radio button list has checkbox feedback behaviour on release |
546 // radio button list has checkbox feedback behaviour on release |
532 if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) { |
547 if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) { |
533 effect = HbFeedback::Checkbox; |
548 effect = HbFeedback::Checkbox; |
534 } |
549 } |
535 else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) { |
550 else if(viewItem->type() == Hb::ItemType_DatePickerViewItem || |
|
551 viewItem->type() == Hb::ItemType_TumbleViewItem) { |
536 effect = HbFeedback::BasicItem; |
552 effect = HbFeedback::BasicItem; |
537 } |
553 } |
538 else if (widget->type() == Hb::ItemType_NotificationDialog) { |
554 else if (widget->type() == Hb::ItemType_NotificationDialog) { |
539 effect = HbFeedback::BasicItem; |
555 effect = HbFeedback::BasicItem; |
540 } |
556 } |
541 |
557 |
542 if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) { |
558 if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) { |
543 effect = HbFeedback::BasicItem; |
559 effect = HbFeedback::BasicItem; |
544 } |
560 } |
|
561 |
|
562 // Combo box drop down list |
|
563 if (QString(widget->metaObject()->className()) == "HbComboListViewItem") { |
|
564 effect = HbFeedback::BasicItem; |
|
565 } |
545 } |
566 } |
546 } |
567 } |
547 |
568 |
548 return effect; |
569 return effect; |
549 } |
570 } |
565 case HbFeedbackEffectUtils::Button: |
586 case HbFeedbackEffectUtils::Button: |
566 effect = HbFeedback::SensitiveButton; |
587 effect = HbFeedback::SensitiveButton; |
567 |
588 |
568 // input widget special case |
589 // input widget special case |
569 if (widget->type() == Hb::ItemType_InputButtonGroup && modifiers & Hb::ModifierInputFunctionButton) { |
590 if (widget->type() == Hb::ItemType_InputButtonGroup && modifiers & Hb::ModifierInputFunctionButton) { |
570 effect = HbFeedback::BasicKeypad; |
591 effect = HbFeedback::SensitiveKeypad; |
571 } |
592 } |
572 else if (widget->type() == Hb::ItemType_InputButtonGroup) { |
593 else if (widget->type() == Hb::ItemType_InputButtonGroup) { |
573 effect = HbFeedback::SensitiveKeypad; |
594 effect = HbFeedback::SensitiveKeypad; |
574 } |
595 } |
575 |
596 |