homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
changeset 39 4e8ebe173323
parent 36 cdae8c6c3876
child 46 23b5d6a29cce
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Mon May 03 12:24:59 2010 +0300
@@ -34,9 +34,11 @@
 #include "hsaddappstocollectionstate.h"
 #include "hsapp_defs.h"
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructor.
+ \param menuView Menu view.
+ \param parent Owner.
+*/
 HsCollectionState::HsCollectionState(HsMenuView &menuView, QState *parent) :
     QState(parent),
     mSortAttribute(LatestOnTopHsSortAttribute),
@@ -47,13 +49,15 @@
     construct();
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructs contained objects.
+ */
 void HsCollectionState::construct()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::construct");
-    setObjectName(this->parent()->objectName() + "/collectionstate");
+    const QString parentName =
+        parent() != 0 ? parent()->objectName() : QString("");
+    setObjectName(parentName + "/collectionstate");
 
     //new action for backstepping
     mSecondarySoftkeyAction = new HbAction(Hb::BackAction, this);
@@ -62,18 +66,19 @@
     HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Destructor.
+ */
 HsCollectionState::~HsCollectionState()
 {
     delete mCollectionModel;
 }
 
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Sets entry event.
+ \param event entry event.
+ */
 void HsCollectionState::onEntry(QEvent *event)
 {
     qDebug("HsCollectionState::onEntry()");
@@ -90,9 +95,9 @@
     HSMENUTEST_FUNC_EXIT("HsCollectionState::onEntry");
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is entered.
+ */
 void HsCollectionState::stateEntered()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
@@ -175,17 +180,19 @@
     }
     mOldNavigationAction = mMenuView.view()->navigationAction();
     mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
-    
+
     makeConnect();
     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateEntered");
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is exited.
+ */
 void HsCollectionState::stateExited()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
+    mMenuView.setSearchPanelVisible(false);
+
     makeDisconnect();
 
     mOptions = NULL;
@@ -200,9 +207,9 @@
     qDebug("CollectionState::stateExited()");
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Perform all signal connections.
+ */
 void HsCollectionState::makeConnect()
 {
     connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
@@ -214,9 +221,9 @@
     connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Perform all signal disconnections.
+ */
 void HsCollectionState::makeDisconnect()
 {
     disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
@@ -241,14 +248,15 @@
     return HsMenuService::launchTaskSwitcher();
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget.
+ \param index Model index of the activated item.
+ */
 void HsCollectionState::listItemActivated(const QModelIndex &index)
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemActivated");
 
-    const CaEntry *entry = mCollectionModel->entry(index);
+    QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
 
     if (entry->entryTypeName() == widgetTypeName()) {
         machine()->postEvent(
@@ -271,7 +279,7 @@
 /*!
  Handles long-item-pressed event in all apps view by showing context menu
  \param item the event pertains to
- \param position at which context menu is shown
+ \param coords press point coordinates.
  \retval void
  */
 void HsCollectionState::listItemLongPressed(HbAbstractViewItem *item,
@@ -279,7 +287,6 @@
 {
     Q_UNUSED(item);
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemLongPressed");
-    mMenuView.setSearchPanelVisible(false);
     int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
     // create context menu
     HbMenu *menu = new HbMenu();
@@ -290,6 +297,7 @@
                                     "txt_applib_menu_add_to_collection"));
     HbAction *removeAction(NULL);
     HbAction *uninstallAction(NULL);
+    HbAction *appSettingsAction(NULL);
     // we do not add remove option in collection download menu
     // check conditions and hide irrelevant menu items
     if (mCollectionType != collectionDownloadedTypeName()) {
@@ -303,9 +311,15 @@
     if ((flags & RemovableEntryFlag)) {
         uninstallAction = menu->addAction(hbTrId("txt_common_menu_delete"));
     }
+    QSharedPointer<const CaEntry> entry = mCollectionModel->entry(item->modelIndex());
 
+    if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
+        appSettingsAction = menu->addAction(hbTrId(
+                                                "txt_common_menu_settings"));
+    }
     // choose proper action
     if (HbAction *selectedAction = menu->exec(coords)) {
+
         if (selectedAction == addShortcutAction) {
             addElementToHomeScreen(item->modelIndex());
         } else if (selectedAction == addToCollection) {
@@ -318,15 +332,23 @@
             machine()->postEvent(
                 HsMenuEventFactory::createRemoveAppFromCollectionEvent(
                     itemId, mCollectionId));
+        } else if (selectedAction == appSettingsAction) {
+            const int itemId =
+                item->modelIndex().data(CaItemModel::IdRole).toInt();
+            QMap<QString, QString> attributes = entry->attributes();
+            machine()->postEvent(
+                HsMenuEventFactory::createAppSettingsViewEvent(itemId));
         }
+
+        mMenuView.setSearchPanelVisible(false);
     }
     delete menu;
     HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemLongPressed");
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu add applications action slot
+ */
 void HsCollectionState::addAppsAction()
 {
     // Add applications
@@ -335,44 +357,44 @@
             mCollectionId));
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu add shortcut action slot
+ */
 void HsCollectionState::addCollectionShortcutToHomeScreenAction()
 {
     machine()->postEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
                              mCollectionId));
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu rename action slot
+ */
 void HsCollectionState::renameAction()
 {
     machine()->postEvent(HsMenuEventFactory::createRenameCollectionEvent(
                              mCollectionId));
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu delete action slot
+ */
 void HsCollectionState::deleteAction()
 {
     machine()->postEvent(HsMenuEventFactory::createDeleteCollectionEvent(
                              mCollectionId));
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu softkey back action slot
+ */
 void HsCollectionState::backSteppingAction()
 {
     machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
 }
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Updates label
+ */
 void HsCollectionState::updateLabel()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::updateLabel");
@@ -390,17 +412,13 @@
  */
 void HsCollectionState::addElementToHomeScreen(const QModelIndex &index)
 {
-    const CaEntry *entry = mCollectionModel->entry(index);
-    
+    QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
+
     QMap<QString, QString> attributes = entry->attributes();
 
     machine()->postEvent(
         HsMenuEventFactory::createAddToHomeScreenEvent(
-            entry->id(),
-            entry->entryTypeName(),
-            entry->attribute(widgetUriAttributeName()),
-            entry->attribute(widgetLibraryAttributeName()),
-            &attributes));
+            entry->id()));
 }
 
 /*!