diff -r 2e2dc3d30ca8 -r 341166945d65 homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp --- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Thu Jun 24 13:11:40 2010 +0100 +++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Fri Jun 25 19:19:22 2010 +0300 @@ -42,8 +42,9 @@ #include "hsmenueventtransition.h" #include "hswidgetpositioningonorientationchange.h" #include "hswidgetpositioningonwidgetadd.h" +#include "hsconfiguration.h" #include "hstest_global.h" -#include "hsconfiguration.h" +#include "hswidgetpositioningonwidgetmove.h" QTM_USE_NAMESPACE #define hbApp qobject_cast(qApp) @@ -82,9 +83,9 @@ HsDefaultRuntime::HsDefaultRuntime(QObject *parent) : QStateMachine(parent), mContentService(0), - mHomeScreenActive(false), - mIdleStateActive(false), - mPublisher(NULL) + mHomeScreenActive(false), + mIdleStateActive(false), + mPublisher(NULL) #ifdef Q_OS_SYMBIAN ,keyCapture() #endif @@ -101,26 +102,35 @@ db->open(); HsDatabase::setInstance(db); - HsConfiguration::loadConfiguration(); - + HsConfiguration::setInstance(new HsConfiguration); + HsConfiguration::instance()->load(); + HsWidgetPositioningOnOrientationChange::setInstance( new HsAdvancedWidgetPositioningOnOrientationChange); HsWidgetPositioningOnWidgetAdd::setInstance( new HsAnchorPointInBottomRight); + HsWidgetPositioningOnWidgetMove::setInstance( + new HsSnapToLines); + + registerAnimations(); + createStatePublisher(); createContentServiceParts(); createStates(); assignServices(); - - QCoreApplication::instance()->installEventFilter(this); + + // create the instance so that singleton is accessible from elsewhere + HsShortcutService::instance(this); + + QCoreApplication::instance()->installEventFilter(this); if (hbApp) { // Qt test framework uses QApplication. - connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), - this, SLOT(activityRequested(QString))); + connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), + this, SLOT(activityRequested(QString))); } - HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime"); + HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime"); } /*! @@ -129,7 +139,7 @@ HsDefaultRuntime::~HsDefaultRuntime() { HsWidgetPositioningOnOrientationChange::setInstance(0); - delete mPublisher; + delete mPublisher; } /*! @@ -145,34 +155,44 @@ Q_UNUSED(watched); switch (event->type()) { - case QEvent::ApplicationActivate: + case QEvent::ApplicationActivate: qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate"; #ifdef Q_OS_SYMBIAN - keyCapture.captureKey(applicationKey); + keyCapture.captureKey(applicationKey); #endif mHomeScreenActive = true; updatePSKeys(); break; - case QEvent::ApplicationDeactivate: + case QEvent::ApplicationDeactivate: qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate"; #ifdef Q_OS_SYMBIAN - keyCapture.cancelCaptureKey(applicationKey); + keyCapture.cancelCaptureKey(applicationKey); #endif - mHomeScreenActive = false; + mHomeScreenActive = false; updatePSKeys(); break; default: break; - } + } bool result = QStateMachine::eventFilter(watched, event); // temporary hack as we should not register twice for events - if (event->type() == QEvent::KeyPress ) { + 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; + } + return result; +} + + +/*! + Registers framework animations. +*/ +void HsDefaultRuntime::registerAnimations() +{ + HbIconAnimationManager *manager = HbIconAnimationManager::global(); + manager->addDefinitionFile(QLatin1String("qtg_anim_loading.axml")); } /*! @@ -259,8 +279,14 @@ QState *menuWorkerState = qobject_cast(menuWorkerStateObj); menuWorkerState->setParent(menuParallelState); menuWorkerState->setObjectName(KHsMenuWorkerStateInterface); + connect(appLibraryState, SIGNAL(collectionEntered()), menuWorkerState, SIGNAL(reset())); + connect(appLibraryState, SIGNAL(allAppsStateEntered ()), + menuWorkerState, SIGNAL(reset())); + connect(appLibraryState, SIGNAL(allCollectionsStateEntered ()), + menuWorkerState, SIGNAL(reset())); + //Backup/Restore state QObject *backupRestoreStateObj = manager.loadInterface(KHsBacupRestoreStateInterface); QState *backupRestoreState = qobject_cast(backupRestoreStateObj); @@ -313,7 +339,9 @@ window, QEvent::KeyPress, Qt::Key_Launch0); menuToIdleTransition2->setTargetState(idleState); menuRootState->addTransition(menuToIdleTransition2); - + // add transition to switch to idle + menuRootState->addTransition( this, SIGNAL(event_toIdle()), idleState); + // transitions to child states // opening shortcut to a colleciton QList collectionStates = @@ -405,8 +433,15 @@ */ void HsDefaultRuntime::activityRequested(const QString &name) { - if (name == groupAppLibRecentView()){ - this->postEvent(HsMenuEventFactory::createOpenCollectionEvent(0, - collectionDownloadedTypeName())); + if (name == appLibActivity()) { + this->postEvent( + HsMenuEventFactory::createOpenAppLibraryEvent(NormalHsMenuMode)); + } + else if (name == groupAppLibRecentView()) { + this->postEvent( + HsMenuEventFactory::createOpenCollectionEvent(0, + collectionDownloadedTypeName())); + } else if (name == activityHsIdleView()) { + emit event_toIdle(); } }