QString KasTaskItem::expandMacros( const QString &format, QObject *data ) { QString s = format; QRegExp re("\\$(\\w+)"); int pos = 0; while ( pos >= 0 ) { pos = re.search( s, pos ); if ( pos >= 0 ) { QVariant val = data->property( re.cap(1).latin1() ); QString v = val.asString(); s.replace( pos, re.matchedLength(), v ); pos = pos + v.length(); } } return s; }
static int outputObject( QMap<int, QStringList>& buddies, UibIndexMap& objects, UibStrTable& strings, QDataStream& out, QDomElement elem, QCString className ) { bool isQObject = !className.isEmpty(); if ( className == "QToolBar" ) out << (Q_UINT8) elem.attribute( "dock", "0" ).toInt(); if ( className == "QWidget" ) className = elem.attribute( "class", className ).latin1(); int objectNo = -1; if ( isQObject ) { packCString( strings, out, className ); objectNo = objects.insert(); } outputGridCell( out, elem ); // optimization: insert '&Foo' into string-table before 'Foo' if ( className == "QAction" || className == "QActionGroup" ) { QVariant value = DomTool::readProperty( elem, "menuText", QVariant() ); if ( value.asString().startsWith("&") ) strings.insertString( value.asString() ); } QDomElement f = elem.firstChild().toElement(); while ( !f.isNull() ) { QString tag = f.tagName(); if ( tag == "action" ) { if ( elem.tagName() == "item" || elem.tagName() == "toolbar" ) { QString actionName = f.attribute( "name" ); int no = objects.find( actionName ); if ( no != -1 ) { out << (Q_UINT8) Object_ActionRef; packUInt16( out, no ); } } else { out << (Q_UINT8) Object_SubAction; outputObject( buddies, objects, strings, out, f, "QAction" ); } } else if ( tag == "actiongroup" ) { out << (Q_UINT8) Object_SubAction; outputObject( buddies, objects, strings, out, f, "QActionGroup" ); } else if ( tag == "attribute" ) { out << (Q_UINT8) Object_Attribute; outputProperty( buddies, objectNo, strings, out, f ); } else if ( tag == "column" ) { out << (Q_UINT8) Object_Column; outputObject( buddies, objects, strings, out, f ); } else if ( tag == "event" ) { out << (Q_UINT8) Object_Event; packCString( strings, out, f.attribute("name").latin1() ); packVariant( strings, out, QStringList::split(',', f.attribute("functions")) ); } else if ( tag == "grid" || tag == "hbox" || tag == "vbox" ) { out << (Q_UINT8) Object_SubLayout; outputObject( buddies, objects, strings, out, f, layoutForTag(tag) ); } else if ( tag == "item" ) { if ( elem.tagName() == "menubar" ) { out << (Q_UINT8) Object_MenuItem; packCString( strings, out, f.attribute("name").latin1() ); packCString( strings, out, f.attribute("text").utf8() ); outputObject( buddies, objects, strings, out, f ); } else { out << (Q_UINT8) Object_Item; outputObject( buddies, objects, strings, out, f ); } } else if ( tag == "property" ) { outputProperty( buddies, objectNo, strings, out, f ); } else if ( tag == "row" ) { out << (Q_UINT8) Object_Row; outputObject( buddies, objects, strings, out, f ); } else if ( tag == "separator" ) { out << (Q_UINT8) Object_Separator; } else if ( tag == "spacer" ) { out << (Q_UINT8) Object_Spacer; outputObject( buddies, objects, strings, out, f ); } else if ( tag == "widget" ) { if ( f.attribute("class") == "QLayoutWidget" && elem.tagName() != "widget" ) { outputLayoutWidgetsSubLayout( buddies, objects, strings, out, f ); } else { out << (Q_UINT8) Object_SubWidget; outputObject( buddies, objects, strings, out, f, "QWidget" ); } } f = f.nextSibling().toElement(); } out << (Q_UINT8) Object_End; if ( isQObject ) objects.setName( objectNo, DomTool::readProperty(elem, "name", "").asString() ); return objectNo; }
static void outputProperty( QMap<int, QStringList>& buddies, int objectNo, UibStrTable& strings, QDataStream& out, QDomElement elem ) { QCString name = elem.attribute( "name" ).latin1(); QDomElement f = elem.firstChild().toElement(); QString tag = f.tagName(); QString comment; QVariant value; if ( name == "resizeable" ) name = "resizable"; if ( tag == "font" ) { QString family; Q_UINT16 pointSize = 65535; Q_UINT8 fontFlags = 0; QDomElement g = f.firstChild().toElement(); while ( !g.isNull() ) { QString text = g.firstChild().toText().data(); if ( g.tagName() == "family" ) { fontFlags |= Font_Family; family = text; } else if ( g.tagName() == "pointsize" ) { fontFlags |= Font_PointSize; pointSize = (Q_UINT16) text.toUInt(); } else { if ( g.firstChild().toText().data().toInt() != 0 ) { if ( g.tagName() == "bold" ) { fontFlags |= Font_Bold; } else if ( g.tagName() == "italic" ) { fontFlags |= Font_Italic; } else if ( g.tagName() == "underline" ) { fontFlags |= Font_Underline; } else if ( g.tagName() == "strikeout" ) { fontFlags |= Font_StrikeOut; } } } g = g.nextSibling().toElement(); } out << (Q_UINT8) Object_FontProperty; packCString( strings, out, name ); out << fontFlags; if ( fontFlags & Font_Family ) packString( strings, out, family ); if ( fontFlags & Font_PointSize ) packUInt16( out, pointSize ); } else if ( tag == "palette" ) { out << (Q_UINT8) Object_PaletteProperty; packCString( strings, out, name ); QDomElement g = f.firstChild().toElement(); while ( !g.isNull() ) { QDomElement h = g.firstChild().toElement(); while ( !h.isNull() ) { value = DomTool::elementToVariant( h, Qt::gray ); if ( h.tagName() == "color" ) { out << (Q_UINT8) Palette_Color; out << value.asColor(); } else if ( h.tagName() == "pixmap" ) { out << (Q_UINT8) Palette_Pixmap; packVariant( strings, out, value, "pixmap" ); } h = h.nextSibling().toElement(); } if ( g.tagName() == "active" ) { out << (Q_UINT8) Palette_Active; } else if ( g.tagName() == "inactive" ) { out << (Q_UINT8) Palette_Inactive; } else { out << (Q_UINT8) Palette_Disabled; } g = g.nextSibling().toElement(); } out << (Q_UINT8) Palette_End; } else { value = DomTool::elementToVariant( f, value, comment ); if ( value.isValid() ) { if ( name == "buddy" ) { buddies[objectNo] += value.asString(); } else { if ( tag == "string" ) { out << (Q_UINT8) Object_TextProperty; packCString( strings, out, name ); packCString( strings, out, value.asString().utf8() ); packCString( strings, out, comment.utf8() ); } else { out << (Q_UINT8) Object_VariantProperty; packCString( strings, out, name ); packVariant( strings, out, value, tag ); } } } } }
static void packVariant( UibStrTable& strings, QDataStream& out, QVariant value, QString tag = "" ) { QStringList::ConstIterator s; Q_UINT8 type = value.type(); if ( tag == "pixmap" ) { type = QVariant::Pixmap; } else if ( tag == "image" ) { type = QVariant::Image; } else if ( tag == "iconset" ) { type = QVariant::IconSet; } out << type; switch ( type ) { case QVariant::String: case QVariant::Pixmap: case QVariant::Image: case QVariant::IconSet: packString( strings, out, value.asString() ); break; case QVariant::StringList: packUInt16( out, value.asStringList().count() ); s = value.asStringList().begin(); while ( s != value.asStringList().end() ) { packString( strings, out, *s ); ++s; } break; case QVariant::Font: out << value.asFont(); break; case QVariant::Rect: packUInt16( out, value.asRect().x() ); packUInt16( out, value.asRect().y() ); packUInt16( out, value.asRect().width() ); packUInt16( out, value.asRect().height() ); break; case QVariant::Size: packUInt16( out, value.asSize().width() ); packUInt16( out, value.asSize().height() ); break; case QVariant::Color: out << value.asColor(); break; case QVariant::Point: packUInt16( out, value.asPoint().x() ); packUInt16( out, value.asPoint().y() ); break; case QVariant::Int: packUInt32( out, value.asInt() ); break; case QVariant::Bool: out << (Q_UINT8) value.asBool(); break; case QVariant::Double: out << value.asDouble(); break; case QVariant::CString: packCString( strings, out, value.asCString() ); break; case QVariant::Cursor: out << value.asCursor(); break; case QVariant::Date: out << value.asDate(); break; case QVariant::Time: out << value.asTime(); break; case QVariant::DateTime: out << value.asDateTime(); break; default: out << value; } }
void FlowPart::varNameChanged(QVariant newValue, QVariant oldValue) { if (!m_pFlowCodeDocument) return; m_pFlowCodeDocument->varNameChanged(newValue.asString(), oldValue.asString()); }