QDomElement lastfm::Track::toDomElement( QDomDocument& xml ) const { QDomElement item = xml.createElement( "track" ); #define makeElement( tagname, getter ) { \ QString v = getter; \ if (!v.isEmpty()) \ { \ QDomElement e = xml.createElement( tagname ); \ e.appendChild( xml.createTextNode( v ) ); \ item.appendChild( e ); \ } \ } makeElement( "artist", d->artist ); makeElement( "albumArtist", d->albumArtist ); makeElement( "album", d->album ); makeElement( "track", d->title ); makeElement( "correctedArtist", d->correctedArtist ); makeElement( "correctedAlbumArtist", d->correctedAlbumArtist ); makeElement( "correctedAlbum", d->correctedAlbum ); makeElement( "correctedTrack", d->correctedTitle ); makeElement( "duration", QString::number( d->duration ) ); makeElement( "timestamp", QString::number( d->time.toTime_t() ) ); makeElement( "url", d->url.toString() ); makeElement( "source", QString::number( d->source ) ); makeElement( "rating", QString::number(d->rating) ); makeElement( "fpId", QString::number(d->fpid) ); makeElement( "mbId", mbid() ); makeElement( "loved", QString::number( isLoved() ) ); makeElement( "scrobbleStatus", QString::number( scrobbleStatus() ) ); makeElement( "scrobbleError", QString::number( scrobbleError() ) ); // put the images urls in the dom QMapIterator<lastfm::ImageSize, QUrl> imageIter( d->m_images ); while (imageIter.hasNext()) { QDomElement e = xml.createElement( "image" ); e.appendChild( xml.createTextNode( imageIter.next().value().toString() ) ); e.setAttribute( "size", imageIter.key() ); item.appendChild( e ); } // add the extras to the dom QDomElement extras = xml.createElement( "extras" ); QMapIterator<QString, QString> extrasIter( d->extras ); while (extrasIter.hasNext()) { QDomElement e = xml.createElement( extrasIter.next().key() ); e.appendChild( xml.createTextNode( extrasIter.value() ) ); extras.appendChild( e ); } item.appendChild( extras ); return item; }
QDomElement lastfm::Track::toDomElement( QDomDocument& xml ) const { QDomElement item = xml.createElement( "track" ); #define makeElement( tagname, getter ) { \ QString v = getter; \ if (!v.isEmpty()) \ { \ QDomElement e = xml.createElement( tagname ); \ e.appendChild( xml.createTextNode( v ) ); \ item.appendChild( e ); \ } \ } makeElement( "artist", d->artist ); makeElement( "album", d->album ); makeElement( "track", d->title ); makeElement( "duration", QString::number( d->duration ) ); makeElement( "timestamp", QString::number( d->time.toTime_t() ) ); makeElement( "url", d->url.toString() ); makeElement( "source", QString::number( d->source ) ); makeElement( "rating", QString::number(d->rating) ); makeElement( "fpId", QString::number(d->fpid) ); makeElement( "mbId", mbid() ); QDomElement extras = xml.createElement( "extras" ); QMapIterator<QString, QString> i( d->extras ); while (i.hasNext()) { QDomElement e = xml.createElement( i.next().key() ); e.appendChild( xml.createTextNode( i.value() ) ); extras.appendChild( e ); } item.appendChild( extras ); return item; }