diff -r acd4e87b24b4 -r 2f0af9ba7665 logsui/logsapp/src/logsviewmanager.cpp --- a/logsui/logsapp/src/logsviewmanager.cpp Fri Sep 17 16:47:32 2010 +0300 +++ b/logsui/logsapp/src/logsviewmanager.cpp Fri Oct 15 14:47:48 2010 +0300 @@ -24,7 +24,6 @@ #include "logsdefs.h" #include "logslogger.h" #include "logsservicehandler.h" -#include "logsservicehandlerold.h" #include "logsmainwindow.h" #include "logsappsettings.h" #include "logsforegroundwatcher.h" @@ -35,9 +34,10 @@ #include #include #include -#include #include #include +#include +#include // ----------------------------------------------------------------------------- // LogsViewManager::LogsViewManager @@ -45,12 +45,11 @@ // LogsViewManager::LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service, - LogsServiceHandlerOld& serviceOld, LogsAppSettings& settings) : QObject( 0 ), mMainWindow( mainWindow ), - mService( service ), mServiceOld( serviceOld ), mSettings( settings ), + mService( service ), mSettings( settings ), mFirstActivation(true), mViewActivationShowDialpad(false), - mBackgroundStartupWatcher(0) + mBackgroundStartupWatcher(0), mDialpadText(QString()) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::LogsViewManager()" ); @@ -69,14 +68,11 @@ connect( &mService, SIGNAL( activateView(QString) ), this, SLOT( changeMatchesViewViaService(QString) )); - connect( &mServiceOld, SIGNAL( activateView(XQService::LogsViewIndex, bool, QString) ), - this, SLOT( changeRecentViewViaService(XQService::LogsViewIndex, bool, QString) ) ); - - connect( &mServiceOld, SIGNAL( activateView(QString) ), - this, SLOT( changeMatchesViewViaService(QString) )); - QObject::connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(saveActivity())); + mActivityManager = new AfActivityStorage; + mActivation = new AfActivation; + handleFirstActivation(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::LogsViewManager()" ); @@ -90,7 +86,9 @@ LogsViewManager::~LogsViewManager() { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::~LogsViewManager()" ); - + + delete mActivation; + delete mActivityManager; delete mComponentsRepository; delete mBackgroundStartupWatcher; @@ -160,9 +158,9 @@ // ----------------------------------------------------------------------------- // bool LogsViewManager::activateView( - LogsAppViewId viewId, bool showDialpad, QVariant args) + LogsAppViewId viewId, bool showDialpad, QVariant args, const QString& dialpadText) { - return doActivateView(viewId, showDialpad, args); + return doActivateView(viewId, showDialpad, args, dialpadText ); } // ----------------------------------------------------------------------------- @@ -196,11 +194,11 @@ // Previously activated view is at slot 1 of view stack // ----------------------------------------------------------------------------- // -bool LogsViewManager::activatePreviousView() +bool LogsViewManager::activatePreviousView(bool showDialpad, const QString& dialpadText) { LogsAppViewId viewId = ( mViewStack.count() > 1 ) ? mViewStack.at(1)->viewId() : LogsRecentViewId; - return doActivateView(viewId, false, QVariant()); + return doActivateView(viewId, showDialpad, QVariant(), dialpadText); } // ----------------------------------------------------------------------------- @@ -249,6 +247,7 @@ mMainWindow.setInteractive(true); mViewActivationArgs = args; mViewActivationShowDialpad = showDialpad; + mDialpadText = dialpadText; completeViewActivation(); activated = true; } @@ -274,7 +273,7 @@ } else { disconnect( &mMainWindow, SIGNAL(viewReady()), this, SLOT(completeViewActivation()) ); LogsBaseView* newView = mViewStack.at(0); - newView->activated(mViewActivationShowDialpad, mViewActivationArgs); + newView->activated(mViewActivationShowDialpad, mViewActivationArgs, mDialpadText); connect( &mMainWindow, SIGNAL(callKeyPressed()), newView, SLOT(callKeyPressed()), Qt::UniqueConnection ); @@ -309,8 +308,7 @@ } clearActivities(); - - HbActivityManager* activityManager = static_cast(qApp)->activityManager(); + QVariantHash metaData; LOGS_QDEBUG( "logs [UI] Start taking screenshot" ); QImage* img = new QImage(mMainWindow.rect().size(), QImage::Format_ARGB32_Premultiplied); @@ -318,7 +316,7 @@ // Use render instead of QPixmap::grabWidget as otherwise screenshot // may become empty. mMainWindow.render( &p, mMainWindow.rect(), mMainWindow.rect() ); - metaData.insert("screenshot", QPixmap::fromImage(*img)); + metaData.insert(QString("screenshot"), QPixmap::fromImage(*img)); delete img; LOGS_QDEBUG( "logs [UI] End taking screenshot" ); @@ -334,7 +332,7 @@ QString activityId = mViewStack.at(0)->saveActivity(stream, metaData); // add the activity to the activity manager - bool ok = activityManager->addActivity(activityId, serializedActivity, metaData); + bool ok = mActivityManager->saveActivity(activityId, serializedActivity, metaData); if ( !ok ){ LOGS_QDEBUG( "logs [UI] activity adding failed" ); } @@ -348,9 +346,11 @@ bool LogsViewManager::loadActivity() { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::loadActivity()" ); - HbApplication* hbApp = static_cast(qApp); - QString activityId = hbApp->activateId(); - return doLoadActivity(activityId); + bool loaded = false; + if ( mActivation->reason() == Af::ActivationReasonActivity ){ + loaded = doLoadActivity(mActivation->name()); + } + return loaded; } // ----------------------------------------------------------------------------- @@ -359,11 +359,7 @@ // LogsAppViewId LogsViewManager::checkMatchesViewTransition( LogsAppViewId viewId, const QString& dialpadText) -{ - if ( !dialpadText.isEmpty() ){ - mComponentsRepository->dialpad()->editor().setText(dialpadText); - } - +{Q_UNUSED( dialpadText ); if ( viewId == LogsMatchesViewId ){ LogsModel* model = mComponentsRepository->model(); if ( model && model->predictiveSearchStatus() != logsContactSearchEnabled ){ @@ -391,17 +387,13 @@ setTaskSwitcherVisibility(false); } else { - Hb::ActivationReason reason = static_cast(qApp)->activateReason(); - bool isStartedByService( - mService.isStartedUsingService() || mServiceOld.isStartedUsingService() ); - // Start immediately using all possible resources mComponentsRepository->model()->refreshData(); - if ( reason == Hb::ActivationReasonActivity && loadActivity() ){ + if ( loadActivity() ){ LOGS_QDEBUG( "logs [UI] loaded saved activity" ); mMainWindow.bringAppToForeground(); - } else if ( mFirstActivation && !isStartedByService ) { + } else if ( mFirstActivation && !mService.isStartedUsingService() ) { activateDefaultView(); mMainWindow.bringAppToForeground(); } @@ -486,10 +478,13 @@ // // ----------------------------------------------------------------------------- // -void LogsViewManager::activityRequested(const QString &activityId) +void LogsViewManager::activityRequested( + Af::ActivationReason reason, QString name, QVariantHash parameters) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::activityRequested()" ); - if ( doLoadActivity(activityId) ){ + Q_UNUSED(reason); + Q_UNUSED(parameters); + if ( doLoadActivity(name) ){ mMainWindow.bringAppToForeground(); } LOGS_QDEBUG( "logs [UI] <- LogsViewManager::activityRequested()" ); @@ -502,8 +497,6 @@ void LogsViewManager::bgStartupForegroundGained() { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::bgStartupForegroundGained()" ); - delete mBackgroundStartupWatcher; - mBackgroundStartupWatcher = 0; endFakeExit(); mMainWindow.bringAppToForeground(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::bgStartupForegroundGained()" ); @@ -516,10 +509,9 @@ void LogsViewManager::doFakeExit() { saveActivity(); - HbActivityManager* activityManager = - static_cast(qApp)->activityManager(); - connect( activityManager, SIGNAL(activityRequested(QString)), - this, SLOT(activityRequested(QString)), Qt::UniqueConnection ); + connect( mActivation, SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)), + this, SLOT(activityRequested(Af::ActivationReason,QString,QVariantHash)), + Qt::UniqueConnection ); mComponentsRepository->model()->compressData(); setTaskSwitcherVisibility(false); } @@ -530,6 +522,8 @@ // void LogsViewManager::endFakeExit() { + delete mBackgroundStartupWatcher; + mBackgroundStartupWatcher = 0; setTaskSwitcherVisibility(true); mComponentsRepository->model()->refreshData(); if ( !mMainWindow.currentView() ){ @@ -544,14 +538,8 @@ // bool LogsViewManager::doLoadActivity(const QString& activityId) { - LOGS_QDEBUG( "logs [UI] -> LogsViewManager::doLoadActivity()" ); + LOGS_QDEBUG_2( "logs [UI] -> LogsViewManager::doLoadActivity():", activityId ); bool loaded = false; - HbApplication* hbApp = static_cast(qApp); - LOGS_QDEBUG_2( "logs [UI] activity id:", activityId ); - bool ok = hbApp->activityManager()->waitActivity(); - if ( !ok ){ - LOGS_QDEBUG( "logs [UI] Activity reschedule failed" ); - } LogsBaseView* matchingView = 0; for ( int i = 0; i < mViewStack.count() && !matchingView; i++ ){ @@ -560,8 +548,7 @@ } } - QList allParams = hbApp->activityManager()->activities(); - QVariantHash params = allParams.isEmpty() ? QVariantHash() : allParams.at(0); + QVariantHash params = mActivityManager->activityMetaData(activityId); LOGS_QDEBUG_2( "logs [UI] Activity params", params ); if ( !matchingView ){ @@ -571,14 +558,11 @@ } if ( matchingView ){ - // Should have only one param hash in the list, use first always - QList allParams = hbApp->activityManager()->activities(); - QVariantHash params = allParams.isEmpty() ? QVariantHash() : allParams.at(0); - LOGS_QDEBUG_2( "logs [UI] Activity params", params ); bool showDialpad = params.value(logsActivityParamShowDialpad).toBool(); QString dialpadText = params.value(logsActivityParamDialpadText).toString(); - QByteArray serializedActivity = hbApp->activateData().toByteArray(); + QByteArray serializedActivity = + mActivityManager->activityData(activityId).toByteArray(); QDataStream stream(&serializedActivity, QIODevice::ReadOnly); QVariant args = matchingView->loadActivity(activityId, stream, params); @@ -596,13 +580,11 @@ // void LogsViewManager::clearActivities() { - HbApplication* hbApp = static_cast(qApp); - HbActivityManager* activityManager = hbApp->activityManager(); foreach ( LogsBaseView* view, mViewStack ){ - view->clearActivity(*activityManager); + view->clearActivity(*mActivityManager); } - disconnect( activityManager, SIGNAL(activityRequested(QString)), - this, SLOT(activityRequested(QString)) ); + disconnect( mActivation, SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)), + this, SLOT(activityRequested(Af::ActivationReason,QString,QVariantHash)) ); } // ----------------------------------------------------------------------------- @@ -616,12 +598,7 @@ LOGS_QDEBUG_2( "logs [UI] -> LogsViewManager::activateViewViaService()", viewId ); clearActivities(); closeEmbeddedApplication(); - Dialpad* dpad = mComponentsRepository->dialpad(); - if ( !showDialpad ){ - dpad->closeDialpad(); - } - dpad->editor().setText(dialpadText); - if ( doActivateView(viewId, showDialpad, args, QString(), true) ){ + if ( doActivateView(viewId, showDialpad, args, dialpadText, true) ){ mMainWindow.bringAppToForeground(); } LOGS_QDEBUG( "logs [UI] <- LogsViewManager::activateViewViaService()" );