void QToolBarAreaLayoutInfo::insertToolBarBreak(QToolBar *before) { if (before == 0) { if (!lines.isEmpty() && lines.last().toolBarItems.isEmpty()) return; lines.append(QToolBarAreaLayoutLine(o)); return; } for (int j = 0; j < lines.count(); ++j) { QToolBarAreaLayoutLine &line = lines[j]; for (int k = 0; k < line.toolBarItems.count(); ++k) { if (line.toolBarItems.at(k).widgetItem->widget() == before) { if (k == 0) return; QToolBarAreaLayoutLine newLine(o); newLine.toolBarItems = line.toolBarItems.mid(k); line.toolBarItems = line.toolBarItems.mid(0, k); lines.insert(j + 1, newLine); return; } } } }
bool QToolBarAreaLayoutInfo::insertGap(QList<int> path, QLayoutItem *item) { int j = path.at(0); if (j == lines.count()) lines.append(QToolBarAreaLayoutLine(o)); QToolBarAreaLayoutLine &line = lines[j]; int k = path.at(1); QToolBarAreaLayoutItem gap_item; gap_item.gap = true; gap_item.widgetItem = item; line.toolBarItems.insert(k, gap_item); return true; }
void QToolBarAreaLayoutInfo::insertItem(QToolBar *before, QLayoutItem *item) { if (before == 0) { if (lines.isEmpty()) lines.append(QToolBarAreaLayoutLine(o)); lines.last().toolBarItems.append(item); return; } for (int j = 0; j < lines.count(); ++j) { QToolBarAreaLayoutLine &line = lines[j]; for (int k = 0; k < line.toolBarItems.count(); ++k) { if (line.toolBarItems.at(k).widgetItem->widget() == before) { line.toolBarItems.insert(k, item); return; } } } }
void QToolBarAreaLayoutInfo::insertToolBar(QToolBar *before, QToolBar *toolBar) { toolBar->setOrientation(o); if (before == 0) { if (lines.isEmpty()) lines.append(QToolBarAreaLayoutLine(o)); lines.last().toolBarItems.append(new QWidgetItem(toolBar)); return; } for (int j = 0; j < lines.count(); ++j) { QToolBarAreaLayoutLine &line = lines[j]; for (int k = 0; k < line.toolBarItems.count(); ++k) { if (line.toolBarItems.at(k).widgetItem->widget() == before) { line.toolBarItems.insert(k, new QWidgetItem(toolBar)); return; } } } }
bool QToolBarAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *item) { Q_ASSERT(path.count() == 2); int j = path.first(); if (j == lines.count()) lines.append(QToolBarAreaLayoutLine(o)); QToolBarAreaLayoutLine &line = lines[j]; const int k = path.at(1); QToolBarAreaLayoutItem gap_item; gap_item.gap = true; gap_item.widgetItem = item; //update the previous item's preferred size for(int p = k - 1 ; p >= 0; --p) { QToolBarAreaLayoutItem &previous = line.toolBarItems[p]; if (!previous.skip()) { //we found the previous one int previousSizeHint = pick(line.o, previous.sizeHint()); int previousExtraSpace = previous.size - previousSizeHint; if (previousExtraSpace > 0) { //in this case we reset the space previous.preferredSize = -1; previous.size = previousSizeHint; gap_item.resize(o, previousExtraSpace); } break; } } line.toolBarItems.insert(k, gap_item); return true; }
void QToolBarAreaLayout::insertItem(QInternal::DockPosition pos, QLayoutItem *item) { if (docks[pos].lines.isEmpty()) docks[pos].lines.append(QToolBarAreaLayoutLine(docks[pos].o)); docks[pos].lines.last().toolBarItems.append(item); }