bool Q3ListBoxExtraInfo::saveWidgetExtraInfo(DomWidget *ui_widget) { Q3ListBox *listBox = qobject_cast<Q3ListBox*>(widget()); Q_ASSERT(listBox != 0); QList<DomItem *> items; const int childCount = listBox->count(); for (int i = 0; i < childCount; ++i) { DomItem *item = new DomItem(); QList<DomProperty*> properties; DomString *str = new DomString(); str->setText(listBox->text(i)); DomProperty *ptext = new DomProperty(); ptext->setAttributeName(QLatin1String("text")); ptext->setElementString(str); properties.append(ptext); item->setElementProperty(properties); items.append(item); } ui_widget->setElementItem(items); return true; }
DomItem *Q3ListViewExtraInfo::saveQ3ListViewItem(Q3ListViewItem *item) const { DomItem *pitem = new DomItem(); QList<DomProperty *> properties; const int columnCount = static_cast<Q3ListView*>(widget())->columns(); for (int i = 0; i < columnCount; ++i) { DomString *str = new DomString(); str->setText(item->text(i)); DomProperty *ptext = new DomProperty(); ptext->setAttributeName(QLatin1String("text")); ptext->setElementString(str); properties.append(ptext); } pitem->setElementProperty(properties); QList<DomItem *> items; Q3ListViewItem *child = item->firstChild(); while (child) { items.append(saveQ3ListViewItem(child)); child = child->nextSibling(); } pitem->setElementItem(items); return pitem; }
// 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; }
bool Q3TableExtraInfo::saveWidgetExtraInfo(DomWidget *ui_widget) { Q_UNUSED(ui_widget); Q3Table *table = qobject_cast<Q3Table*>(widget()); Q_ASSERT(table != 0); Q3Header *hHeader = table->horizontalHeader(); QList<DomColumn*> columns; for (int i=0; i<hHeader->count(); ++i) { DomColumn *column = new DomColumn(); QList<DomProperty *> properties; DomProperty *property = new DomProperty(); DomString *string = new DomString(); string->setText(hHeader->label(i)); property->setElementString(string); property->setAttributeName("text"); properties.append(property); column->setElementProperty(properties); columns.append(column); } ui_widget->setElementColumn(columns); Q3Header *vHeader = table->verticalHeader(); QList<DomRow*> rows; for (int i=0; i<vHeader->count(); ++i) { DomRow *row = new DomRow(); QList<DomProperty *> properties; DomProperty *property = new DomProperty(); DomString *string = new DomString(); string->setText(vHeader->label(i)); property->setElementString(string); property->setAttributeName("text"); properties.append(property); row->setElementProperty(properties); rows.append(row); } ui_widget->setElementRow(rows); return true; }
bool Q3ListViewExtraInfo::saveWidgetExtraInfo(DomWidget *ui_widget) { // ### finish me Q3ListView *listView = qobject_cast<Q3ListView*>(widget()); Q_ASSERT(listView != 0); QList<DomColumn*> columns; Q3Header *header = listView->header(); for (int i=0; i<header->count(); ++i) { DomColumn *c = new DomColumn(); QList<DomProperty*> properties; DomString *str = new DomString(); str->setText(header->label(i)); DomProperty *ptext = new DomProperty(); ptext->setAttributeName(QLatin1String("text")); ptext->setElementString(str); DomProperty *pclickable = new DomProperty(); pclickable->setAttributeName(QLatin1String("clickable")); pclickable->setElementBool(header->isClickEnabled(i) ? QLatin1String("true") : QLatin1String("false")); DomProperty *presizable = new DomProperty(); presizable->setAttributeName(QLatin1String("resizable")); presizable->setElementBool(header->isResizeEnabled(i) ? QLatin1String("true") : QLatin1String("false")); properties.append(ptext); properties.append(pclickable); properties.append(presizable); c->setElementProperty(properties); columns.append(c); } ui_widget->setElementColumn(columns); QList<DomItem *> items; Q3ListViewItem *child = listView->firstChild(); while (child) { items.append(saveQ3ListViewItem(child)); child = child->nextSibling(); } ui_widget->setElementItem(items); return true; }
bool Q3IconViewExtraInfo::saveWidgetExtraInfo(DomWidget *ui_widget) { // ### finish me Q3IconView *iconView = qobject_cast<Q3IconView*>(widget()); Q_ASSERT(iconView != 0); QList<DomItem*> ui_items; Q3IconViewItem *__item = iconView->firstItem(); while (__item != 0) { DomItem *ui_item = new DomItem(); QList<DomProperty*> properties; // text property DomProperty *ptext = new DomProperty(); DomString *str = new DomString(); str->setText(__item->text()); ptext->setAttributeName(QLatin1String("text")); ptext->setElementString(str); properties.append(ptext); ui_item->setElementProperty(properties); ui_items.append(ui_item); if (__item->pixmap() != 0 && core()->iconCache()) { QPixmap pix = *__item->pixmap(); QString filePath = core()->iconCache()->pixmapToFilePath(pix); QString qrcPath = core()->iconCache()->pixmapToQrcPath(pix); DomResourcePixmap *ui_pix = new DomResourcePixmap(); if (!qrcPath.isEmpty()) ui_pix->setAttributeResource(qrcPath); ui_pix->setText(filePath); DomProperty *ppix = new DomProperty(); ppix->setAttributeName(QLatin1String("pixmap")); ppix->setElementPixmap(ui_pix); properties.append(ppix); } __item = __item->nextItem(); } ui_widget->setElementItem(ui_items); return true; }