void SeparateTabWidget::handleCloneTab () { const auto index = sender ()->property ("TabIndex").toInt (); const auto widget = Widget (index); const auto irt = qobject_cast<IRecoverableTab*> (widget); const auto plugin = qobject_cast<ITabWidget*> (widget)->ParentMultiTabs (); const auto ihrt = qobject_cast<IHaveRecoverableTabs*> (plugin); if (!widget || !irt || !ihrt) { qWarning () << Q_FUNC_INFO << "something required is null:" << widget << irt << ihrt; return; } const auto& data = irt->GetTabRecoverData (); QList<QPair<QByteArray, QVariant>> props; for (const auto& name : widget->dynamicPropertyNames ()) if (name.startsWith ("SessionData/")) props.append ({ name, widget->property (name) }); ihrt->RecoverTabs ({ { data, props } }); }
bool Properties::hasProperty( QString propertyName ) { int pi = metaObject( )->indexOfProperty( propertyName.toLatin1( ) ); if ( pi != -1 ) return true; // A static property with the searched name exists QList< QByteArray > dynamicProperties = dynamicPropertyNames( ); foreach ( QByteArray dynamicProperty, dynamicProperties ) if ( QString( dynamicProperty ) == propertyName ) return true; return false; }
void Properties::serializeOut( QXmlStreamWriter& stream ) { stream.writeStartElement( "properties" ); // <properties> // Serialize static properties int pCount = metaObject( )->propertyCount( ); for ( int i = 0; i < pCount; ++i ) { QMetaProperty metaProperty = metaObject( )->property( i ); QString propertyName = QString( metaProperty.name( ) ); QVariant v = property( propertyName.toLatin1( ) ); stream.writeStartElement( "property" ); // <property> stream.writeAttribute( "name", propertyName ); serializeValueOut( v, stream ); serializeTimeValuesOut( propertyName, stream ); stream.writeEndElement( ); // </property> } // Serialize dynamic properties QList< QByteArray > dynamicProperties = dynamicPropertyNames( ); for ( int d = 0; d < dynamicProperties.size( ); d++ ) { QString propertyName = dynamicProperties.at( d ); QVariant v = property( propertyName.toLatin1( ) ); stream.writeStartElement( "property" ); // <property> stream.writeAttribute( "name", propertyName ); serializeValueOut( v, stream ); if ( isEnum( propertyName ) ) stream.writeAttribute( "isEnum", getEnumValueLabels( propertyName ).join( ',') ); serializeTimeValuesOut( propertyName, stream ); stream.writeEndElement( ); // </property> } stream.writeEndElement( ); // </properties> }
void QcepImageDataBase::copyProperties(QcepImageDataBase *dest) { dest -> set_Type(get_Type()); dest -> set_Creator(get_Creator()); dest -> set_Version(get_Version()); dest -> set_QtVersion(get_QtVersion()); dest -> set_DataType(get_DataType()); dest -> set_FileBase(get_FileBase()); dest -> set_FileName(get_FileName()); dest -> set_Title(get_Title()); dest -> set_ReadoutMode(get_ReadoutMode()); dest -> set_ExposureTime(get_ExposureTime()); dest -> set_SummedExposures(get_SummedExposures()); dest -> set_ImageSequenceNumber(get_ImageSequenceNumber()); dest -> set_ImageNumber(get_ImageNumber()); dest -> set_PhaseNumber(get_PhaseNumber()); dest -> set_NPhases(get_NPhases()); dest -> set_DateTime(get_DateTime()); dest -> set_HBinning(get_HBinning()); dest -> set_VBinning(get_VBinning()); dest -> set_CameraGain(get_CameraGain()); dest -> set_Triggered(get_Triggered()); dest -> set_UserComment1(get_UserComment1()); dest -> set_UserComment2(get_UserComment2()); dest -> set_UserComment3(get_UserComment3()); dest -> set_UserComment4(get_UserComment4()); dest -> set_ObjectSaved(get_ObjectSaved()); dest -> set_Normalization(get_Normalization()); dest -> set_ExtraInputs(get_ExtraInputs()); dest -> set_Used(get_Used()); QByteArray name; foreach(name, dynamicPropertyNames()) { dest -> setProperty(name.data(), property(name.data())); }
bool Message::hasProperty(const QString &name) const { return dynamicPropertyNames().contains(name.toUtf8().constData()); }
void CDiagramItem::toXml(QDomElement &n) { QMetaObject *meta = NULL; QMetaProperty prop; QDomDocument doc; QDomElement ext, childNode; QList<QByteArray> props; QStringList filtersOut, filtersIn; CDiagramSerializable *inst = NULL; filtersIn = filterProperties(); filtersOut << "width" << "height" << "x" << "y" << "z" << "pos" << "size" << "parent" << "effect" << "children" << "layout" << "palette"; doc = n.ownerDocument(); ext = doc.createElement( QString("ext") ); childNode = doc.createElement( QString("children") ); n.setAttribute( QString("type"), interType()); n.setAttribute( QString("category"), category() ); n.setAttribute( QString("name"), name() ); n.setAttribute( QString("libCategory"), libraryCategory() ); n.setAttribute( QString("libName"), libraryName() ); n.setAttribute( QString("id"), QString::number(id()) ); meta = const_cast<QMetaObject*>(metaObject()); for (int i = 0; i < meta->propertyCount(); ++i) { QString propName; QByteArray b; QDataStream s(&b, QIODevice::WriteOnly); prop = meta->property(i); propName = QString(prop.name()); if (filtersIn.isEmpty()) { if (filtersOut.contains(propName, Qt::CaseInsensitive) || prop.userType() == 0) { continue; } } else { if (!filtersIn.contains(propName, Qt::CaseInsensitive)) { continue; } } if (prop.isValid() && prop.isReadable()) { s << prop.read(this); QDomElement e = doc.createElement(QString("property")); e.setAttribute( QString("name"), QString(prop.name()) ); e.setAttribute( QString("type"), QString(prop.typeName()) ); e.appendChild( doc.createTextNode( QString(b.toBase64() ) ) ); n.appendChild(e); // qDebug() << "save->name:" << prop.name() << " value:" << prop.read(this); } } props = dynamicPropertyNames(); for (int i = 0; i < props.length(); ++i) { inst = RS_PROPERTY(props.at(i).constData()); // inst = property(props.at(i).constData()).value<CDiagramSerializable*>(); if (inst) { QDomElement c = doc.createElement(QString("child")); c.setAttribute( QString("dynamicProperty"), QString(props.at(i).constData()) ); inst->toXml(c); childNode.appendChild(c); } } n.appendChild(childNode); extToXml( ext ); n.appendChild( ext ); }