diff -r 4785f57bf3d4 -r 03646e8da489 homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp Fri Jun 11 13:30:16 2010 +0300 @@ -0,0 +1,147 @@ +/* + * 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 item state + * + */ + +#include +#include +#include +#include + +#include "hsuninstallitemstate.h" +#include "hsmenuevent.h" + +/*! + \class HsUninstallItemState + \ingroup group_hsworkerstateplugin + \brief Uninstall Item State. + Deletes app from collection. + */ + +/*! + Constructor. + \param parent Owner. + */ +HsUninstallItemState::HsUninstallItemState(QState *parent) : + QState(parent), + mItemId(0), + mUninstallMessage(NULL), + mConfirmAction(NULL) +{ + construct(); +} + +/*! + Destructor. + */ +HsUninstallItemState::~HsUninstallItemState() +{ + cleanUp(); // in case of throw +} + +/*! + Constructs contained objects. + */ +void HsUninstallItemState::construct() +{ + setObjectName(this->parent()->objectName() + + "/UninstallItemState"); + setProperty(HS_SERVICES_REGISTRATION_KEY, QList () + << SHORTCUT_SERVICE_KEY); + connect(this, SIGNAL(exited()), SLOT(cleanUp())); +} + +/*! + Sets entry event. + \param event entry event. + */ +void HsUninstallItemState::onEntry(QEvent *event) +{ + HSMENUTEST_FUNC_ENTRY("HsUninstallItemState::onEntry"); + QState::onEntry(event); + qDebug("HsUninstallItemState::onEntry()"); + HsMenuEvent *menuEvent = static_cast(event); + QVariantMap data = menuEvent->data(); + + mItemId = data.value(itemIdKey()).toInt(); + + QString message; + if (shortcutService()->isItemShortcutWidget(mItemId)) { + message.append( + hbTrId("txt_applib_dialog_uninstalls_1_and_deletes_all_sh").arg( + HsMenuService::getName(mItemId))); + } else { + message.append( + hbTrId("txt_applib_dialog_1_will_be_removed_from_phone_c").arg( + HsMenuService::getName(mItemId))); + } + + // create and show message box + mUninstallMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion); + mUninstallMessage->setAttribute(Qt::WA_DeleteOnClose); + + mUninstallMessage->setText(message); + + mUninstallMessage->clearActions(); + mConfirmAction = new HbAction(hbTrId("txt_common_button_ok"), mUninstallMessage); + mUninstallMessage->addAction(mConfirmAction); + + HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"), mUninstallMessage); + mUninstallMessage->addAction(secondaryAction); + + mUninstallMessage->open(this, SLOT(uninstallMessageFinished(HbAction*))); + + HSMENUTEST_FUNC_EXIT("HsUninstallItemState::onEntry"); +} + +/*! + Action after closed confirmation dialog. + \param finishedAction chosen action. + \retval void + */ +void HsUninstallItemState::uninstallMessageFinished(HbAction* finishedAction) +{ + if (finishedAction == mConfirmAction) { + HsMenuService::executeAction(mItemId, removeActionIdentifier()); + } + emit exit(); +} + +/*! + Convenience method returning the shortcut service. + \since S60 ?S60_version. + \return Shortcut Service. + */ +HsShortcutService *HsUninstallItemState::shortcutService() const +{ + return property(SHORTCUT_SERVICE_KEY).value (); +} + +/*! + Slot launched after state has exited and in destructor. + \retval void + */ +void HsUninstallItemState::cleanUp() +{ + // Close messagebox if App key was pressed + if (mUninstallMessage) { + disconnect(mUninstallMessage, SIGNAL(finished(HbAction*)), this, SLOT(uninstallMessageFinished(HbAction*))); + mUninstallMessage->close(); + mUninstallMessage = NULL; + } + + mConfirmAction = NULL; + mItemId = 0; +}