Cute Chess 0.1
tilelayout.h
1/*
2 This file is part of Cute Chess.
3 Copyright (C) 2008-2018 Cute Chess authors
4
5 Cute Chess is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 Cute Chess is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with Cute Chess. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#ifndef TILELAYOUT_H
20#define TILELAYOUT_H
21
22#include <QLayout>
23#include <QStyle>
24
25class TileLayout : public QLayout
26{
27 Q_OBJECT
28
29 public:
30 explicit TileLayout(QWidget* parent = nullptr);
31 virtual ~TileLayout();
32
33 // Inherited from QLayout
34 void addItem(QLayoutItem* item);
35 Qt::Orientations expandingDirections() const;
36 int count() const;
37 QLayoutItem* itemAt(int index) const;
38 QSize minimumSize() const;
39 void setGeometry(const QRect& rect);
40 QSize sizeHint() const;
41 QLayoutItem* takeAt(int index);
42
43 private:
44 int horizontalSpacing() const;
45 int verticalSpacing() const;
46 void doLayout(const QRect& rect) const;
47 int smartSpacing(QStyle::PixelMetric pm) const;
48
49 QList<QLayoutItem*> m_items;
50};
51
52#endif // TILELAYOUT_H