diff include/gui/layouts/flow_layout.h @ 253:b3549da699a6

*: ooooh! stupid big commit! oops
author Paper <paper@paper.us.eu.org>
date Tue, 06 Feb 2024 16:56:32 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/gui/layouts/flow_layout.h	Tue Feb 06 16:56:32 2024 -0500
@@ -0,0 +1,39 @@
+#ifndef __gui__layouts__flow_layout_h
+#define __gui__layouts__flow_layout_h
+
+#include <QLayout>
+#include <QRect>
+#include <QStyle>
+
+class QWidget;
+class QLayoutItem;
+
+class FlowLayout : public QLayout {
+public:
+    explicit FlowLayout(QWidget* parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
+    explicit FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
+    ~FlowLayout();
+
+    void addItem(QLayoutItem* item) override;
+    int horizontalSpacing() const;
+    int verticalSpacing() const;
+    Qt::Orientations expandingDirections() const override;
+    bool hasHeightForWidth() const override;
+    int heightForWidth(int) const override;
+    int count() const override;
+    QLayoutItem* itemAt(int index) const override;
+    QSize minimumSize() const override;
+    void setGeometry(const QRect& rect) override;
+    QSize sizeHint() const override;
+    QLayoutItem* takeAt(int index) override;
+
+private:
+    int doLayout(const QRect& rect, bool testOnly) const;
+    int smartSpacing(QStyle::PixelMetric pm) const;
+
+    QList<QLayoutItem*> item_list;
+    int _horiz_space;
+    int _vert_space;
+};
+
+#endif // __gui__layouts__flow_layout_h
\ No newline at end of file