--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/ChromeLayout.h Tue Jun 29 00:46:29 2010 -0400
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program. If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+
+#ifndef __GINEBRA_CHROMELAYOUT_H__
+#define __GINEBRA_CHROMELAYOUT_H__
+
+#include <QtGui>
+
+class ControllableViewBase;
+class QGraphicsSceneContextMenuEvent;
+
+namespace GVA {
+
+ class ChromeSnippet;
+ class SlidingWidget;
+
+ enum ChromeAnchor
+ {
+ anchorNone,
+ anchorCenter,
+ anchorTop,
+ anchorBottom,
+ anchorLeft,
+ anchorRight,
+ anchorTopLeft,
+ anchorTopRight,
+ anchorBottomLeft,
+ anchorBottomRight
+ };
+
+ enum Aspect
+ {
+ portrait,
+ landscape
+ };
+
+
+ /*!
+ * \brief This class is responsible for laying out the snippets and views that constitute the UI
+ */
+
+ class ChromeLayout : public QGraphicsWidget
+ {
+
+ Q_OBJECT
+
+ public:
+ ChromeLayout(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0);
+ virtual ~ChromeLayout();
+ void addView(ControllableViewBase * controllableView);
+ void addSnippet(ChromeSnippet * snippet, ChromeSnippet * container);
+ void anchorSnippet(ChromeSnippet * snippet); //TODO: should be private, but is needed from ChromeWidget::anchorSnippet which is caled from ChromeSnippet
+ //NB: Should be deprecated (see comment in .cpp)
+ void adjustAnchorOffset(ChromeSnippet * snippet, qreal delta);
+ void anchorToView(ChromeSnippet* snippet, const QString & where = "top");
+ void detachFromView(ChromeSnippet* snippet, const QString & where = "top");
+ void anchorTogether(ChromeSnippet* first, ChromeSnippet * second, qreal x = 0, qreal y = 0);
+ void unAnchor(ChromeSnippet* first);
+ QGraphicsScene * scene() { return m_scene; }
+ void setScene(QGraphicsScene *scene);
+ int bottomBarHeight() { return m_bottomBarHeight;}
+ /// \brief Returns either "portrait" or "landscape".
+ QString getDisplayMode() const;
+ Q_PROPERTY(QString displayMode READ getDisplayMode)
+
+ public slots:
+ void snippetShown(ChromeSnippet * snippet);
+ void snippetHiding(ChromeSnippet * snippet);
+ qreal slideView(qreal delta);
+ qreal shrinkView(qreal delta);
+ int width(){ return (int)size().width(); }
+
+ signals:
+ void resizing(QSizeF newSize);
+ void aspectChanged(int aspect);
+
+ protected:
+ virtual void resizeEvent(QGraphicsSceneResizeEvent *ev);
+ virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent* event);
+
+ private:
+ void addAnchors();
+ QGraphicsScene * m_scene;
+ QGraphicsAnchorLayout *m_layout;
+ QGraphicsAnchorLayout *m_viewLayout;
+ SlidingWidget *m_viewPort;
+ QGraphicsWidget *m_topBar;
+ QGraphicsWidget *m_bottomBar;
+ QGraphicsWidget *m_leftBar;
+ QGraphicsWidget *m_rightBar;
+ Aspect m_aspect;
+ int m_bottomBarHeight;
+ };
+
+} // end of namespace GVA
+
+#endif // __GINEBRA_CHROMEWIDGET_H__