bool QgsLegendModel::writeXML( QDomElement& composerLegendElem, QDomDocument& doc ) const { if ( composerLegendElem.isNull() ) { return false; } QDomElement legendModelElem = doc.createElement( "Model" ); legendModelElem.setAttribute( "autoUpdate", mAutoUpdate ); int nTopLevelItems = invisibleRootItem()->rowCount(); QStandardItem* currentItem = 0; QgsComposerLegendItem* currentLegendItem = 0; for ( int i = 0; i < nTopLevelItems; ++i ) { currentItem = invisibleRootItem()->child( i, 0 ); currentLegendItem = dynamic_cast<QgsComposerLegendItem*>( currentItem ); if ( currentLegendItem ) { currentLegendItem->writeXML( legendModelElem, doc ); } } composerLegendElem.appendChild( legendModelElem ); return true; }
void QgsComposerLegendItem::writeXMLChildren( QDomElement& elem, QDomDocument& doc ) const { int numRows = rowCount(); QgsComposerLegendItem* currentItem = 0; for ( int i = 0; i < numRows; ++i ) { currentItem = dynamic_cast<QgsComposerLegendItem*>( child( i, 0 ) ); if ( currentItem ) { currentItem->writeXML( elem, doc ); } } }
QMimeData* QgsLegendModel::mimeData( const QModelIndexList &indexes ) const { QMimeData* mimeData = new QMimeData(); QByteArray encodedData; QDomDocument xmlDoc; QDomElement xmlRootElement = xmlDoc.createElement( "LegendModelDragData" ); xmlDoc.appendChild( xmlRootElement ); QModelIndexList::const_iterator indexIt = indexes.constBegin(); for ( ; indexIt != indexes.constEnd(); ++indexIt ) { QStandardItem* sItem = itemFromIndex( *indexIt ); if ( sItem ) { QgsComposerLegendItem* mItem = dynamic_cast<QgsComposerLegendItem*>( sItem ); if ( mItem ) { mItem->writeXML( xmlRootElement, xmlDoc ); } } } mimeData->setData( "text/xml", xmlDoc.toByteArray() ); return mimeData; }