From 98d68e221cbf13f0d978b9c997c55c98dff1cbf9 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 10 Dec 2015 18:24:11 +0100 Subject: Refactoring of Layout and LayoutItem. --- plugingui/layout.h | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) (limited to 'plugingui/layout.h') diff --git a/plugingui/layout.h b/plugingui/layout.h index 72e4fc8..949c1ca 100644 --- a/plugingui/layout.h +++ b/plugingui/layout.h @@ -29,6 +29,8 @@ #include #include +#include "notifier.h" + namespace GUI { class Layout; @@ -42,8 +44,8 @@ public: virtual void resize(int width, int height) = 0; virtual void move(size_t x, size_t y) = 0; - virtual size_t x() = 0; - virtual size_t y() = 0; + virtual int x() = 0; + virtual int y() = 0; virtual size_t width() = 0; virtual size_t height() = 0; @@ -52,7 +54,7 @@ private: }; //! \brief Abtract Layout class. -class Layout +class Layout : public Listener { public: Layout(LayoutItem *parent); @@ -65,6 +67,8 @@ public: virtual void layout() = 0; protected: + void sizeChanged(int width, int height); + LayoutItem *parent; typedef std::list LayoutItemList; LayoutItemList items; @@ -78,11 +82,20 @@ public: //! \brief Set to false to only move the items, not scale them. void setResizeChildren(bool resize_children); + void setSpacing(size_t spacing); + // From Layout: virtual void layout() override = 0; protected: - bool resize_children; + bool resizeChildren{false}; + size_t spacing{0}; +}; + +enum class HAlignment { + left, + center, + right, }; //! \brief A Layout that lays out its elements vertically. @@ -90,19 +103,19 @@ class VBoxLayout : public BoxLayout { public: VBoxLayout(LayoutItem *parent); - typedef enum { - HALIGN_LEFT, - HALIGN_CENTER, - HALIGN_RIGHT, - } alignment_t; - - void setHAlignment(alignment_t alignment); + void setHAlignment(HAlignment alignment); // From BoxLayout: virtual void layout() override; protected: - alignment_t align; + HAlignment align; +}; + +enum class VAlignment { + top, + center, + bottom, }; //! \brief A Layout that lays out its elements vertically. @@ -110,19 +123,13 @@ class HBoxLayout : public BoxLayout { public: HBoxLayout(LayoutItem *parent); - typedef enum { - VALIGN_TOP, - VALIGN_CENTER, - VALIGN_BOTTOM, - } alignment_t; - - void setVAlignment(alignment_t alignment); + void setVAlignment(VAlignment alignment); // From BoxLayout: virtual void layout() override; protected: - alignment_t align; + VAlignment align; }; } // GUI:: -- cgit v1.2.3