homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h
branchRCL_3
changeset 82 5f0182e07bfb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,174 @@
+/*
+* 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 HSIDLESTATE_H
+#define HSIDLESTATE_H
+
+#include <QState>
+#include <QTimer>
+#include <QPointF>
+#include <QPointer>
+#include <QRectF>
+
+#include "hswidgetpositioningonwidgetmove.h"
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+class QGraphicsItem;
+class QGraphicsSceneMouseEvent;
+
+class QGestureEvent;
+class HbAction;
+class HbContinuousFeedback;
+
+class HsTitleResolver;
+class QParallelAnimationGroup;
+class HbMenu;
+#ifdef Q_OS_SYMBIAN
+class XQSettingsManager;
+#endif
+
+class HsWidgetHost;
+class HsPage;
+class HsMessageBoxWrapper;
+
+
+class HsIdleState : public QState
+{
+    Q_OBJECT
+
+public:
+    HsIdleState(QState *parent = 0);
+    ~HsIdleState();
+
+signals:
+    void event_applicationLibrary();
+    void event_waitInput();
+    void event_moveWidget();
+    void event_moveScene();
+    void event_selectWallpaper();
+    void event_addPage();
+    void event_preRemovePage();
+    void event_removePage();
+    void event_toggleConnection();
+
+protected:
+    bool eventFilter(QObject *watched, QEvent *event);
+
+private:
+    Q_DISABLE_COPY(HsIdleState)
+    void setupStates();
+    qreal pageLayerXPos(int pageIndex) const;
+    void startPageChangeAnimation(int targetPageIndex, int duration);
+    void startPageChangeZoneAnimation(int duration);
+    bool isInPageChangeZone();
+    bool isInLeftPageChangeZone();
+    bool isInRightPageChangeZone();
+    void addPageToScene(int pageIndex);    
+    void updateZoneAnimation();
+    void showTrashBin();
+    QList<QRectF> createInactiveWidgetRects();
+    void updatePagePresentationToWidgetSnap();
+    void resetSnapPosition();
+    void showVerticalLine();
+    void showHorizontalLine();
+    void hideVerticalLine();
+    void hideHorizontalLine();
+
+private slots:    
+    void action_idle_setupView();
+    void action_idle_layoutNewWidgets();
+    void action_idle_showActivePage();
+    void action_idle_connectOrientationChangeEventHandler();
+    void action_idle_orientationChanged();
+    void action_idle_installEventFilter();
+    void action_idle_cleanupView();
+    void action_idle_disconnectOrientationChangeEventHandler();
+    void action_idle_uninstallEventFilter();
+    void action_waitInput_updateOptionsMenu();
+    void action_waitInput_connectGestureHandlers();
+    void action_waitInput_publishIdleKey();
+    void action_waitInput_disconnectGestureHandlers();
+    void action_waitInput_resetNewWidgets();
+    void action_moveWidget_reparentToControlLayer();
+    void action_moveWidget_startWidgetDragEffect();
+    void action_moveWidget_connectGestureHandlers();
+    void action_moveWidget_setWidgetSnap();
+
+    void action_moveWidget_reparentToPage();
+    void action_moveWidget_startWidgetDropEffect();
+    void action_moveWidget_disconnectGestureHandlers();
+    void action_moveWidget_preventZoneAnimation();
+    void action_moveWidget_deleteWidgetSnap();
+    void action_moveScene_connectGestureHandlers();
+    void action_moveScene_moveToNearestPage();
+    void action_moveScene_disconnectGestureHandlers();    
+    void action_addPage_addPage();
+    void action_preRemovePage_showQuery();
+    void action_preRemovePage_exit();
+    void action_removePage_startRemovePageAnimation();
+    void action_removePage_removePage();
+    void action_toggleConnection_toggleConnection();
+    void action_idle_setupTitle();
+    void action_idle_cleanupTitle();
+    
+    void onPageTapAndHoldFinished(QGestureEvent *event);
+    void onPagePanStarted(QGestureEvent *event);
+    void onPagePanUpdated(QGestureEvent *event);
+    void onPagePanFinished(QGestureEvent *event);
+    void onWidgetTapStarted(HsWidgetHost *widget);
+    void onWidgetTapAndHoldFinished(QGestureEvent *event, HsWidgetHost *widget);
+    void onWidgetMoveUpdated(const QPointF &scenePos, HsWidgetHost *widget);
+    void onWidgetMoveFinished(const QPointF &scenePos, HsWidgetHost *widget);
+    void onTitleChanged(QString title);
+    void onAddContentFromContextMenuActionTriggered();
+    void onAddContentFromOptionsMenuActionTriggered();
+    bool openTaskSwitcher();
+    void zoneAnimationFinished();
+    void pageChangeAnimationFinished();
+    void onVerticalSnapLineTimerTimeout();
+    void onHorizontalSnapLineTimerTimeout();
+    void onActivePageChanged();
+   
+private:
+    HbAction *mNavigationAction;
+    
+    HsTitleResolver *mTitleResolver;
+  
+    bool mAllowZoneAnimation;
+    
+    HbContinuousFeedback *mContinuousFeedback;
+    bool mTrashBinFeedbackAlreadyPlayed;    
+    QPointF mPageHotSpot;
+    QPointF mWidgetHotSpot;
+    QPointF mWidgetHotSpotOffset;
+    qreal mDeltaX;
+    QPointer<HbMenu> mSceneMenu;
+    HsWidgetPositioningOnWidgetMove::Result mSnapResult;
+    HsWidgetPositioningOnWidgetMove::Result mPreviousSnapResult;
+    QTimer mVerticalSnapLineTimer;
+    QTimer mHorizontalSnapLineTimer; 
+#ifdef Q_OS_SYMBIAN    
+    XQSettingsManager *mSettingsMgr;
+#endif    
+    HsMessageBoxWrapper *mMessageBoxWrapper;
+
+    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+#endif // HSIDLESTATE_H