added the function setExpandingBoth(bool) that makes the layout to expand in both directions, useful for instance if you put an horizontal layout into a vertical layout

oh, and fixed a typo in a comment

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=767568
This commit is contained in:
Marco Martin 2008-01-28 11:55:56 +00:00
parent e3bddd25de
commit c395cc03bb
2 changed files with 19 additions and 16 deletions

View File

@ -41,6 +41,7 @@ public:
BoxLayout *const q; BoxLayout *const q;
Direction direction; Direction direction;
QList<LayoutItem*> children; QList<LayoutItem*> children;
bool expandingBoth;
bool multiRow; bool multiRow;
int rowCount; int rowCount;
int colCount() const { int colCount() const {
@ -49,7 +50,7 @@ public:
Private(BoxLayout *parent) Private(BoxLayout *parent)
: q(parent) : q(parent)
, direction(LeftToRight), multiRow(false) , rowCount(1) , direction(LeftToRight), expandingBoth(false), multiRow(false) , rowCount(1)
{ {
} }
@ -87,10 +88,14 @@ public:
} }
// returns the direction in which this layout expands // returns the directions in which this layout expands
// or shrinks // or shrinks
Qt::Orientation expandingDirection() const Qt::Orientations expandingDirections() const
{ {
if (expandingBoth) {
return Qt::Horizontal|Qt::Vertical;
}
switch (direction) { switch (direction) {
case LeftToRight: case LeftToRight:
case RightToLeft: case RightToLeft:
@ -300,17 +305,7 @@ BoxLayout::~BoxLayout()
Qt::Orientations BoxLayout::expandingDirections() const Qt::Orientations BoxLayout::expandingDirections() const
{ {
switch (d->direction) { return d->expandingDirections();
case LeftToRight:
case RightToLeft:
return Qt::Horizontal;
case TopToBottom:
case BottomToTop:
return Qt::Vertical;
default:
Q_ASSERT(false);
return 0;
}
} }
int BoxLayout::count() const int BoxLayout::count() const
@ -455,7 +450,7 @@ void BoxLayout::relayout()
break; break;
} }
const LayoutItem *item = d->children[f]; const LayoutItem *item = d->children[f];
const bool itemExp = (item->expandingDirections() & d->expandingDirection()); const bool itemExp = (item->expandingDirections() & d->expandingDirections());
isExpanding = isExpanding && itemExp; isExpanding = isExpanding && itemExp;
minItemSize = qMax(minItemSize, d->size(item->minimumSize())); minItemSize = qMax(minItemSize, d->size(item->minimumSize()));
maxItemSize = qMin(maxItemSize, d->size(item->maximumSize())); maxItemSize = qMin(maxItemSize, d->size(item->maximumSize()));
@ -556,6 +551,11 @@ void BoxLayout::setMultiRow(bool b)
d->multiRow = b; d->multiRow = b;
} }
void BoxLayout::setExpandingBoth(bool both)
{
d->expandingBoth = both;
}
HBoxLayout::HBoxLayout(LayoutItem *parent) HBoxLayout::HBoxLayout(LayoutItem *parent)
: BoxLayout(LeftToRight, parent) : BoxLayout(LeftToRight, parent)
{ {

View File

@ -67,9 +67,12 @@ class PLASMA_EXPORT BoxLayout : public Layout
/** Inserts a new item into the layout at the specified index. */ /** Inserts a new item into the layout at the specified index. */
void insertItem(int index, LayoutItem *l); void insertItem(int index, LayoutItem *l);
/** Set weither this layout will take severals row */ /** Set whether this layout will take several rows */
void setMultiRow(bool b); void setMultiRow(bool b);
/** Set whether this layout will expand in both directions */
void setExpandingBoth(bool both);
// reimplemented from Layout // reimplemented from Layout
virtual void addItem(LayoutItem *l); virtual void addItem(LayoutItem *l);
virtual void removeItem(LayoutItem *l); virtual void removeItem(LayoutItem *l);