homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
changeset 60 30f14686fb04
parent 55 03646e8da489
child 61 2b1b11a301d2
equal deleted inserted replaced
55:03646e8da489 60:30f14686fb04
   146         parent() != 0 ? parent()->objectName() : QString("");
   146         parent() != 0 ? parent()->objectName() : QString("");
   147     setObjectName(parentName + "/collectionstate");
   147     setObjectName(parentName + "/collectionstate");
   148 
   148 
   149     connect(this, SIGNAL(entered()),SLOT(stateEntered()));
   149     connect(this, SIGNAL(entered()),SLOT(stateEntered()));
   150     connect(this, SIGNAL(exited()),SLOT(stateExited()));
   150     connect(this, SIGNAL(exited()),SLOT(stateExited()));
   151 
   151     
       
   152     mMenuView.collectionButton()->setCheckable(true);   
   152     makeConnect();
   153     makeConnect();
   153     mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
   154     mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
   154 
   155 
   155     HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
   156     HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
   156 }
   157 }
   161 HsCollectionState::~HsCollectionState()
   162 HsCollectionState::~HsCollectionState()
   162 {
   163 {
   163     makeDisconnect();
   164     makeDisconnect();
   164     mMenuView.inactivate();
   165     mMenuView.inactivate();
   165     mMenuView.setModel(NULL);
   166     mMenuView.setModel(NULL);
   166     mMenuView.view()->
   167     mMenuView.view()->setNavigationAction(NULL);
   167     setNavigationAction(NULL);
       
   168     delete mCollectionModel;
   168     delete mCollectionModel;
   169 }
   169 }
   170 
   170 
   171 
   171 
   172 /*!
   172 /*!
   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 /*!
   503     mMenuView.setSearchPanelVisible(false);
   507     mMenuView.setSearchPanelVisible(false);
   504 }
   508 }
   505 
   509 
   506 /*!
   510 /*!
   507  Handles button visibility
   511  Handles button visibility
       
   512   \param empty if true set empty text label or button to add entries to collection
   508  */
   513  */
   509 void HsCollectionState::handleEmptyChange(bool empty)
   514 void HsCollectionState::handleEmptyChange(bool empty)
   510 {
   515 {
   511     EntryFlags flags =
   516     EntryFlags flags =
   512         mCollectionModel->root().data(CaItemModel::FlagsRole).value<
   517         mCollectionModel->root().data(CaItemModel::FlagsRole).value<
   524 }
   529 }
   525 
   530 
   526 
   531 
   527 /*!
   532 /*!
   528  Handles lock serch button
   533  Handles lock serch button
       
   534   \param lock if true lock search button
   529  */
   535  */
   530 void HsCollectionState::lockSearchButton(bool lock)
   536 void HsCollectionState::lockSearchButton(bool lock)
   531 {
   537 {
   532     mMenuView.disableSearch(lock);
   538     mMenuView.disableSearch(lock);
   533 }
   539 }
   534 
   540 
   535 
   541 
   536 /*!
   542 /*!
   537  Menu add applications action slot
   543  Menu add applications action slot
   538  */
   544    \param addApps if true create event for add enties to collection. Parametr use by toggled from HbPushButton
   539 void HsCollectionState::addAppsAction()
   545  */
       
   546 void HsCollectionState::addAppsAction(bool addApps)
   540 {
   547 {
   541     // Add applications
   548     // Add applications
   542     machine()->postEvent(
   549     if (addApps) {
   543         HsMenuEventFactory::createAddAppsFromCallectionViewEvent(
   550         mMenuView.collectionButton()->setChecked(false);
   544             mCollectionId));
   551         machine()->postEvent(
       
   552             HsMenuEventFactory::createAddAppsFromCallectionViewEvent(
       
   553                 mCollectionId));
       
   554     }    
   545 }
   555 }
   546 
   556 
   547 /*!
   557 /*!
   548  Menu add shortcut action slot
   558  Menu add shortcut action slot
   549  */
   559  */