void Q3ListViewExtraInfo::initializeQ3ListViewItems(const QList<DomItem *> &items, Q3ListViewItem *parentItem) { for (int i=0; i<items.size(); ++i) { DomItem *item = items.at(i); Q3ListViewItem *__item = 0; if (parentItem != 0) __item = new Q3ListViewItem(parentItem); else __item = new Q3ListViewItem(static_cast<Q3ListView*>(widget())); int textCount = 0, pixCount = 0; QList<DomProperty*> properties = item->elementProperty(); for (int i=0; i<properties.size(); ++i) { DomProperty *p = properties.at(i); if (p->attributeName() == QLatin1String("text")) __item->setText(textCount++, p->elementString()->text()); if (p->attributeName() == QLatin1String("pixmap")) { DomResourcePixmap *pix = p->elementPixmap(); QPixmap pixmap(core()->iconCache()->resolveQrcPath(pix->text(), pix->attributeResource(), workingDirectory())); __item->setPixmap(pixCount++, pixmap); } } if (item->elementItem().size()) { __item->setOpen(true); initializeQ3ListViewItems(item->elementItem(), __item); } } }
// Get XML for a new form from the widget box. Change objectName/geometry // properties to be suitable for new forms static QString xmlFromWidgetBox(const QDesignerFormEditorInterface *core, const QString &className, const QString &objectName) { typedef QList<DomProperty*> PropertyList; QDesignerWidgetBoxInterface::Widget widget; const bool found = QDesignerWidgetBox::findWidget(core->widgetBox(), className, QString(), &widget); if (!found) return QString(); QScopedPointer<DomUI> domUI(QDesignerWidgetBox::xmlToUi(className, widget.domXml(), false)); if (domUI.isNull()) return QString(); domUI->setAttributeVersion(QLatin1String("4.0")); DomWidget *domWidget = domUI->elementWidget(); if (!domWidget) return QString(); // Properties: Remove the "objectName" property in favour of the name attribute and check geometry. domWidget->setAttributeName(objectName); const QString geometryProperty = QLatin1String("geometry"); const QString objectNameProperty = QLatin1String("objectName"); PropertyList properties = domWidget->elementProperty(); for (PropertyList::iterator it = properties.begin(); it != properties.end(); ) { DomProperty *property = *it; if (property->attributeName() == objectNameProperty) { // remove "objectName" it = properties.erase(it); delete property; } else { if (property->attributeName() == geometryProperty) { // Make sure form is at least 400, 300 if (DomRect *geom = property->elementRect()) { if (geom->elementWidth() < NewFormWidth) geom->setElementWidth(NewFormWidth); if (geom->elementHeight() < NewFormHeight) geom->setElementHeight(NewFormHeight); } } ++it; } } // Add a window title property DomString *windowTitleString = new DomString; windowTitleString->setText(objectName); DomProperty *windowTitleProperty = new DomProperty; windowTitleProperty->setAttributeName(QLatin1String("windowTitle")); windowTitleProperty->setElementString(windowTitleString); properties.push_back(windowTitleProperty); // ------ domWidget->setElementProperty(properties); // Embed in in DomUI and get string. Omit the version number. domUI->setElementClass(objectName); QString rc; { // Serialize domUI QXmlStreamWriter writer(&rc); writer.setAutoFormatting(true); writer.setAutoFormattingIndent(1); writer.writeStartDocument(); domUI->write(writer); writer.writeEndDocument(); } return rc; }
void QDesignerFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties) { typedef QList<DomProperty*> DomPropertyList; if (properties.empty()) return; const QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), o); const QDesignerDynamicPropertySheetExtension *dynamicSheet = qt_extension<QDesignerDynamicPropertySheetExtension*>(core()->extensionManager(), o); const bool changingMetaObject = WidgetFactory::classNameOf(core(), o) == QStringLiteral("QAxWidget"); const QDesignerMetaObjectInterface *meta = core()->introspection()->metaObject(o); const bool dynamicPropertiesAllowed = dynamicSheet && dynamicSheet->dynamicPropertiesAllowed(); QDesignerPropertySheet *designerPropertySheet = qobject_cast<QDesignerPropertySheet *>( core()->extensionManager()->extension(o, Q_TYPEID(QDesignerPropertySheetExtension))); if (designerPropertySheet) { if (designerPropertySheet->pixmapCache()) designerPropertySheet->setPixmapCache(m_pixmapCache); if (designerPropertySheet->iconCache()) designerPropertySheet->setIconCache(m_iconCache); } const DomPropertyList::const_iterator cend = properties.constEnd(); for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) { DomProperty *p = *it; QVariant v; if (!readDomEnumerationValue(p, sheet, v)) v = toVariant(o->metaObject(), p); if (v.isNull()) continue; const QString attributeName = p->attributeName(); if (d->applyPropertyInternally(o, attributeName, v)) continue; // refuse fake properties like current tab name (weak test) if (!dynamicPropertiesAllowed) { if (changingMetaObject) // Changes after setting control of QAxWidget meta = core()->introspection()->metaObject(o); if (meta->indexOfProperty(attributeName) == -1) continue; } QObject *obj = o; QAbstractScrollArea *scroll = qobject_cast<QAbstractScrollArea *>(o); if (scroll && attributeName == QStringLiteral("cursor") && scroll->viewport()) obj = scroll->viewport(); // a real property obj->setProperty(attributeName.toUtf8(), v); } }
QT_BEGIN_NAMESPACE inline QHash<QString, DomProperty *> propertyMap(const QList<DomProperty *> &properties) // ### remove me { QHash<QString, DomProperty *> map; for (int i=0; i<properties.size(); ++i) { DomProperty *p = properties.at(i); map.insert(p->attributeName(), p); } return map; }
void Q3IconViewExtraInfo::initializeQ3IconViewItems(const QList<DomItem *> &items) { Q3IconView *iconView = qobject_cast<Q3IconView*>(widget()); Q_ASSERT(iconView != 0); for (int i=0; i<items.size(); ++i) { DomItem *item = items.at(i); Q3IconViewItem *__item = new Q3IconViewItem(iconView); QList<DomProperty*> properties = item->elementProperty(); for (int i=0; i<properties.size(); ++i) { DomProperty *p = properties.at(i); if (p->attributeName() == QLatin1String("text")) __item->setText(p->elementString()->text()); if (p->attributeName() == QLatin1String("pixmap")) { DomResourcePixmap *pix = p->elementPixmap(); QPixmap pixmap(core()->iconCache()->resolveQrcPath(pix->text(), pix->attributeResource(), workingDirectory())); __item->setPixmap(pixmap); } } } }