src/hbcore/gui/hbmainwindow_p.h
changeset 0 16d8024aca5e
child 1 f7ac710697a9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/gui/hbmainwindow_p.h	Mon Apr 19 14:02:13 2010 +0300
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#ifndef HBMAINWINDOW_P_H
+#define HBMAINWINDOW_P_H
+
+#include <QList>
+#include <QTimeLine>
+#include <QGraphicsWidget>
+#include <QPointer>
+
+#include "hbglobal.h"
+#include "hbmainwindow.h"
+#include "hbtitlepane_p.h"
+#include "hbwidget_p.h"
+#include "hbwidget.h"
+#include "hbnamespace_p.h"
+#include "hbdeviceprofile.h"
+#include "hbeffect.h"
+#include "hbeffectinternal_p.h"
+
+class HbBackgroundItem;
+class HbGraphicsScene;
+class HbTitleBar;
+class HbStatusBar;
+class HbToolBar;
+class HbView;
+class HbScreen;
+class HbDockWidget;
+class HbContentWidget;
+class HbTheTestUtility;
+
+#ifdef Q_OS_SYMBIAN
+class HbNativeWindow;
+#endif
+
+class HB_CORE_PRIVATE_EXPORT HbMainWindowPrivate : public QObject
+{
+    Q_OBJECT
+    Q_DECLARE_PUBLIC(HbMainWindow)
+
+public:
+
+    HbMainWindowPrivate();
+    virtual ~HbMainWindowPrivate();
+
+    void init();
+
+    HbToolBar *toolBar() const;
+    void addToolBarToLayout(HbToolBar *toolBar);
+    void removeToolBarFromLayout(HbToolBar *toolBar);
+    HbDockWidget *dockWidget() const;
+    void addDockWidgetToLayout(HbDockWidget *dockWidget);
+    void removeDockWidgetFromLayout(HbDockWidget *dockWidget);
+    void updateVisibleItems();
+    QRectF contentRect() const;
+    void setTransformedOrientation(Qt::Orientation orientation, bool animate = true);
+    qreal rotation() const;
+
+    void select(const HbDeviceProfile &profile, HbDeviceProfile *oldGlobalProfile = 0);
+    HbDeviceProfile profile() const;
+    HbDeviceProfile adjustedProfile(const HbDeviceProfile &profile) const;
+
+    void broadcastEvent(int eventType);
+    void broadcastEvent(QEvent* event);
+
+    void changeSceneSize();
+    void updateRotationEffects();
+    void addBackgroundItem();
+    void removeBackgroundItem();
+    void initGestures();
+
+    void postIdleEvent(int eventId);
+
+    void fadeScreen(qreal zValue);
+    void unfadeScreen();
+
+    void _q_viewReady();
+
+    HbGraphicsScene *mScene;
+    HbBackgroundItem *mBgItem;
+    HbScreen *mClippingItem;
+    HbContentWidget *mViewStackWidget;
+    HbTitleBar *mTitleBar;
+    HbStatusBar *mStatusBar;
+    HbWidget *mFadeItem;
+    QGraphicsWidget *mRootItem;
+    QGraphicsWidget *mEffectItem;
+    Qt::Orientation mDefaultOrientation;
+    qreal mOrientationAngle;
+    
+    QList<QGraphicsItem*> mItemList;
+    QList<QGraphicsItem*> mOrientationChangeEffectItems;
+
+    bool mAutomaticOrientationSwitch;
+    bool mOrientationChangeOngoing;
+    bool mAnimateOrientationSwitch;
+    bool mGVOrientationChangeEffectEnabled;
+    Qt::Orientation mOrientation;
+
+    HbToolBar *mCurrentToolbar;
+    HbDockWidget *mCurrentDockWidget;
+
+    Hb::SceneItems mVisibleItems;
+    bool mForceSetOrientation; // for resize case
+
+    typedef QPointer<QGraphicsWidget> QGraphicsWidgetPtr;
+    struct BroadcastItem {
+        QEvent *mEvent;
+        QList<QGraphicsWidgetPtr> mPending;
+    };
+    QMap<int, BroadcastItem> mBroadcastItems;
+    HbDeviceProfile mCurrentProfile;
+
+    bool mDelayedConstructionHandled;
+
+    HbMainWindow *q_ptr;
+    HbTheTestUtility *mTheTestUtility;
+    HbGVWrapperItem mGVWrapperItem;
+
+    bool mIdleEventHandled;
+    
+    mutable HbDeviceProfile mAlternateProfile;
+
+#ifdef Q_OS_SYMBIAN
+    HbNativeWindow *mNativeWindow;
+#endif
+
+    void rootItemFirstPhaseDone(const HbEffect::EffectStatus& status);
+    void rootItemFinalPhaseDone(const HbEffect::EffectStatus& status);
+    void orientationEffectFinished(const HbEffect::EffectStatus& status);
+        
+    void addOrientationChangeEffects();
+    void addViewEffects();
+    void _q_viewChanged(int);
+    void _q_viewRemoved(QGraphicsWidget *widget);
+    void _q_viewTitleChanged(const QString &title);
+    void _q_viewToolBarChanged();
+    void _q_viewDockWidgetChanged();
+    void _q_launchMenu(const QPointF &pos);
+    void _q_viewVisibleItemsChanged();
+    void _q_contentFullScreenChanged();
+    void _q_themeChanged();
+    void _q_continueBroadcasting(int type);
+    void _q_restoreTitlePane();
+    void _q_delayedConstruction();
+
+    static bool dragToResizeEnabled;
+    static bool initializeInputs;
+
+    static const int IdleEvent;
+    static const int IdleOrientationEvent;
+    static const int IdleOrientationFinalEvent;
+
+signals:
+    void idleEventDispatched();
+
+private:
+    static HbMainWindowPrivate *d_ptr(HbMainWindow *mainWindow) {
+        Q_ASSERT(mainWindow);
+        return mainWindow->d_func();
+    }
+    friend class HbPopupManagerPrivate;
+    friend class HbInstance;
+    friend class HbInstancePrivate;
+    friend class HbDeviceProfileManager;
+    friend class HbDeviceProfile;
+    friend class HbView;
+    friend class HbVgEffectPrivate;
+    friend class HbContentWidget;
+    friend class HbSplashGenerator;
+    friend class TestHbDeviceProfile;
+    friend class TestHbGridView;
+    friend class TestHbMainWindow;
+    friend class HbMainWindowOrientation;
+    friend class HbScreen;
+    friend class HbSettingsWindow;
+	friend class TestHbSensorOrientation;
+};
+
+#endif // HBMAINWINDOW_P_H