diff -r bf4420e9fa4d -r 2e16851ffecd ginebra2/ChromeLayout.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ginebra2/ChromeLayout.h Thu Jul 22 16:30:16 2010 +0100 @@ -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 + +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__