diff -r cdae8c6c3876 -r 4e8ebe173323 homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp --- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Fri Apr 16 14:54:01 2010 +0300 +++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Mon May 03 12:24:59 2010 +0300 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -26,6 +27,8 @@ #include #include +#include +#include #include "homescreendomainpskeys.h" #include "hsdefaultruntime.h" @@ -39,12 +42,22 @@ QTM_USE_NAMESPACE -#ifdef S60APP_KEY -int applicationKey = Qt::Key_Launch0; + +#ifdef Q_OS_SYMBIAN +const static Qt::Key applicationKey = Qt::Key_Menu; #else -int applicationKey = Qt::Key_Any; +const static Qt::Key applicationKey = Qt::Key_Home; #endif +namespace +{ + const char KHsLoadSceneStateInterface[] = "com.nokia.homescreen.state.HsLoadSceneState"; + const char KHsIdleStateInterface[] = "com.nokia.homescreen.state.HsIdleState"; + const char KHsAppLibraryStateInterface[] = "com.nokia.homescreen.state.HsAppLibraryState"; + const char KHsMenuWorkerStateInterface[] = "com.nokia.homescreen.state.HsMenuWorkerState"; +} + + /*! \class HsDefaultRuntime \ingroup group_hsdefaultruntimeplugin @@ -65,6 +78,9 @@ mHomeScreenActive(false), mIdleStateActive(false), mPublisher(NULL) +#ifdef Q_OS_SYMBIAN + ,keyCapture() +#endif { HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::HsDefaultRuntime"); @@ -73,7 +89,7 @@ #ifdef Q_OS_SYMBIAN db->setDatabaseName("c:/private/20022f35/homescreen.db"); #else - db->setDatabaseName("homescreen.db"); + db->setDatabaseName("private/20022f35/homescreen.db"); #endif db->open(); HsDatabase::setInstance(db); @@ -83,6 +99,8 @@ HsWidgetPositioningOnWidgetAdd::setInstance( new HsAnchorPointInBottomRight); + + registerAnimations(); createStatePublisher(); createContentServiceParts(); @@ -116,22 +134,42 @@ switch (event->type()) { case QEvent::ApplicationActivate: - { - qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate"; - mHomeScreenActive = true; - updatePSKeys(); - } - break; + qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate"; +#ifdef Q_OS_SYMBIAN + keyCapture.captureKey(applicationKey); +#endif + mHomeScreenActive = true; + updatePSKeys(); + break; case QEvent::ApplicationDeactivate: - { - qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate"; + qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate"; +#ifdef Q_OS_SYMBIAN + keyCapture.cancelCaptureKey(applicationKey); +#endif mHomeScreenActive = false; - updatePSKeys(); - } - break; + updatePSKeys(); + break; + default: + break; } - - return QStateMachine::eventFilter(watched, event); + + bool result = QStateMachine::eventFilter(watched, event); + // temporary hack as we should not register twice for events + if (event->type() == QEvent::KeyPress ) { + QKeyEvent* ke = static_cast(event); + // Key_Launch0 should be removed when QT starts to send Key_Menu + result = (ke->key() == applicationKey) || ke->key() == Qt::Key_Launch0; + } + return result; +} + +/*! + Registers framework animations. +*/ +void HsDefaultRuntime::registerAnimations() +{ + HbIconAnimationManager *manager = HbIconAnimationManager::global(); + manager->addDefinitionFile(QLatin1String(":/resource/tapandhold.axml")); } /*! @@ -178,25 +216,16 @@ QServiceManager manager; - QServiceFilter filter; - - filter.setInterface("com.nokia.homescreen.state.HsLoadSceneState"); -#ifdef HSDEFAULTRUNTIMEPLUGIN_UNITTEST - filter.setServiceName("mockstateplugins"); -#endif - QList interfaces = manager.findInterfaces(filter); - - QObject *loadSceneStateObj = manager.loadInterface(interfaces.first()); + + QObject *loadSceneStateObj = manager.loadInterface(KHsLoadSceneStateInterface); QState *loadSceneState = qobject_cast(loadSceneStateObj); loadSceneState->setParent(guiRootState); - loadSceneState->setObjectName(interfaces.first().interfaceName()); + loadSceneState->setObjectName(KHsLoadSceneStateInterface); - filter.setInterface("com.nokia.homescreen.state.HsIdleState"); - interfaces = manager.findInterfaces(filter); - QObject *idleStateObj = manager.loadInterface(interfaces.first()); + QObject *idleStateObj = manager.loadInterface(KHsIdleStateInterface); QState *idleState = qobject_cast(idleStateObj); idleState->setParent(guiRootState); - idleState->setObjectName(interfaces.first().interfaceName()); + idleState->setObjectName(KHsIdleStateInterface); connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered())); connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited())); @@ -208,20 +237,16 @@ QState::ParallelStates, guiRootState); QState *menuRootState = new QState(menuParallelState); - filter.setInterface("com.nokia.homescreen.state.HsAppLibraryState"); - interfaces = manager.findInterfaces(filter); - QObject *appLibraryStateObj = manager.loadInterface(interfaces.first()); + QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface); QState *appLibraryState = qobject_cast(appLibraryStateObj); appLibraryState->setParent(menuRootState); - appLibraryState->setObjectName(interfaces.first().interfaceName()); + appLibraryState->setObjectName(KHsAppLibraryStateInterface); menuRootState->setInitialState(appLibraryState); - filter.setInterface("com.nokia.homescreen.state.HsMenuWorkerState"); - interfaces = manager.findInterfaces(filter); - QObject *menuWorkerStateObj = manager.loadInterface(interfaces.first()); + QObject *menuWorkerStateObj = manager.loadInterface(KHsMenuWorkerStateInterface); QState *menuWorkerState = qobject_cast(menuWorkerStateObj); menuWorkerState->setParent(menuParallelState); - menuWorkerState->setObjectName(interfaces.first().interfaceName()); + menuWorkerState->setObjectName(KHsMenuWorkerStateInterface); // root state transitions idleState->addTransition(idleState, SIGNAL(event_applicationLibrary()), menuRootState); @@ -243,15 +268,29 @@ // key driven transition from idle to menu QKeyEventTransition *idleToMenuRootTransition = new QKeyEventTransition( - window, QEvent::KeyRelease, applicationKey, idleState); + window, QEvent::KeyPress, applicationKey); idleToMenuRootTransition->setTargetState(menuRootState); idleState->addTransition(idleToMenuRootTransition); // key driven transition from menu to idle QKeyEventTransition *menuToIdleTransition = new QKeyEventTransition( - window, QEvent::KeyRelease, applicationKey, idleState); + window, QEvent::KeyPress, applicationKey); menuToIdleTransition->setTargetState(idleState); menuRootState->addTransition(menuToIdleTransition); + + // transition for Key_Launch0 should be removed + // when OT starts to send Key_Menu (maybe wk14) + QKeyEventTransition *idleToMenuRootTransition2 = + new QKeyEventTransition( + window, QEvent::KeyPress, Qt::Key_Launch0); + idleToMenuRootTransition2->setTargetState(menuRootState); + idleState->addTransition(idleToMenuRootTransition2); + // key driven transition from menu to idle + QKeyEventTransition *menuToIdleTransition2 = + new QKeyEventTransition( + window, QEvent::KeyPress, Qt::Key_Launch0); + menuToIdleTransition2->setTargetState(idleState); + menuRootState->addTransition(menuToIdleTransition2); // transitions to child states // opening shortcut to a colleciton