diff -r 4785f57bf3d4 -r 03646e8da489 homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp --- 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 entry = mInstalledAppsModel->entry(item->modelIndex()); + EntryFlags flags = item->modelIndex().data( + CaItemModel::FlagsRole).value (); + + 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(action->data().toInt()); - if (command == UninstallContextAction) { - const int itemId = mContextModelIndex.data( - CaItemModel::IdRole).toInt(); - HsMenuService::executeAction(itemId, removeActionIdentifier()); - } +{ + HsContextAction command = + static_cast(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); }