homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp
branchRCL_3
changeset 82 5f0182e07bfb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,198 @@
+/*
+ * 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 All Collections state.
+ *
+ */
+#include <QPointF>
+#include <QScopedPointer>
+#include <QStateMachine>
+#include <HbView>
+#include <HbListView>
+#include <HbMenu>
+#include <HbAction>
+#include <HbAbstractViewItem>
+
+#include <cadefs.h>
+
+#include "hsmenumodewrapper.h"
+#include "hsmenueventfactory.h"
+#include "hsmenumodewrapper.h"
+#include "hsmenuitemmodel.h"
+#include "hsallcollectionsstate.h"
+#include "hsaddappstocollectionstate.h"
+#include "hsmainwindow.h"
+
+/*!
+ \class HsAllCollectionsState
+ \ingroup group_hsmenustateplugin
+ \brief All Collections State.
+ Displays all collections present on the device.
+ \lib ?library
+ \see StateMachine
+ */
+
+/*!
+ Constructor.
+ \param menuViewBuilder Menu view builder.
+ \param menuMode reference to object representing menu mode (add mode on/add mode off).
+ \param parent Owner.
+ */
+HsAllCollectionsState::HsAllCollectionsState(
+    HsMenuViewBuilder &menuViewBuilder,
+    HsMenuModeWrapper &menuMode,
+    HsMainWindow &mainWindow,
+    QState *parent):
+    HsBaseViewState(mainWindow, menuMode, parent)
+{
+    initialize(menuViewBuilder, HsAllCollectionsContext);
+    construct();
+}
+
+/*!
+ Constructs contained objects.
+ */
+void HsAllCollectionsState::construct()
+{
+    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::construct");
+    defineTransitions();
+    const QString parentName =
+        parent() != 0 ? parent()->objectName() : QString("");
+    setObjectName(parentName + "/allcollectionsstate");
+
+    connect(mBackKeyAction, SIGNAL(triggered()), SIGNAL(toAppLibraryState()));
+
+    mModel = HsMenuService::getAllCollectionsModel();
+    mMenuView->setModel(mModel);
+
+    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::construct");
+}
+
+/*!
+ Creates and installs menu options for the view.
+ */
+void HsAllCollectionsState::setMenuOptions()
+{
+    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::setMenuOptions");
+
+    mViewOptions->clearActions();
+    mViewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
+                           static_cast<HsBaseViewState*>(this),
+                           SLOT(openTaskSwitcher()));
+    mViewOptions->addAction(hbTrId("txt_applib_opt_new_collection"),
+                           this, SLOT(createNewCollection()));
+
+    mViewOptions->addAction(hbTrId("txt_applib_opt_arrange"),
+        this, SLOT(createArrangeCollection()));
+
+    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
+}
+
+/*!
+ Method seting context menu options.
+ \param item the context menu is requested for.
+ \param flags related to \a item.
+ */
+void HsAllCollectionsState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
+{
+    Q_UNUSED(item)
+
+    HbAction *openAction = mContextMenu->addAction(hbTrId(
+        "txt_common_menu_open"));
+    openAction->setData(Hs::OpenCollectionContextAction);
+
+    // create context menu
+    HbAction *addShortcutAction = mContextMenu->addAction(hbTrId(
+                                      "txt_applib_menu_add_to_home_screen"));
+    addShortcutAction->setData(Hs::AddToHomeScreenContextAction);
+    HbAction *renameAction = NULL;
+    HbAction *deleteAction = NULL;
+
+    if ((flags & RemovableEntryFlag)) {
+        renameAction = mContextMenu->addAction(
+                           hbTrId("txt_common_menu_rename_item"));
+        renameAction->setData(Hs::RenameCollectionContextAction);
+        deleteAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
+        deleteAction->setData(Hs::DeleteCollectionContextAction);
+    }
+}
+
+/*!
+ Destructor.
+ */
+HsAllCollectionsState::~HsAllCollectionsState()
+{
+}
+
+/*!
+ Slot invoked when normal mode is entered.
+*/
+void HsAllCollectionsState::normalModeEntered()
+{
+    HsBaseViewState::normalModeEntered();
+    connect(mMenuView.data(),
+            SIGNAL(activated(QModelIndex)),
+            static_cast<HsBaseViewState*>(this),
+            SLOT(openCollection(QModelIndex)));
+}
+
+/*!
+ Slot invoked when normal mode is exited.
+*/
+void HsAllCollectionsState::normalModeExited()
+{
+
+}
+
+
+/*!
+ Slot invoked when a state is exited.
+ */
+void HsAllCollectionsState::stateExited()
+{
+    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::stateExited");
+
+    HsBaseViewState::stateExited();
+
+    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::stateExited");
+    qDebug("AllCollectionsState::stateExited()");
+}
+
+/*!
+ Slot connected to constructMenu.
+ */
+void HsAllCollectionsState::createNewCollection()
+{
+    // Adding a new collection via the Collections view
+    machine()->postEvent(HsMenuEventFactory::createNewCollectionEvent());
+}
+
+/*!
+ Slot connected to constructMenu.
+ */
+void HsAllCollectionsState::createArrangeCollection()
+{
+    // Arrange collection via the Arrange view
+    int topItemId(0);
+
+    const QList<HbAbstractViewItem *> array =
+        mMenuView->listView()->visibleItems();
+
+    if (array.count() >= 1) {
+        QModelIndex idx = array[0]->modelIndex();
+        topItemId = idx.data(CaItemModel::IdRole).toInt();
+    }
+
+    machine()->postEvent(
+        HsMenuEventFactory::createArrangeAllCollectionsEvent(topItemId));
+}