--- 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);
}