diff -r f00a6757af32 -r 5f0182e07bfb homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp Tue Aug 31 15:06:34 2010 +0300 @@ -0,0 +1,131 @@ +/* + * 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: Menu delete collection state + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "hsdeletecollectionstate.h" +#include "hsmenudialogfactory.h" +#include "hsmenuevent.h" + +/*! + \class HsDeleteCollectionState + \ingroup group_hsworkerstateplugin + \brief Delete Collection State. + Deletes collections. + */ + +/*! + Constructor. + \param parent Parent state. + */ +HsDeleteCollectionState::HsDeleteCollectionState(QState *parent) : + QState(parent), + mItemId(0), + mDeleteMessage(NULL), + mConfirmAction(NULL) +{ + construct(); +} + +/*! + Destructor. + */ +HsDeleteCollectionState::~HsDeleteCollectionState() +{ + cleanUp(); // in case of throw +} + +/*! + Constructs contained objects. + */ +void HsDeleteCollectionState::construct() +{ + setObjectName("/DeleteCollectionState"); + if (this->parent()) { + setObjectName(this->parent()->objectName() + objectName()); + } + connect(this, SIGNAL(exited()), SLOT(cleanUp())); +} + +/*! + Sets entry event. + \param event entry event. + */ +void HsDeleteCollectionState::onEntry(QEvent *event) +{ + HSMENUTEST_FUNC_ENTRY("HsDeleteCollectionState::onEntry"); + QState::onEntry(event); + qDebug("CollectionState::onEntry()"); + + HsMenuEvent *menuEvent = static_cast(event); + QVariantMap data = menuEvent->data(); + mItemId = data.value(Hs::itemIdKey).toInt(); + + QString message; + if (HsShortcutService::instance()->isItemShortcutWidget(mItemId)) { + message.append(HbParameterLengthLimiter( + "txt_applib_dialog_deletes_1_also_from_home_screen"). arg( + HsMenuService::getName(mItemId))); + } else { + message.append(HbParameterLengthLimiter("txt_applib_dialog_delete_1").arg( + HsMenuService::getName(mItemId))); + } + + // create and show message box + mDeleteMessage = HsMenuDialogFactory().create(message); + mConfirmAction = mDeleteMessage->actions().value(0); + mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*))); + + HSMENUTEST_FUNC_EXIT("HsDeleteCollectionState::onEntry"); +} + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void HsDeleteCollectionState::deleteMessageFinished(HbAction* finishedAction) +{ + if (static_cast(finishedAction) == mConfirmAction) { + HsMenuService::removeCollection(mItemId); + machine()->postEvent( + HsMenuEventFactory::createCollectionDeletedEvent()); + } + emit exit(); + mConfirmAction = NULL; +} + +/*! + Slot launched after state has exited and in destructor. + \retval void + */ +void HsDeleteCollectionState::cleanUp() +{ + // Close messagebox if App key was pressed + if (mDeleteMessage) { + mDeleteMessage->close(); + mDeleteMessage = NULL; + } + + mConfirmAction = NULL; + mItemId = 0; +}