diff -r fa1df4b99609 -r ebe688cedc25 messagingapp/msgui/msgapp/src/msgactivityhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgui/msgapp/src/msgactivityhandler.cpp Tue Aug 31 15:11:31 2010 +0300 @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * Handles saving and opening activites. + * + */ + +#include "msgactivityhandler.h" + +#include "msgviewmanager.h" +#include "msgbaseview.h" +#include "msgmainwindow.h" +#include +#include +#include + +const int INVALID_MSGID = -1; +// Activity Names +const QString ListViewActivityName("MsgConversationsList"); +const QString EditorActivityName("MsgCreate"); + +//----------------------------------------------------------------------------- +// MsgActivityHandler::MsgActivityHandler +// Constructor +//----------------------------------------------------------------------------- +MsgActivityHandler::MsgActivityHandler(QObject* parent): + QObject(parent) +{ + +} + +//----------------------------------------------------------------------------- +// MsgActivityHandler::MsgActivityHandler +// Destructor +//----------------------------------------------------------------------------- +MsgActivityHandler::~MsgActivityHandler() +{ + +} + +//----------------------------------------------------------------------------- +// MsgActivityHandler::saveActivity +// @see header +//----------------------------------------------------------------------------- +void MsgActivityHandler::saveActivity() +{ + HbActivityManager* activityManager = + qobject_cast(qApp)->activityManager(); + + int currentView = mMainWindow->viewManager()->currentView(); + int msgId = INVALID_MSGID; + if((currentView == MsgBaseView::CV) || (currentView== MsgBaseView::UNIEDITOR)) + { + msgId = mMainWindow->viewManager()->saveContentToDraft(); + } + + // get a screenshot for saving to the activity manager + QVariantHash metadata; + metadata.insert("screenshot", + QPixmap::grabWidget(mMainWindow, mMainWindow->rect())); + + // save any data necessary to save the state + QByteArray serializedActivity; + QDataStream stream(&serializedActivity, + QIODevice::WriteOnly | QIODevice::Append); + + if( msgId != INVALID_MSGID) + { + stream << EditorActivityName; + stream << msgId; + + // add the activity to the activity manager + bool ok = activityManager->addActivity(EditorActivityName, + serializedActivity, metadata); + } + else + { + stream << ListViewActivityName; + + // add the activity to the activity manager + bool ok = activityManager->addActivity(ListViewActivityName, + serializedActivity, metadata); + } +} + +//----------------------------------------------------------------------------- +// MsgActivityHandler::parseActivityData +// @see header +//----------------------------------------------------------------------------- +int MsgActivityHandler::parseActivityData(const QVariant &activityData) +{ + QByteArray serializedModel = activityData.toByteArray(); + QDataStream stream(&serializedModel, QIODevice::ReadOnly); + + QString activityName; + int msgId = INVALID_MSGID; + stream >> activityName; + if( activityName == EditorActivityName) + { + stream >> msgId; + } + return msgId; +} + +//----------------------------------------------------------------------------- +// MsgActivityHandler::clearActivities +// @see header +//----------------------------------------------------------------------------- +void MsgActivityHandler::clearActivities() +{ + HbActivityManager* activityManager = + qobject_cast(qApp)->activityManager(); + activityManager->removeActivity(ListViewActivityName); + activityManager->removeActivity(EditorActivityName); +} + +//----------------------------------------------------------------------------- +// MsgActivityHandler::setMainWindow +// @see header +//----------------------------------------------------------------------------- +void MsgActivityHandler::setMainWindow(MsgMainWindow* mainWindow) +{ + mMainWindow = mainWindow; +}