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