homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h
changeset 35 f9ce957a272c
child 36 cdae8c6c3876
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Fri Mar 19 09:27:44 2010 +0200
@@ -0,0 +1,144 @@
+/*
+* 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 "hstest_global.h"
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+class QGraphicsItem;
+class QGraphicsSceneMouseEvent;
+class HbView;
+class HbAction;
+class HsIdleWidget;
+
+class HsIdleState : public QState
+{
+    Q_OBJECT
+
+public:
+    HsIdleState(QState *parent = 0);
+	~HsIdleState();
+
+signals:
+    void event_applicationLibrary();
+    void event_waitInput();
+    void event_widgetInteraction();
+    void event_sceneInteraction();
+    void event_moveWidget();
+    void event_moveScene();
+    void event_sceneMenu();
+    void event_selectSceneWallpaper();
+    void event_addPage();
+    void event_removePage();
+    void event_toggleConnection();
+
+private:
+    void setupStates();
+    qreal pageLayerXPos(int pageIndex) const;
+    void startPageChangeAnimation(int targetPageIndex, int duration);
+    bool isInPageChangeZone();
+    bool isInLeftPageChangeZone();
+    bool isInRightPageChangeZone();
+    void addPageToScene(int pageIndex);
+    qreal parallaxFactor() const;
+    
+private slots:
+    void action_disableUserInteraction();
+    void action_enableUserInteraction();    
+    void action_idle_setupView();
+    void action_idle_layoutNewWidgets();
+    void action_idle_showActivePage();
+    void action_idle_connectOrientationChangeEventHandler();
+    void action_idle_cleanupView();
+    void action_idle_disconnectOrientationChangeEventHandler();    
+    void action_waitInput_updateOptionsMenu();
+    void action_waitInput_connectMouseEventHandlers();
+    void action_waitInput_disconnectMouseEventHandlers();    
+    void action_widgetInteraction_connectMouseEventHandlers();
+    void action_widgetInteraction_connectGestureTimers();
+    void action_widgetInteraction_disconnectMouseEventHandlers();
+    void action_widgetInteraction_disconnectGestureTimers();    
+    void action_sceneInteraction_connectMouseEventHandlers();
+    void action_sceneInteraction_connectGestureTimers();
+    void action_sceneInteraction_disconnectMouseEventHandlers();
+    void action_sceneInteraction_disconnectGestureTimers();    
+    void action_moveWidget_reparentToControlLayer();
+    void action_moveWidget_startWidgetDragAnimation();
+    void action_moveWidget_connectMouseEventHandlers();
+    void action_moveWidget_connectGestureTimers();
+    void action_moveWidget_reparentToPage();
+    void action_moveWidget_startWidgetDropAnimation();
+    void action_moveWidget_disconnectMouseEventHandlers();
+    void action_moveWidget_disconnectGestureTimers();
+    void action_moveScene_connectMouseEventHandlers();
+    void action_moveScene_disconnectMouseEventHandlers();
+    void action_sceneMenu_showMenu();
+    void action_addPage_addPage();
+    void action_removePage_removePage();
+    void action_toggleConnection_toggleConnection();
+
+    void waitInput_onMousePressed(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void widgetInteraction_onMouseMoved(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void widgetInteraction_onMouseReleased(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void sceneInteraction_onMouseMoved(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void sceneInteraction_onMouseReleased(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void moveWidget_onMouseMoved(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void moveWidget_onMouseReleased(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void moveScene_onMouseMoved(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+    void moveScene_onMouseReleased(
+        QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
+
+    void onOrientationChanged(Qt::Orientation orientation);
+
+    void widgetInteraction_onTapAndHoldTimeout();
+    void sceneInteraction_onTapAndHoldTimeout();
+    void moveWidget_onHoldTimeout();
+
+#ifndef Q_OS_SYMBIAN
+    void switchLanguage();
+    void translateUi();
+#endif
+
+private:
+    HbView *mView;
+    HbAction *mSoftKeyAction;
+    HsIdleWidget *mUiWidget;
+    
+    QTimer mTimer;
+    qreal mTapAndHoldDistance;
+    qreal mPageChangeZoneWidth;
+
+    QPointF mSceneMenuPos;
+
+    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+#endif // HSIDLESTATE_H