GCI2012: Improve Game Configuration Widget
- Refactored mapmodel+datamanager to have two separate map models for static and mission maps, and then three static MapInfos in MapModel for the three special maps (random, maze, drawn).
- Created theme selector dialog.
- Created seed view/edit dialog.
- Enlarged start icon on pagemultiplayer and pagenetgame, and added Start.png.
- Moved "Settings" button on pagemultiplayer and pagenetgame from middle of page to page footer.
- Added "load drawing" button to mapcontainer widget.
- Map preview is no longer the randomize button; The randomize functionality is now in a button of its own.
- Map preview no longer grays out (isn't disabled) when in slave mode.
- Seed is now viewable and copyable when in slave mode -- but not editable.
- You should now use the property master (isMaster() and setMaster()) on gamecfgwidget and mapcontainer instead of the enabled property. This is because some widgets (e.g. "view/edit seed" button and map preview) shouldn't be disabled, when all other widgets should be.
- Added mission map descriptions w/ locale support in INI format in mapname/desc.txt if applicable. Use '|' for line break.
/*
* 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_ */