Added ItemBoxContainer::tst_numSideBySide_recursive()
This commit is contained in:
@@ -979,6 +979,32 @@ ItemBoxContainer::~ItemBoxContainer()
|
|||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ItemBoxContainer::numSideBySide_recursive(Qt::Orientation o) const
|
||||||
|
{
|
||||||
|
int num = 0;
|
||||||
|
if (d->m_orientation == o) {
|
||||||
|
// Example: Container is horizontal and we want to know how many layouted horizontally
|
||||||
|
for (Item *child : m_children) {
|
||||||
|
if (ItemBoxContainer *container = child->asBoxContainer()) {
|
||||||
|
num += container->numSideBySide_recursive(o);
|
||||||
|
} else {
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Example: Container is vertical and we want to know how many layouted horizontally
|
||||||
|
for (Item *child : m_children) {
|
||||||
|
if (ItemBoxContainer *container = child->asBoxContainer()) {
|
||||||
|
num = qMax(num, container->numSideBySide_recursive(o));
|
||||||
|
} else {
|
||||||
|
num = qMax(num, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
bool ItemBoxContainer::checkSanity()
|
bool ItemBoxContainer::checkSanity()
|
||||||
{
|
{
|
||||||
d->m_checkSanityScheduled = false;
|
d->m_checkSanityScheduled = false;
|
||||||
|
|||||||
@@ -475,6 +475,10 @@ public:
|
|||||||
bool isHorizontal() const;
|
bool isHorizontal() const;
|
||||||
int length() const;
|
int length() const;
|
||||||
|
|
||||||
|
/// @brief Returns the number of items layed out horizontally or vertically
|
||||||
|
/// But honours nesting
|
||||||
|
int numSideBySide_recursive(Qt::Orientation) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool hasOrientation() const;
|
bool hasOrientation() const;
|
||||||
int indexOfVisibleChild(const Item *) const;
|
int indexOfVisibleChild(const Item *) const;
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ private Q_SLOTS:
|
|||||||
void tst_maxSizeHonouredWhenAnotherRemoved();
|
void tst_maxSizeHonouredWhenAnotherRemoved();
|
||||||
void tst_simplify();
|
void tst_simplify();
|
||||||
void tst_adjacentLayoutBorders();
|
void tst_adjacentLayoutBorders();
|
||||||
|
void tst_numSideBySide_recursive();
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyHostWidget : public QWidget
|
class MyHostWidget : public QWidget
|
||||||
@@ -1887,6 +1888,40 @@ void TestMultiSplitter::tst_adjacentLayoutBorders()
|
|||||||
QCOMPARE(borders4, LayoutBorderLocation_South);
|
QCOMPARE(borders4, LayoutBorderLocation_South);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestMultiSplitter::tst_numSideBySide_recursive()
|
||||||
|
{
|
||||||
|
auto root = createRoot();
|
||||||
|
QVERIFY(root->isVertical());
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 0);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 0);
|
||||||
|
|
||||||
|
auto item1 = createItem();
|
||||||
|
root->insertItem(item1, Location_OnRight);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 1);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||||
|
|
||||||
|
|
||||||
|
auto item2 = createItem();
|
||||||
|
root->insertItem(item2, Location_OnTop);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 2);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||||
|
|
||||||
|
auto item3 = createItem();
|
||||||
|
root->insertItem(item3, Location_OnTop);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 3);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 1);
|
||||||
|
|
||||||
|
auto item1Child = createItem();
|
||||||
|
ItemBoxContainer::insertItemRelativeTo(item1Child, item1, Location_OnLeft);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 3);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 2);
|
||||||
|
|
||||||
|
auto item1Child1Child = createItem();
|
||||||
|
ItemBoxContainer::insertItemRelativeTo(item1Child1Child, item1Child, Location_OnBottom);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Vertical), 4);
|
||||||
|
QCOMPARE(root->numSideBySide_recursive(Qt::Horizontal), 2);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
bool qpaPassed = false;
|
bool qpaPassed = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user