homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp
changeset 51 4785f57bf3d4
parent 46 23b5d6a29cce
child 60 30f14686fb04
child 62 341166945d65
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Thu May 27 12:46:08 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <QState>
 #include <QFinalState>
+#include <QHistoryState>
 #include <QSignalTransition>
 #include <QKeyEventTransition>
 #include <QKeyEvent>
@@ -26,10 +27,13 @@
 #include <qservicefilter.h>
 #include <qserviceinterfacedescriptor.h>
 
+#include <HbApplication>
+#include <HbActivityManager>
 #include <HbInstance>
 #include <HbIconAnimationManager>
 #include <HbIconAnimationDefinition>
 
+#include "hsmenueventfactory.h"
 #include "homescreendomainpskeys.h"
 #include "hsdefaultruntime.h"
 #include "hsdatabase.h"
@@ -39,12 +43,10 @@
 #include "hswidgetpositioningonorientationchange.h"
 #include "hswidgetpositioningonwidgetadd.h"
 #include "hstest_global.h"
-#ifdef Q_OS_SYMBIAN
-#include "hsbackuprestoreobserver.h"
-#endif
+#include "hsconfiguration.h"
 
 QTM_USE_NAMESPACE
-
+#define hbApp qobject_cast<HbApplication*>(qApp)
 
 #ifdef Q_OS_SYMBIAN
 const static Qt::Key applicationKey = Qt::Key_Menu;
@@ -54,10 +56,12 @@
 
 namespace
 {
+    const char KHsRootStateInterface[] = "com.nokia.homescreen.state.HsRootState";
     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";
+    const char KHsBacupRestoreStateInterface[] = "com.nokia.homescreen.state.HsBackupRestoreState";
 }
 
 
@@ -83,7 +87,6 @@
 	  mPublisher(NULL)
 #ifdef Q_OS_SYMBIAN
 	  ,keyCapture()
-	  ,mBRObserver(NULL)
 #endif
 {
     HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::HsDefaultRuntime");
@@ -98,16 +101,13 @@
     db->open();
     HsDatabase::setInstance(db);
 
+    HsConfiguration::loadConfiguration();
+
     HsWidgetPositioningOnOrientationChange::setInstance(
         new HsAdvancedWidgetPositioningOnOrientationChange);
 
     HsWidgetPositioningOnWidgetAdd::setInstance(
         new HsAnchorPointInBottomRight);
-    
-#ifdef Q_OS_SYMBIAN
-    mBRObserver = CHsBackupRestoreObserver::NewL();
-#endif
-    registerAnimations();
 
     createStatePublisher();
     createContentServiceParts();
@@ -115,7 +115,12 @@
     assignServices();
     
 	QCoreApplication::instance()->installEventFilter(this);
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime");
+
+    if (hbApp) { // Qt test framework uses QApplication.
+	    connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), 
+	            this, SLOT(activityRequested(QString)));
+    }
+	HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime");
 }
 
 /*!
@@ -125,9 +130,6 @@
 {
     HsWidgetPositioningOnOrientationChange::setInstance(0);
 	delete mPublisher;
-#ifdef Q_OS_SYMBIAN	
-	delete mBRObserver;
-#endif
 }
 
 /*!
@@ -174,15 +176,6 @@
 }
 
 /*!
-    Registers framework animations.
-*/
-void HsDefaultRuntime::registerAnimations()
-{
-    HbIconAnimationManager *manager = HbIconAnimationManager::global();
-    manager->addDefinitionFile(QLatin1String(":/resource/tapandhold.axml"));
-}
-
-/*!
     Creates Home screen state publisher.
 */
 void HsDefaultRuntime::createStatePublisher()
@@ -232,19 +225,22 @@
     loadSceneState->setParent(guiRootState);
     loadSceneState->setObjectName(KHsLoadSceneStateInterface);
 
+    QObject *rootStateObj = manager.loadInterface(KHsRootStateInterface);
+    QState *rootState = qobject_cast<QState *>(rootStateObj);   
+    rootState->setParent(guiRootState);
+    rootState->setObjectName(KHsRootStateInterface);       
+
     QObject *idleStateObj = manager.loadInterface(KHsIdleStateInterface);
     QState *idleState = qobject_cast<QState *>(idleStateObj);
-    idleState->setParent(guiRootState);
+    idleState->setParent(rootState);
     idleState->setObjectName(KHsIdleStateInterface);
 	connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered()));
 	connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited()));
 
-    loadSceneState->addTransition(
-            loadSceneState, SIGNAL(event_idle()), idleState);
 
     //menu state
     QState *menuParallelState = new QState(
-            QState::ParallelStates, guiRootState);
+            QState::ParallelStates, rootState);
     QState *menuRootState = new QState(menuParallelState);
 
     QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface);
@@ -253,15 +249,31 @@
     appLibraryState->setObjectName(KHsAppLibraryStateInterface);
     menuRootState->setInitialState(appLibraryState);
 
+    QHistoryState *historyState = new QHistoryState(rootState);
+    historyState->setDefaultState(idleState);
+    
+    loadSceneState->addTransition(
+            loadSceneState, SIGNAL(event_history()), historyState);            
+
     QObject *menuWorkerStateObj = manager.loadInterface(KHsMenuWorkerStateInterface);
     QState *menuWorkerState = qobject_cast<QState *>(menuWorkerStateObj);
     menuWorkerState->setParent(menuParallelState);
     menuWorkerState->setObjectName(KHsMenuWorkerStateInterface);
+    connect(appLibraryState, SIGNAL(collectionEntered()), 
+            menuWorkerState, SIGNAL(reset()));
+    //Backup/Restore state
+    QObject *backupRestoreStateObj = manager.loadInterface(KHsBacupRestoreStateInterface);
+    QState *backupRestoreState = qobject_cast<QState *>(backupRestoreStateObj);   
+    backupRestoreState->setParent(guiRootState);
+    backupRestoreState->setObjectName(KHsBacupRestoreStateInterface);
+    backupRestoreState->addTransition(
+            backupRestoreState, SIGNAL(event_loadScene()), loadSceneState);
 
     // root state transitions
     idleState->addTransition(idleState, SIGNAL(event_applicationLibrary()), menuRootState);
     appLibraryState->addTransition(
             appLibraryState, SIGNAL(toHomescreenState()), idleState);
+    rootState->addTransition(rootState, SIGNAL(event_backupRestore()), backupRestoreState);
     // opening shortcut to Application Library
     HsMenuEventTransition *idleToAppLibTransition =
         new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
@@ -387,3 +399,14 @@
 	mIdleStateActive = false;
 	updatePSKeys();
 }
+
+/*!
+    Activity requested by another client 
+*/
+void HsDefaultRuntime::activityRequested(const QString &name) 
+{
+    if (name == groupAppLibRecentView()){
+        this->postEvent(HsMenuEventFactory::createOpenCollectionEvent(0, 
+                collectionDownloadedTypeName()));
+    }
+}