author | nemo |
Mon, 02 May 2011 01:55:14 -0400 | |
changeset 5197 | 9fa96377a69c |
parent 4520 | e7882bd1a894 |
permissions | -rw-r--r-- |
/* * Copyright (c) 2009 Nokia Corporation. */ #ifndef QASPECTRATIOLAYOUT_H_ #define QASPECTRATIOLAYOUT_H_ #include <QLayout> #include <QPointer> #include <QRect> #include <QWidgetItem> #include <QLayoutItem> class QAspectRatioLayout : public QLayout { Q_OBJECT public: QAspectRatioLayout(QWidget* parent, int spacing =-1); QAspectRatioLayout(int spacing = -1); ~QAspectRatioLayout(); /* Convenience method */ virtual void add(QLayoutItem* item); /* http://doc.trolltech.com/qlayout.html#addItem */ virtual void addItem(QLayoutItem* item); /* http://doc.trolltech.com/qlayout.html#addWidget */ virtual void addWidget(QWidget* widget); /* http://doc.trolltech.com/qlayout.html#takeAt */ virtual QLayoutItem* takeAt(int index); /* http://doc.trolltech.com/qlayout.html#itemAt */ virtual QLayoutItem* itemAt(int index) const; /* http://doc.trolltech.com/qlayout.html#count */ virtual int count() const; /* * These are ours since we do have only one item. */ virtual QLayoutItem* replaceItem(QLayoutItem* item); virtual QLayoutItem* take(); virtual bool hasItem() const; /* http://doc.trolltech.com/qlayout.html#expandingDirections */ virtual Qt::Orientations expandingDirections() const; /* * This method contains most of the juice of this article. * http://doc.trolltech.com/qlayoutitem.html#setGeometry */ virtual void setGeometry(const QRect& rect); /* http://doc.trolltech.com/qlayoutitem.html#geometry */ virtual QRect geometry(); /* http://doc.trolltech.com/qlayoutitem.html#sizeHint */ virtual QSize sizeHint() const; /* http://doc.trolltech.com/qlayout.html#minimumSize */ virtual QSize minimumSize() const; /* http://doc.trolltech.com/qlayoutitem.html#hasHeightForWidth */ virtual bool hasHeightForWidth() const; private: /* Saves the last received rect. */ void setLastReceivedRect(const QRect& rect); /* Used to initialize the object. */ void init(int spacing); /* Calculates the maximum size for the item from the assigned size. */ QSize calculateProperSize(QSize from) const; /* Calculates the center location from the assigned size and * the items size. */ QPoint calculateCenterLocation(QSize from, QSize itemSize) const; /* Check if two QRects are equal */ bool areRectsEqual(const QRect& a, const QRect& b) const; /* Contains item reference */ QLayoutItem* item; /* * Used for caching so we won't do calculations every time * setGeometry is called. */ QRect* lastReceivedRect; /* Contains geometry */ QRect* _geometry; }; #endif /* QASPECTRATIOLAYOUT_H_ */