00001 #ifndef FAITH__BOXLAYOUT_H
00002 #define FAITH__BOXLAYOUT_H
00003
00004 #include <faith/layout.h>
00005 #include <faith/sizepolicy.h>
00006 #include <faith/ui.h>
00007
00008 namespace Faith
00009 {
00010
00011 class FAITH_UI_EXPORT BoxLayout : public Layout
00012 {
00013 struct BoxLayoutPrivate;
00014 BoxLayoutPrivate *d;
00015
00016 public:
00017 BoxLayout(Faith::Widget *widget, int margin=0, int spacing=-1);
00018 virtual ~BoxLayout();
00019
00020 void addWidget(Faith::Widget *w);
00021 void addLayout(Faith::Layout *l);
00022
00023 void setAutoAdd(bool add);
00024
00025 protected:
00026 virtual void layout();
00027
00028 virtual void childAdded(Faith::Widget *w);
00029
00030 virtual void childRemoved(Faith::Widget *w);
00031
00032 virtual Faith::Size minimumSize() const;
00033 virtual Faith::Size maximumSize() const;
00034
00035 protected:
00036 enum Direction { Fixed, Unfixed };
00037
00038 void setData(
00039 Direction d,
00040 int (Size::*readSize)() const,
00041 Faith::SizePolicy::Policy (SizePolicy::*readPolicy)() const,
00042 void (Size::*writeSize)(int)
00043 );
00044
00045 virtual void resize(
00046 LayoutItem *item,
00047 int fixedpos, int unfixedpos,
00048 int fixedsize, int unfixedsize
00049 )=0;
00050 };
00051
00052 class FAITH_UI_EXPORT VBoxLayout : public BoxLayout
00053 {
00054 public:
00055 VBoxLayout(Faith::Widget *widget, int margin=0, int spacing=-1);
00056 ~VBoxLayout();
00057
00058 protected:
00059 virtual void resize(
00060 LayoutItem *item,
00061 int fixedpos, int unfixedpos,
00062 int fixedsize, int unfixedsize
00063 );
00064
00065 };
00066
00067
00068 class FAITH_UI_EXPORT HBoxLayout : public BoxLayout
00069 {
00070 public:
00071 HBoxLayout(Faith::Widget *widget, int margin=0, int spacing=-1);
00072 ~HBoxLayout();
00073
00074 protected:
00075 virtual void resize(
00076 LayoutItem *item,
00077 int fixedpos, int unfixedpos,
00078 int fixedsize, int unfixedsize
00079 );
00080
00081 };
00082
00083
00084
00085 }
00086
00087 #endif