diff -r 66b5fe3c07fd -r e6f74eb7f69f homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp --- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp Wed Oct 06 16:06:24 2010 +0300 +++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp Mon Oct 18 10:20:15 2010 +0300 @@ -89,10 +89,11 @@ */ HsAppLibraryState::HsAppLibraryState(QState *parent) : QState(parent), mAllAppsState(0), - mHistoryTransaction(0), mAllCollectionsState(0), mCollectionState(0), + mHistoryTransition(0), mAllCollectionsState(0), mCollectionState(0), mMenuMode(),mMainWindow(&mMenuMode) { construct(); + CaService::instance()->preloadHandlers(); } /*! @@ -104,7 +105,6 @@ delete mAllCollectionsState; delete mCollectionState; delete mInstalledAppsState; - } /*! @@ -124,10 +124,10 @@ QState *initialState = new QState(this); setInitialState(initialState); - mHistoryTransaction = new HsMenuModeTransition( + mHistoryTransition = new HsMenuModeTransition( mMenuMode, Hs::NormalHsMenuMode, mAllAppsState); - initialState->addTransition(mHistoryTransaction); + initialState->addTransition(mHistoryTransition); initialState->addTransition( new HsMenuModeTransition( mMenuMode, Hs::AddHsMenuMode, mAllAppsState)); @@ -344,16 +344,9 @@ void HsAppLibraryState::allAppsStateEntered() { if (mMenuMode.getHsMenuMode() == Hs::NormalHsMenuMode) { - mHistoryTransaction->setTargetState(mAllAppsState); + mHistoryTransition->setTargetState(mAllAppsState); } - while (!mInstalledAppsState->transitions().isEmpty()) { - mInstalledAppsState->removeTransition( - mInstalledAppsState->transitions()[0]); - } - HsMenuEventTransition *fromInstalledAppsTransition = - new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView, - mInstalledAppsState, mAllAppsState); - mInstalledAppsState->addTransition(fromInstalledAppsTransition); + addFromInstalledTransition(mAllAppsState); } /*! @@ -362,16 +355,9 @@ void HsAppLibraryState::allCollectionsStateEntered() { if (mMenuMode.getHsMenuMode() == Hs::NormalHsMenuMode) { - mHistoryTransaction->setTargetState(mAllCollectionsState); + mHistoryTransition->setTargetState(mAllCollectionsState); } - while (!mInstalledAppsState->transitions().isEmpty()) { - mInstalledAppsState->removeTransition( - mInstalledAppsState->transitions()[0]); - } - HsMenuEventTransition *fromInstalledAppsTransition = - new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView, - mInstalledAppsState, mAllCollectionsState); - mInstalledAppsState->addTransition(fromInstalledAppsTransition); + addFromInstalledTransition(mAllCollectionsState); } /*! @@ -379,12 +365,22 @@ */ void HsAppLibraryState::collectionStateEntered() { + addFromInstalledTransition(mCollectionState); +} + +/*! + Adds transition back from installed state. + */ +void HsAppLibraryState::addFromInstalledTransition(QState *state) +{ while (!mInstalledAppsState->transitions().isEmpty()) { - mInstalledAppsState->removeTransition( - mInstalledAppsState->transitions()[0]); + QAbstractTransition* transition + = mInstalledAppsState->transitions()[0]; + mInstalledAppsState->removeTransition(transition); + delete transition; } - HsMenuEventTransition *fromInstalledAppsTransition = - new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView, - mInstalledAppsState, mCollectionState); + HsMenuEventTransition *fromInstalledAppsTransition + = new HsMenuEventTransition( + HsMenuEvent::BackFromInstalledView, mInstalledAppsState, state); mInstalledAppsState->addTransition(fromInstalledAppsTransition); }