homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
changeset 51 4785f57bf3d4
parent 46 23b5d6a29cce
child 55 03646e8da489
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -37,7 +37,7 @@
 #include "hscollectionstate.h"
 #include "hsaddappstocollectionstate.h"
 #include "hsapp_defs.h"
-
+#include "hsmainwindow.h"
 
 /*!
  \class HsCollectionState
@@ -118,6 +118,7 @@
 */
 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
                                      HsMenuModeWrapper &menuMode,
+                                     HsMainWindow &mainWindow,
                                      QState *parent) :
     QState(parent),
     mSortAttribute(LatestOnTopHsSortAttribute),
@@ -127,7 +128,8 @@
     mMenuMode(menuMode),
     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
     mCollectionModel(0),
-    mOptions(0), mContextModelIndex(), mContextMenu(0)
+    mOptions(0), mContextModelIndex(), mContextMenu(0),
+    mMainWindow(mainWindow)
 {
     construct();
 }
@@ -196,21 +198,16 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
 
+    mMainWindow.setCurrentView(mMenuView);
     mMenuView.activate();
 
     if (!mCollectionModel) {
         mCollectionModel =
             HsMenuService::getCollectionModel(
                 mCollectionId, mSortAttribute, mCollectionType);
-    } else {
-        if (mCollectionType == collectionDownloadedTypeName()) {
-            mCollectionModel->setFlagsOn(RemovableEntryFlag | VisibleEntryFlag);
-        } else {
-            mCollectionModel->setFlagsOn(VisibleEntryFlag);
-        }
-        mCollectionModel->setParentId(mCollectionId);
-        mCollectionModel->setSort(LatestOnTopHsSortAttribute);
     }
+    
+    connect(mCollectionModel, SIGNAL(modelReset()), SLOT(updateLabel()));
 
     mMenuView.setModel(mCollectionModel);
 
@@ -285,6 +282,8 @@
 
     mMenuView.setSearchPanelVisible(false);
     mMenuView.inactivate();
+    disconnect(mCollectionModel, SIGNAL(modelReset()),
+                   this, SLOT(updateLabel()));
     delete mCollectionModel;
     mCollectionModel = NULL;
     delete mOptions;
@@ -292,6 +291,7 @@
     if (mContextMenu)
         mContextMenu->close();
     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
+    this->mSortAttribute = NoHsSortAttribute;
     qDebug("CollectionState::stateExited()");
 }
 
@@ -308,7 +308,6 @@
     connect(&mMenuView,
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-    connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
 }
 
 /*!
@@ -319,9 +318,6 @@
     disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
                this, SLOT(backSteppingAction()));
 
-    disconnect(mCollectionModel, SIGNAL(modelReset()),
-               this, SLOT(updateLabel()));
-
     disconnect(&mMenuView,
                SIGNAL(activated(QModelIndex)),
                this, SLOT(listItemActivated(QModelIndex)));
@@ -391,6 +387,7 @@
     HbAction *removeAction(NULL);
     HbAction *uninstallAction(NULL);
     HbAction *appSettingsAction(NULL);
+    HbAction *appDetailsAction(NULL);
     // we do not add remove option in locked collection
     // check conditions and hide irrelevant menu items
     EntryFlags rootFlags =
@@ -417,7 +414,13 @@
                                                 "txt_common_menu_settings"));
         appSettingsAction->setData(AppSettingContextAction);
     }
-
+    
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+                entry->entryTypeName() == applicationTypeName() ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }        
     mContextModelIndex = item->modelIndex();
     mContextMenu->setPreferredPos(coords);
     mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
@@ -458,6 +461,10 @@
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;                 
         default:
             break;
     }