330 SLOT(listItemActivated(QModelIndex))); |
330 SLOT(listItemActivated(QModelIndex))); |
331 connect(&mMenuView, |
331 connect(&mMenuView, |
332 SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), |
332 SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), |
333 SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF))); |
333 SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF))); |
334 connect(mMenuView.collectionButton(), |
334 connect(mMenuView.collectionButton(), |
335 SIGNAL(released()), this, SLOT(addAppsAction())); |
335 SIGNAL(toggled(bool)), this, SLOT(addAppsAction(bool))); |
336 |
|
337 } |
336 } |
338 |
337 |
339 /*! |
338 /*! |
340 Perform all signal disconnections. |
339 Perform all signal disconnections. |
341 */ |
340 */ |
342 void HsCollectionState::makeDisconnect() |
341 void HsCollectionState::makeDisconnect() |
343 { |
342 { |
344 disconnect(mMenuView.collectionButton(), |
343 disconnect(mMenuView.collectionButton(), |
345 SIGNAL(pressed()), this, SLOT(addAppsAction())); |
344 SIGNAL(toggled(bool)), this, SLOT(addAppsAction(bool))); |
346 |
345 |
347 disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()), |
346 disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()), |
348 this, SLOT(backSteppingAction())); |
347 this, SLOT(backSteppingAction())); |
349 |
348 |
350 disconnect(&mMenuView, |
349 disconnect(&mMenuView, |
374 HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemActivated"); |
373 HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemActivated"); |
375 |
374 |
376 QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index); |
375 QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index); |
377 |
376 |
378 if (entry->entryTypeName() == widgetTypeName()) { |
377 if (entry->entryTypeName() == widgetTypeName()) { |
379 machine()->postEvent( |
378 EntryFlags flags = index.data(CaItemModel::FlagsRole).value< |
380 HsMenuEventFactory::createPreviewHSWidgetEvent( |
379 EntryFlags> (); |
381 entry->id(), entry->entryTypeName(), entry->attribute( |
380 if (!(flags & UninstallEntryFlag)) { |
382 widgetUriAttributeName()), entry->attribute( |
381 machine()->postEvent( |
383 widgetLibraryAttributeName()))); |
382 HsMenuEventFactory::createPreviewHSWidgetEvent( |
384 |
383 entry->id(), entry->entryTypeName(), entry->attribute( |
385 const int itemId = index.data(CaItemModel::IdRole).toInt(); |
384 widgetUriAttributeName()), entry->attribute( |
386 HsMenuService::touch(itemId); |
385 widgetLibraryAttributeName()))); |
|
386 |
|
387 const int itemId = index.data(CaItemModel::IdRole).toInt(); |
|
388 HsMenuService::touch(itemId); |
|
389 } |
387 } else { |
390 } else { |
388 QVariant data = mCollectionModel->data(index, CaItemModel::IdRole); |
391 QVariant data = mCollectionModel->data(index, CaItemModel::IdRole); |
389 HsMenuService::executeAction(data.toInt()); |
392 HsMenuService::executeAction(data.toInt()); |
390 } |
393 } |
391 |
394 |
400 \retval void |
403 \retval void |
401 */ |
404 */ |
402 void HsCollectionState::listItemLongPressed(HbAbstractViewItem *item, |
405 void HsCollectionState::listItemLongPressed(HbAbstractViewItem *item, |
403 const QPointF &coords) |
406 const QPointF &coords) |
404 { |
407 { |
405 Q_UNUSED(item); |
|
406 HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemLongPressed"); |
408 HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemLongPressed"); |
407 // create context menu |
|
408 mContextMenu = new HbMenu(); |
|
409 |
|
410 HbAction *addShortcutAction = mContextMenu->addAction(hbTrId( |
|
411 "txt_applib_menu_add_to_home_screen")); |
|
412 addShortcutAction->setData(AddToHomeScreenContextAction); |
|
413 HbAction *addToCollection = mContextMenu->addAction(hbTrId( |
|
414 "txt_applib_menu_add_to_collection")); |
|
415 addToCollection->setData(AddToCollectionContextAction); |
|
416 HbAction *removeAction(NULL); |
|
417 HbAction *uninstallAction(NULL); |
|
418 HbAction *appSettingsAction(NULL); |
|
419 HbAction *appDetailsAction(NULL); |
|
420 // we do not add remove option in locked collection |
|
421 // check conditions and hide irrelevant menu items |
|
422 EntryFlags rootFlags = |
|
423 mCollectionModel->root().data(CaItemModel::FlagsRole).value< |
|
424 EntryFlags> (); |
|
425 |
|
426 if (rootFlags & RemovableEntryFlag) { |
|
427 removeAction = mContextMenu->addAction( |
|
428 hbTrId("txt_applib_menu_remove_from_collection")); |
|
429 removeAction->setData(RemoveFromCollectionContextAction); |
|
430 } |
|
431 |
409 |
432 EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value< |
410 EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value< |
433 EntryFlags> (); |
411 EntryFlags> (); |
434 |
412 |
435 if ((flags & RemovableEntryFlag)) { |
413 if (!(flags & UninstallEntryFlag)) { |
436 uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete")); |
414 // create context menu |
437 uninstallAction->setData(UninstallContextAction); |
415 mContextMenu = new HbMenu(); |
438 } |
416 |
439 QSharedPointer<const CaEntry> entry = mCollectionModel->entry(item->modelIndex()); |
417 HbAction *addShortcutAction = mContextMenu->addAction(hbTrId( |
440 |
418 "txt_applib_menu_add_to_home_screen")); |
441 if (!(entry->attribute(appSettingsPlugin()).isEmpty())) { |
419 addShortcutAction->setData(AddToHomeScreenContextAction); |
442 appSettingsAction = mContextMenu->addAction(hbTrId( |
420 HbAction *addToCollection = mContextMenu->addAction(hbTrId( |
443 "txt_common_menu_settings")); |
421 "txt_applib_menu_add_to_collection")); |
444 appSettingsAction->setData(AppSettingContextAction); |
422 addToCollection->setData(AddToCollectionContextAction); |
445 } |
423 HbAction *removeAction(NULL); |
|
424 HbAction *uninstallAction(NULL); |
|
425 HbAction *appSettingsAction(NULL); |
|
426 HbAction *appDetailsAction(NULL); |
|
427 // we do not add remove option in locked collection |
|
428 // check conditions and hide irrelevant menu items |
|
429 EntryFlags rootFlags = |
|
430 mCollectionModel->root().data(CaItemModel::FlagsRole).value< |
|
431 EntryFlags> (); |
|
432 |
|
433 if (rootFlags & RemovableEntryFlag) { |
|
434 removeAction = mContextMenu->addAction( |
|
435 hbTrId("txt_applib_menu_remove_from_collection")); |
|
436 removeAction->setData(RemoveFromCollectionContextAction); |
|
437 } |
|
438 |
|
439 if ((flags & RemovableEntryFlag)) { |
|
440 uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete")); |
|
441 uninstallAction->setData(UninstallContextAction); |
|
442 } |
|
443 QSharedPointer<const CaEntry> entry = mCollectionModel->entry(item->modelIndex()); |
|
444 |
|
445 if (!(entry->attribute(appSettingsPlugin()).isEmpty())) { |
|
446 appSettingsAction = mContextMenu->addAction(hbTrId( |
|
447 "txt_common_menu_settings")); |
|
448 appSettingsAction->setData(AppSettingContextAction); |
|
449 } |
446 |
450 |
447 if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && |
451 if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && |
448 (flags & RemovableEntryFlag) ) { |
452 (flags & RemovableEntryFlag) ) { |
449 appDetailsAction = mContextMenu->addAction(hbTrId( |
453 appDetailsAction = mContextMenu->addAction(hbTrId( |
450 "txt_common_menu_details")); |
454 "txt_common_menu_details")); |
451 appDetailsAction->setData(AppDetailsContextAction); |
455 appDetailsAction->setData(AppDetailsContextAction); |
452 } |
456 } |
453 mContextModelIndex = item->modelIndex(); |
457 mContextModelIndex = item->modelIndex(); |
454 mContextMenu->setPreferredPos(coords); |
458 mContextMenu->setPreferredPos(coords); |
455 mContextMenu->setAttribute(Qt::WA_DeleteOnClose); |
459 mContextMenu->setAttribute(Qt::WA_DeleteOnClose); |
456 mContextMenu->open(this, SLOT(contextMenuAction(HbAction*))); |
460 mContextMenu->open(this, SLOT(contextMenuAction(HbAction*))); |
457 |
461 } |
458 |
462 |
459 HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemLongPressed"); |
463 HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemLongPressed"); |
460 } |
464 } |
461 |
465 |
462 /*! |
466 /*! |