homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp
changeset 55 03646e8da489
parent 51 4785f57bf3d4
child 60 30f14686fb04
child 62 341166945d65
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Thu May 27 12:46:08 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Fri Jun 11 13:30:16 2010 +0300
@@ -158,6 +158,10 @@
         mMenuView.setModel(mInstalledAppsModel);
     }
 
+    if (mInstalledAppsModel->rowCount() == 0){
+        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+        }
+
     mMenuView.listView()->scrollTo(
         mInstalledAppsModel->index(0));
 
@@ -168,6 +172,9 @@
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
 
+    connect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+            SLOT(setEmptyLabelVisibility(bool)));
+
     mMenuView.viewLabel()->setHeading(
         hbTrId("txt_applib_subtitle_installed"));
 
@@ -181,6 +188,9 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateExited");
 
+    disconnect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+               SLOT(setEmptyLabelVisibility(bool)));
+
     mMenuView.setSearchPanelVisible(false);
     mMenuView.inactivate();
 
@@ -192,6 +202,18 @@
 }
 
 /*!
+ Handles button visibility
+ */
+void HsInstalledAppsState::setEmptyLabelVisibility(bool visibility)
+{
+    if(visibility){
+        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+    } else {
+        mMenuView.setContext(HsInstalledAppsContext,HsItemViewContext);
+    }
+}
+
+/*!
  Open task switcher.
  \retval true if operation is successful.
  */
@@ -233,7 +255,19 @@
 
     HbAction *uninstallAction = mContextMenu->addAction(
                                     hbTrId("txt_common_menu_delete"));
+    HbAction *appDetailsAction(NULL);
     uninstallAction->setData(UninstallContextAction);
+    
+    QSharedPointer<const CaEntry> entry = mInstalledAppsModel->entry(item->modelIndex());
+    EntryFlags flags = item->modelIndex().data(
+                           CaItemModel::FlagsRole).value<EntryFlags> ();
+    
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }      
 
     mContextModelIndex = item->modelIndex();
     mContextMenu->setPreferredPos(coords);
@@ -251,13 +285,25 @@
  Handles context menu actions
  */
 void HsInstalledAppsState::contextMenuAction(HbAction *action)
-{
-    HsContextAction command = static_cast<HsContextAction>(action->data().toInt());
-    if (command == UninstallContextAction) {
-        const int itemId = mContextModelIndex.data(
-                                   CaItemModel::IdRole).toInt();
-        HsMenuService::executeAction(itemId, removeActionIdentifier());
-    }   
+{    
+    HsContextAction command = 
+            static_cast<HsContextAction>(action->data().toInt());
+    
+    const int itemId = mContextModelIndex.data(CaItemModel::IdRole).toInt();
+    
+    switch (command) {
+        case UninstallContextAction:
+            machine()->postEvent(
+                HsMenuEventFactory::createUninstallApplicationEvent(
+                    itemId));
+            break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;            
+        default:
+            break;            
+    }
     mMenuView.setSearchPanelVisible(false);
 }