diff --git a/autotests/taglibwritertest.cpp b/autotests/taglibwritertest.cpp --- a/autotests/taglibwritertest.cpp +++ b/autotests/taglibwritertest.cpp @@ -39,16 +39,31 @@ WriteData data(testFilePath(TEST_FILENAME), "audio/opus"); data.add(Property::Title, "Title1"); data.add(Property::Artist, "Artist1"); + data.add(Property::Album, "Album1"); + data.add(Property::TrackNumber, 10); + data.add(Property::ReleaseYear, 1999); + data.add(Property::Genre, "Genre1"); + data.add(Property::Comment, "Comment1"); writerPlugin.write(data); TagLib::FileRef file(testFilePath(TEST_FILENAME).toUtf8().constData(), true); TagLib::Tag* tags = file.tag(); QString extractedTitle = t2q(tags->title()); QString extractedArtist = t2q(tags->artist()); + QString extractedAlbum = t2q(tags->album()); + uint extractedTrackNumber = tags->track(); + uint extractedYear = tags->year(); + QString extractedGenre = t2q(tags->genre()); + QString extractedComment = t2q(tags->comment()); QCOMPARE(extractedTitle, QStringLiteral("Title1")); QCOMPARE(extractedArtist, QStringLiteral("Artist1")); + QCOMPARE(extractedAlbum, QStringLiteral("Album1")); + QCOMPARE(extractedTrackNumber, 10u); + QCOMPARE(extractedYear, 1999u); + QCOMPARE(extractedGenre, QStringLiteral("Genre1")); + QCOMPARE(extractedComment, QStringLiteral("Comment1")); } void TagLibWriterTest::cleanupTestCase() diff --git a/src/writers/taglibwriter.cpp b/src/writers/taglibwriter.cpp --- a/src/writers/taglibwriter.cpp +++ b/src/writers/taglibwriter.cpp @@ -43,17 +43,52 @@ TagLib::Tag* tags = file.tag(); TagLib::String title; - TagLib::String artists; + TagLib::String artist; + TagLib::String album; + TagLib::String genre; + TagLib::String comment; if (properties.contains(Property::Title)) { title = q2t(properties.value(Property::Title).toString()); tags->setTitle(title); } if (properties.contains(Property::Artist)) { - artists = q2t(properties.value(Property::Artist).toString()); - tags->setArtist(artists); + artist = q2t(properties.value(Property::Artist).toString()); + tags->setArtist(artist); } + if (properties.contains(Property::Album)) { + album = q2t(properties.value(Property::Album).toString()); + tags->setAlbum(album); + } + + if (properties.contains(Property::TrackNumber)) { + int trackNumber = properties.value(Property::TrackNumber).toInt(); + //taglib requires uint + if (trackNumber >= 0) { + tags->setTrack(trackNumber); + } + } + + if (properties.contains(Property::ReleaseYear)) { + int year = properties.value(Property::ReleaseYear).toInt(); + //taglib requires uint + if (year >= 0) { + tags->setYear(year); + } + } + + if (properties.contains(Property::Genre)) { + genre = q2t(properties.value(Property::Genre).toString()); + tags->setGenre(genre); + } + + if (properties.contains(Property::Comment)) { + comment = q2t(properties.value(Property::Comment).toString()); + tags->setComment(comment); + } + + file.save(); }