LayoutInfo::Type LayoutInfo::laidoutWidgetType(const QDesignerFormEditorInterface *core, QWidget *widget, bool *isManaged, QLayout **ptrToLayout) { if (isManaged) *isManaged = false; if (ptrToLayout) *ptrToLayout = 0; QWidget *parent = widget->parentWidget(); if (!parent) return NoLayout; // 1) Splitter if (QSplitter *splitter = qobject_cast<QSplitter*>(parent)) { if (isManaged) *isManaged = core->metaDataBase()->item(splitter); return splitter->orientation() == Qt::Horizontal ? HSplitter : VSplitter; } // 2) Layout of parent QLayout *parentLayout = parent->layout(); if (!parentLayout) return NoLayout; if (parentLayout->indexOf(widget) != -1) { if (isManaged) *isManaged = core->metaDataBase()->item(parentLayout); if (ptrToLayout) *ptrToLayout = parentLayout; return layoutType(core, parentLayout); } // 3) Some child layout (see below comment about Q3GroupBox) const QList<QLayout*> childLayouts = parentLayout->findChildren<QLayout*>(); if (childLayouts.empty()) return NoLayout; const QList<QLayout*>::const_iterator lcend = childLayouts.constEnd(); for (QList<QLayout*>::const_iterator it = childLayouts.constBegin(); it != lcend; ++it) { QLayout *layout = *it; if (layout->indexOf(widget) != -1) { if (isManaged) *isManaged = core->metaDataBase()->item(layout); if (ptrToLayout) *ptrToLayout = layout; return layoutType(core, layout); } } return NoLayout; }
void ComboBoxParameters::resetParameters (void) { WidgetParameters::resetParameters (); imageId() = ATOM_IMAGEID_CONTROL_BKGROUND; rect().size.w = 100; rect().size.h = 30; layoutType() = ATOM_WidgetLayout::Horizontal; _buttonWidth = 18; _dropdownHeight = 100; _buttonImageId = ATOM_IMAGEID_SCROLLBAR_VBUTTONDOWN; _buttonBorderMode = -1; _dropdownImageId = 1; _dropdownItemHeight = 20; _dropDownHilightImageId = 0; _dropDownBorderMode = -1; _editImageId = 0; _editBorderMode = -1; _offsetX = 0; _scrollBarBackgroundImageId = ATOM_AUTOMATIC_IMAGEID; _scrollBarDownButtonImageId = ATOM_AUTOMATIC_IMAGEID; _scrollBarSliderImageId = ATOM_AUTOMATIC_IMAGEID; _scrollBarUpButtonImageId = ATOM_AUTOMATIC_IMAGEID; _buttonLength = 16; _sliderWidth = 16; _sliderLength = 16; }
void KListItem::itemReset( ) { if(layoutType() == KWidget::None) { setLayoutType(KWidget::HBox); setSpacing(3); } QString ico = itemIcon(); QString txt = itemText(); if(m_label == NULL) { m_label = new KLabel(this); addItem(m_label); } if(!ico.isEmpty() && m_icon == NULL) { m_icon = new KImageItem(this); insertItem(m_icon, 0); } if(m_icon) { m_icon->setImagePath(ico); QSize s = m_icon->pixmapSize(); m_icon->setFixWidth(s.width()); } if(m_label) { m_label->setText(txt); } }
void HGLayout::setSpacing(int s) { HLayout::setSpacing(s); QGraphicsLayout* ll = layout(); if (!ll) return ; switch (layoutType()) { case HEnums::kVBox: case HEnums::kHBox: { QGraphicsLinearLayout* l = static_cast<QGraphicsLinearLayout*>(ll); l->setSpacing(s); break; } case HEnums::kGrid: { QGraphicsGridLayout* l = static_cast<QGraphicsGridLayout*>(ll); l->setSpacing(s); break; } case HEnums::kAnchor: { QGraphicsAnchorLayout* l = static_cast<QGraphicsAnchorLayout*>(ll); l->setSpacing(s); break; } default: break; } }
bool HGLayout::removeItem(QGraphicsLayoutItem *item) { if (!layout()) return false; switch (layoutType()) { case HEnums::kVBox: case HEnums::kHBox: { QGraphicsLinearLayout* l = static_cast<QGraphicsLinearLayout*>(layout()); l->removeItem(item); break; } case HEnums::kGrid: { QGraphicsGridLayout* l = static_cast<QGraphicsGridLayout*>(layout()); l->removeItem(item); break; } case HEnums::kAnchor: {//"anchor layout can't remove item now!" QGraphicsAnchorLayout* l = static_cast<QGraphicsAnchorLayout*>(layout()); Q_UNUSED(l); return false; } default: return false; } return true; }
int HGLayout::insertItem(QGraphicsLayoutItem* item, const HLayoutConfig& conf) { if (!layout()) return -1; switch (layoutType()) { case HEnums::kVBox: case HEnums::kHBox: { QGraphicsLinearLayout* l = static_cast<QGraphicsLinearLayout*>(layout()); l->insertItem(conf.index(),item); l->setAlignment(item,alignment()); break; } case HEnums::kGrid: { QGraphicsGridLayout* l = static_cast<QGraphicsGridLayout*>(layout()); l->addItem(item,conf.row(),conf.column(),alignment()); break; } case HEnums::kAnchor: { //anchor layout can't add item here, add item in setAnchor QGraphicsAnchorLayout* l = static_cast<QGraphicsAnchorLayout*>(layout()); Q_UNUSED(l); return -1; } default: return -1; } return 0; }
Qt::Alignment HGLayout::alignment(QGraphicsLayoutItem* item) const { QGraphicsLayout* ll = layout(); if (ll) { HEnums::HLayoutType type = layoutType() ; if (type == HEnums::kHBox || type == HEnums::kVBox) { return static_cast<QGraphicsLinearLayout*>(ll)->alignment(item); } else if(type == HEnums::kGrid) { return static_cast<QGraphicsGridLayout*>(ll)->alignment(item); } } return alignment(); }
LayoutInfo::Type LayoutInfo::managedLayoutType(const QDesignerFormEditorInterface *core, const QWidget *w, QLayout **ptrToLayout) { if (ptrToLayout) *ptrToLayout = 0; if (const QSplitter *splitter = qobject_cast<const QSplitter *>(w)) return splitter->orientation() == Qt::Horizontal ? HSplitter : VSplitter; QLayout *layout = managedLayout(core, w); if (!layout) return NoLayout; if (ptrToLayout) *ptrToLayout = layout; return layoutType(core, layout); }
void HGLayout::setAlignment(QGraphicsLayoutItem* item, Qt::Alignment align) { QGraphicsLayout* ll = layout(); if (!ll) return ; HEnums::HLayoutType type = layoutType() ; if (type == HEnums::kHBox || type == HEnums::kVBox) { QGraphicsLinearLayout* l = static_cast<QGraphicsLinearLayout*>(ll); l->setAlignment(item, align); } else if(type == HEnums::kGrid) { QGraphicsGridLayout* l = static_cast<QGraphicsGridLayout*>(ll); l->setAlignment(item,align); } }
void Fingering::layout() { if (parent()) { Fraction tick = parent()->tick(); const Staff* st = staff(); if (st && st->isTabStaff(tick) && !st->staffType(tick)->showTabFingering()) { setbbox(QRectF()); return; } } TextBase::layout(); rypos() = 0.0; // handle placement below if (autoplace() && note()) { Note* n = note(); Chord* chord = n->chord(); bool voices = chord->measure()->hasVoices(chord->staffIdx()); bool tight = voices && chord->notes().size() == 1 && !chord->beam() && tid() != Tid::STRING_NUMBER; qreal headWidth = n->bboxRightPos(); // update offset after drag qreal rebase = 0.0; if (offsetChanged() != OffsetChange::NONE) rebase = rebaseOffset(); // temporarily exclude self from chord shape setAutoplace(false); if (layoutType() == ElementType::CHORD) { Stem* stem = chord->stem(); Segment* s = chord->segment(); Measure* m = s->measure(); qreal sp = spatium(); qreal md = minDistance().val() * sp; SysStaff* ss = m->system()->staff(chord->vStaffIdx()); Staff* vStaff = chord->staff(); // TODO: use current height at tick if (n->mirror()) rxpos() -= n->ipos().x(); rxpos() += headWidth * .5; if (placeAbove()) { if (tight) { if (chord->stem()) rxpos() -= 0.8 * sp; rypos() -= 1.5 * sp; } else { QRectF r = bbox().translated(m->pos() + s->pos() + chord->pos() + n->pos() + pos()); SkylineLine sk(false); sk.add(r.x(), r.bottom(), r.width()); qreal d = sk.minDistance(ss->skyline().north()); qreal yd = 0.0; if (d > 0.0 && isStyled(Pid::MIN_DISTANCE)) yd -= d + height() * .25; // force extra space above staff & chord (but not other fingerings) qreal top; if (chord->up() && chord->beam() && stem) { top = stem->y() + stem->bbox().top(); } else { Note* un = chord->upNote(); top = qMin(0.0, un->y() + un->bbox().top()); } top -= md; qreal diff = (bbox().bottom() + ipos().y() + yd + n->y()) - top; if (diff > 0.0) yd -= diff; if (offsetChanged() != OffsetChange::NONE) { // user moved element within the skyline // we may need to adjust minDistance, yd, and/or offset bool inStaff = placeAbove() ? r.bottom() + rebase > 0.0 : r.top() + rebase < staff()->height(); rebaseMinDistance(md, yd, sp, rebase, inStaff); } rypos() += yd; } } else { if (tight) { if (chord->stem()) rxpos() += 0.8 * sp; rypos() += 1.5 * sp; } else { QRectF r = bbox().translated(m->pos() + s->pos() + chord->pos() + n->pos() + pos()); SkylineLine sk(true); sk.add(r.x(), r.top(), r.width()); qreal d = ss->skyline().south().minDistance(sk); qreal yd = 0.0; if (d > 0.0 && isStyled(Pid::MIN_DISTANCE)) yd += d + height() * .25; // force extra space below staff & chord (but not other fingerings) qreal bottom; if (!chord->up() && chord->beam() && stem) { bottom = stem->y() + stem->bbox().bottom(); } else { Note* dn = chord->downNote(); bottom = qMax(vStaff->height(), dn->y() + dn->bbox().bottom()); } bottom += md; qreal diff = bottom - (bbox().top() + ipos().y() + yd + n->y()); if (diff > 0.0) yd += diff; if (offsetChanged() != OffsetChange::NONE) { // user moved element within the skyline // we may need to adjust minDistance, yd, and/or offset bool inStaff = placeAbove() ? r.bottom() + rebase > 0.0 : r.top() + rebase < staff()->height(); rebaseMinDistance(md, yd, sp, rebase, inStaff); } rypos() += yd; } } } else if (tid() == Tid::LH_GUITAR_FINGERING) { // place to left of note qreal left = n->shape().left(); if (left - n->x() > 0.0) rxpos() -= left; else rxpos() -= n->x(); } // for other fingering styles, do not autoplace // restore autoplace setAutoplace(true); } else if (offsetChanged() != OffsetChange::NONE) { // rebase horizontally too, as autoplace may have adjusted it rebaseOffset(false); } setOffsetChanged(false); }
/*! \overload */ LayoutInfo::Type LayoutInfo::layoutType(const QDesignerFormEditorInterface *core, const QWidget *w) { if (const QSplitter *splitter = qobject_cast<const QSplitter *>(w)) return splitter->orientation() == Qt::Horizontal ? HSplitter : VSplitter; return layoutType(core, w->layout()); }