homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:27:44 +0200
changeset 35 f9ce957a272c
child 39 4e8ebe173323
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
 * 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:
 *
 */

#ifndef ADDAPPSTOCOLLECTIONSTATE_H
#define ADDAPPSTOCOLLECTIONSTATE_H

#include <QState>
#include <QVariant>
#include <hsmenuservice.h>
#include "hsmenustates_global.h"
HS_STATES_TEST_CLASS(MenuStatesTest)

class QStandardItemModel;
class HsAppsCheckList;

/**
 * @ingroup group_hsmenustateplugin
 * @brief Application Library State.
 *
 * State responsible for adding new applications to collections.
 *
 * @see StateMachine
 *
 * @lib ?library
 * @since S60 ?S60_version
 */
class HsAddAppsToCollectionState: public QState
{
    Q_OBJECT

    // Friend classes
    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)

public:

    /**
     * Types of collection's related actions.
     */
    enum CollectionActionType {
        // No action
        NoActionType,
        // Adding a specific application to an existing collection via item specific menu
        ViaItemSpecificMenuType = 1000,
        // Add one/many applications to a new/an existing collection via the All view
        ViaAllViewOptionMenuType,
        // Adding a new collection via the Collections view
        ViaAllCollectionsViewType,
        // Add items to a collection via the collection's view options meu
        ViaCollectionsViewOptionsMenuType,
        // Add a specific item to a collection via collection specific menu
        ViaCollectionSpecificMenuType
    };

    HsAddAppsToCollectionState(QState *parent = 0);
    virtual ~HsAddAppsToCollectionState();

signals:

    /**
     * Signal emitted when collection name is selected.
     *
     * @since S60 ?S60_version.
     * @param collectionName name of collection.
     */
    void transitToSaveState(const QString &collectionName);

    /**
     * Signal emitted when collection name is selected - version to trigger
     * transition to mAppCheckListState.
     *
     * @since S60 ?S60_version.
     * @param collectionName name of collection.
     */
    void transitToAppsCheckListState(const QString &collectionName);

    /**
     * Signal emitted when collection id is selected.
     *
     * @since S60 ?S60_version.
     * @param collectionId id of collection.
     */
    void transitToSaveState(int collectionId);

    /**
     * Signal emitted when collection id is selected - version to trigger
     * transition to mAppCheckListState.
     *
     * @since S60 ?S60_version.
     * @param collectionId id of collection.
     */
    void transitToAppsCheckListState(int collectionId);

    /**
     * Signal emitted when user selects creating new collection.
     *
     * @since S60 ?S60_version.
     */
    void transitToNewCollectionState();

    /**
     * Signal emitted when applications are selected.
     *
     * @param appList application list.
     * @since S60 ?S60_version.
     */
    void transitToSaveState(const QList<int> &appList);

    /**
     * Signal emitted when user selects cancel.
     *
     * @since S60 ?S60_version.
     */
    void transitToFinalState();

protected:

    void onEntry(QEvent *event);

    void showMessageAppsAdded(int id);

protected slots:

    void setCollectionName(const QString &collectionName);

    void setCollectionId(int collectionId);

    void setAppList(const QList<int> &appList);

    void save();

    void cleanData();

    void selectApplicationsDone(const QList<int> &appList);

private slots:

    void stateExited();

    void newCollection();

    void selectCollection();

    void appsCheckListState();

private:

    void construct();

    void createStates();

private:

    /**
     * Collection name.
     */
    QString mCollectionName;

    /**
     * Collection id.
     */
    int mCollectionId;

    /**
     * Applications list.
     */
    QList<int> mAppList;

    /**
     * Boll indicating need of confirmation note after saving in content arsenal.
     */
    bool mShowConfirmation;

    /**
     * Initial state.
     */
    QState *mInitialState;

    /**
     * Select collection state.
     */
    QState *mSelectCollectionState;

    /**
     * Collection name state.
     */
    QState *mNewCollectionState;

    /**
     * Collection name state.
     */
    QState *mAppsCheckListState;

    /**
     * Collection action type.
     */
    CollectionActionType mActionType;

    /**
     * Applications sort order.
     */
    HsSortAttribute mApplicationsSortAttribute;

    /**
     * Collections sort order.
     */
    HsSortAttribute mCollectionsSortAttribute;

    /**
     * Applications check list.
     */
    HsAppsCheckList *mAppsCheckList;

};

#endif /* ADDAPPSTOCOLLECTIONSTATE_H */