homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
changeset 51 4785f57bf3d4
parent 46 23b5d6a29cce
child 55 03646e8da489
equal deleted inserted replaced
46:23b5d6a29cce 51:4785f57bf3d4
    35 #include "cadefs.h"
    35 #include "cadefs.h"
    36 #include "caentry.h"
    36 #include "caentry.h"
    37 #include "hscollectionstate.h"
    37 #include "hscollectionstate.h"
    38 #include "hsaddappstocollectionstate.h"
    38 #include "hsaddappstocollectionstate.h"
    39 #include "hsapp_defs.h"
    39 #include "hsapp_defs.h"
    40 
    40 #include "hsmainwindow.h"
    41 
    41 
    42 /*!
    42 /*!
    43  \class HsCollectionState
    43  \class HsCollectionState
    44  \ingroup group_hsmenustateplugin
    44  \ingroup group_hsmenustateplugin
    45  \brief Collection State.
    45  \brief Collection State.
   116  \param menuMode reference to object representing menu mode (add mode on/add mode off).
   116  \param menuMode reference to object representing menu mode (add mode on/add mode off).
   117  \param parent Owner.
   117  \param parent Owner.
   118 */
   118 */
   119 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
   119 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
   120                                      HsMenuModeWrapper &menuMode,
   120                                      HsMenuModeWrapper &menuMode,
       
   121                                      HsMainWindow &mainWindow,
   121                                      QState *parent) :
   122                                      QState *parent) :
   122     QState(parent),
   123     QState(parent),
   123     mSortAttribute(LatestOnTopHsSortAttribute),
   124     mSortAttribute(LatestOnTopHsSortAttribute),
   124     mCollectionsSortAttribute(CustomHsSortAttribute),
   125     mCollectionsSortAttribute(CustomHsSortAttribute),
   125     mCollectionId(-1),
   126     mCollectionId(-1),
   126     mMenuView(menuViewBuilder, HsCollectionContext),
   127     mMenuView(menuViewBuilder, HsCollectionContext),
   127     mMenuMode(menuMode),
   128     mMenuMode(menuMode),
   128     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
   129     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
   129     mCollectionModel(0),
   130     mCollectionModel(0),
   130     mOptions(0), mContextModelIndex(), mContextMenu(0)
   131     mOptions(0), mContextModelIndex(), mContextMenu(0),
       
   132     mMainWindow(mainWindow)
   131 {
   133 {
   132     construct();
   134     construct();
   133 }
   135 }
   134 
   136 
   135 /*!
   137 /*!
   194 
   196 
   195 void HsCollectionState::stateEntered()
   197 void HsCollectionState::stateEntered()
   196 {
   198 {
   197     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
   199     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
   198 
   200 
       
   201     mMainWindow.setCurrentView(mMenuView);
   199     mMenuView.activate();
   202     mMenuView.activate();
   200 
   203 
   201     if (!mCollectionModel) {
   204     if (!mCollectionModel) {
   202         mCollectionModel =
   205         mCollectionModel =
   203             HsMenuService::getCollectionModel(
   206             HsMenuService::getCollectionModel(
   204                 mCollectionId, mSortAttribute, mCollectionType);
   207                 mCollectionId, mSortAttribute, mCollectionType);
   205     } else {
   208     }
   206         if (mCollectionType == collectionDownloadedTypeName()) {
   209     
   207             mCollectionModel->setFlagsOn(RemovableEntryFlag | VisibleEntryFlag);
   210     connect(mCollectionModel, SIGNAL(modelReset()), SLOT(updateLabel()));
   208         } else {
       
   209             mCollectionModel->setFlagsOn(VisibleEntryFlag);
       
   210         }
       
   211         mCollectionModel->setParentId(mCollectionId);
       
   212         mCollectionModel->setSort(LatestOnTopHsSortAttribute);
       
   213     }
       
   214 
   211 
   215     mMenuView.setModel(mCollectionModel);
   212     mMenuView.setModel(mCollectionModel);
   216 
   213 
   217     mMenuView.listView()->scrollTo(
   214     mMenuView.listView()->scrollTo(
   218         mCollectionModel->index(0), HbAbstractItemView::PositionAtTop);
   215         mCollectionModel->index(0), HbAbstractItemView::PositionAtTop);
   283 {
   280 {
   284     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
   281     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
   285 
   282 
   286     mMenuView.setSearchPanelVisible(false);
   283     mMenuView.setSearchPanelVisible(false);
   287     mMenuView.inactivate();
   284     mMenuView.inactivate();
       
   285     disconnect(mCollectionModel, SIGNAL(modelReset()),
       
   286                    this, SLOT(updateLabel()));
   288     delete mCollectionModel;
   287     delete mCollectionModel;
   289     mCollectionModel = NULL;
   288     mCollectionModel = NULL;
   290     delete mOptions;
   289     delete mOptions;
   291     mOptions = NULL;
   290     mOptions = NULL;
   292     if (mContextMenu)
   291     if (mContextMenu)
   293         mContextMenu->close();
   292         mContextMenu->close();
   294     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
   293     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
       
   294     this->mSortAttribute = NoHsSortAttribute;
   295     qDebug("CollectionState::stateExited()");
   295     qDebug("CollectionState::stateExited()");
   296 }
   296 }
   297 
   297 
   298 /*!
   298 /*!
   299  Perform all signal connections.
   299  Perform all signal connections.
   306             SIGNAL(activated(QModelIndex)),
   306             SIGNAL(activated(QModelIndex)),
   307             SLOT(listItemActivated(QModelIndex)));
   307             SLOT(listItemActivated(QModelIndex)));
   308     connect(&mMenuView,
   308     connect(&mMenuView,
   309             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
   309             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
   310             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
   310             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
   311     connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
       
   312 }
   311 }
   313 
   312 
   314 /*!
   313 /*!
   315  Perform all signal disconnections.
   314  Perform all signal disconnections.
   316  */
   315  */
   317 void HsCollectionState::makeDisconnect()
   316 void HsCollectionState::makeDisconnect()
   318 {
   317 {
   319     disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
   318     disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
   320                this, SLOT(backSteppingAction()));
   319                this, SLOT(backSteppingAction()));
   321 
       
   322     disconnect(mCollectionModel, SIGNAL(modelReset()),
       
   323                this, SLOT(updateLabel()));
       
   324 
   320 
   325     disconnect(&mMenuView,
   321     disconnect(&mMenuView,
   326                SIGNAL(activated(QModelIndex)),
   322                SIGNAL(activated(QModelIndex)),
   327                this, SLOT(listItemActivated(QModelIndex)));
   323                this, SLOT(listItemActivated(QModelIndex)));
   328 
   324 
   389                                     "txt_applib_menu_add_to_collection"));
   385                                     "txt_applib_menu_add_to_collection"));
   390     addToCollection->setData(AddToCollectionContextAction);
   386     addToCollection->setData(AddToCollectionContextAction);
   391     HbAction *removeAction(NULL);
   387     HbAction *removeAction(NULL);
   392     HbAction *uninstallAction(NULL);
   388     HbAction *uninstallAction(NULL);
   393     HbAction *appSettingsAction(NULL);
   389     HbAction *appSettingsAction(NULL);
       
   390     HbAction *appDetailsAction(NULL);
   394     // we do not add remove option in locked collection
   391     // we do not add remove option in locked collection
   395     // check conditions and hide irrelevant menu items
   392     // check conditions and hide irrelevant menu items
   396     EntryFlags rootFlags =
   393     EntryFlags rootFlags =
   397         mCollectionModel->root().data(CaItemModel::FlagsRole).value<
   394         mCollectionModel->root().data(CaItemModel::FlagsRole).value<
   398         EntryFlags> ();
   395         EntryFlags> ();
   415     if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
   412     if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
   416         appSettingsAction = mContextMenu->addAction(hbTrId(
   413         appSettingsAction = mContextMenu->addAction(hbTrId(
   417                                                 "txt_common_menu_settings"));
   414                                                 "txt_common_menu_settings"));
   418         appSettingsAction->setData(AppSettingContextAction);
   415         appSettingsAction->setData(AppSettingContextAction);
   419     }
   416     }
   420 
   417     
       
   418     if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
       
   419                 entry->entryTypeName() == applicationTypeName() ) {
       
   420         appDetailsAction = mContextMenu->addAction(hbTrId(
       
   421                                                 "txt_common_menu_details"));
       
   422         appDetailsAction->setData(AppDetailsContextAction);
       
   423     }        
   421     mContextModelIndex = item->modelIndex();
   424     mContextModelIndex = item->modelIndex();
   422     mContextMenu->setPreferredPos(coords);
   425     mContextMenu->setPreferredPos(coords);
   423     mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
   426     mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
   424     mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
   427     mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
   425 
   428 
   456             break;
   459             break;
   457         case AppSettingContextAction: 
   460         case AppSettingContextAction: 
   458             machine()->postEvent(
   461             machine()->postEvent(
   459                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
   462                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
   460             break;
   463             break;
       
   464         case AppDetailsContextAction: 
       
   465             machine()->postEvent(
       
   466                 HsMenuEventFactory::createAppDetailsViewEvent(itemId));
       
   467             break;                 
   461         default:
   468         default:
   462             break;
   469             break;
   463     }
   470     }
   464                                     
   471                                     
   465     mMenuView.setSearchPanelVisible(false);
   472     mMenuView.setSearchPanelVisible(false);