ui/viewmanagement/statehandler/src/glxstatemanager.cpp
changeset 71 27f2d7aec52a
parent 69 45459746d5e8
child 72 0a8e959402e5
--- a/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Mon Sep 27 15:13:20 2010 +0530
+++ b/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Wed Oct 06 14:49:39 2010 +0530
@@ -22,8 +22,10 @@
 #include <hbnotificationdialog.h>
 #include <QProcess>
 #include <hbinstance.h>
-#include <HbActivityManager.h>
 #include <hbapplication.h>
+#include <afactivitystorage.h>
+#include <afactivation.h>
+
 
 //user includes
 #include "glxstatemanager.h"
@@ -63,13 +65,17 @@
       mActionHandler( NULL ),
       mTNObserver ( NULL ),
       isProgressbarRunning ( false ),
-      mFetcherFilterType ( EGlxFetcherFilterNone )
+      mFetcherFilterType ( EGlxFetcherFilterNone ),
+      mActivityStorage (NULL),
+      mActivation (NULL)
 {
     qDebug("GlxStateManager::GlxStateManager");
     PERFORMANCE_ADV ( d1, "view manager creation time") {
         mViewManager = new GlxViewManager();
     }
     mTNObserver = new GlxTNObserver();
+    mActivityStorage = new AfActivityStorage();
+    mActivation = new AfActivation();
     
     connect ( this, SIGNAL( setupItemsSignal() ), this, SLOT( setupItems() ), Qt::QueuedConnection );
     connect ( mViewManager, SIGNAL(actionTriggered( qint32 )), this, SLOT(actionTriggered( qint32 )), Qt::QueuedConnection );
@@ -80,7 +86,7 @@
 
 void GlxStateManager::enterMarkingMode()
 {
-    mViewManager->enterMarkingMode(mCurrentState->id());
+    mViewManager->enterMarkingMode( mCurrentState->id(), mCurrentState->commandId() );
 }
 
 void GlxStateManager::exitMarkingMode()
@@ -137,9 +143,10 @@
     qDebug("GlxStateManager::launchApplication");   
     bool activitySuccess = false;  
     //To:Do use it in future once performance code is removed nextState(GLX_GRIDVIEW_ID, ALL_ITEM_S)
-    HbApplication* app = qobject_cast<HbApplication*>(qApp);
-    if(app->activateReason() == Hb::ActivationReasonActivity) {
+    
+    if( mActivation->reason() == Af::ActivationReasonActivity ) {
         activitySuccess = launchActivity();
+        qDebug("GlxStateManager::launchApplication as Activity");
     }
     
     if( !activitySuccess ) { 
@@ -158,8 +165,8 @@
         mTNObserver->startTNObserving() ; 
     }
     
-    HbActivityManager* activityManager = app->activityManager();
-    bool ok = activityManager->removeActivity("PhotosMainView");
+    
+    bool ok = mActivityStorage->removeActivity("PhotosMainView");
     if ( !ok )
     {
          qDebug("launchapplication::Remove activity failed" );
@@ -168,19 +175,17 @@
 
 bool GlxStateManager::launchActivity()
 {
-    HbApplication* app = qobject_cast<HbApplication*>(qApp);
-    bool ok = app->activityManager()->waitActivity();
-    if ( !ok )
-    {
-        qDebug("subscribing to activity manager failed" );
-    }
-    QVariant data = app->activityManager()->activityData( "PhotosMainView" );
+    QVariant data = mActivityStorage->activityData("PhotosMainView");
     QByteArray serializedModel = data.toByteArray();
     QDataStream stream(&serializedModel, QIODevice::ReadOnly);
     
     //Fetch the data from the activity Manager
     stream >> mSaveActivity;  
-    qint32 stateId = mSaveActivity.value("ID");
+    
+    if(!validateActivityData())
+        return false;
+    
+	qint32 stateId = mSaveActivity.value("ID");
     mCurrentState = createState(stateId);
     mCurrentState->setState( mSaveActivity.value("InternalState") );
     createModel( stateId);
@@ -193,6 +198,26 @@
     return true;
 }
 
+bool GlxStateManager::validateActivityData()
+{
+    
+    if( (mSaveActivity.value("ID") == GLX_GRIDVIEW_ID) || 
+         ( (mSaveActivity.value("ID") == GLX_LISTVIEW_ID) && (mSaveActivity.value("InternalState") == ALL_ITEM_S) ) ||
+             (mSaveActivity.value("VisibleIndex") >= 0 ) ) {
+        qDebug("GlxStateManager::validation passed");
+        return true;
+    }
+    
+    qDebug("GlxStateManager::Validation failed");
+    qDebug("VIEW : %u", mSaveActivity.value("ID"));
+    qDebug("SUB STATE: %u", mSaveActivity.value("InternalState"));
+    qDebug("Visible Index: %u", mSaveActivity.value("VisibleIndex"));
+    
+    return false;
+     
+}
+
+
 void GlxStateManager::launchFromExternal()
 {
     qDebug("GlxStateManager::launchFromExternal");
@@ -276,7 +301,7 @@
  			mSaveActivity.insert("VisibleIndex",0);
  		}
     
-        HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+        
         QVariantHash metadata;
         HbMainWindow *window = hbInstance->allMainWindows().first();
         metadata.insert("screenshot", QPixmap::grabWidget(window, window->rect()));
@@ -284,11 +309,11 @@
         QByteArray serializedModel;
         QDataStream stream(&serializedModel, QIODevice::WriteOnly | QIODevice::Append);
         stream << mSaveActivity;
+        bool ok = mActivityStorage->saveActivity("PhotosMainView", serializedModel, metadata);
         
-        bool ok = activityManager->addActivity("PhotosMainView", serializedModel, metadata);
         if ( !ok )
         {
-            qDebug("SaveData::Add activity failed" );
+            qDebug("SaveData::Save activity failed" );
         }
     }
 }
@@ -794,6 +819,8 @@
     cleanAllModel();
     mSaveActivity.clear();
     delete mActionHandler;
+    delete mActivation;
+    delete mActivityStorage;
     qDebug("GlxStateManager::~GlxStateManager delete Model");
     
     disconnect ( mViewManager, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionTriggered(qint32 )) );