Hello community,
here is the log from the commit of package elisa for openSUSE:Factory checked in at 2019-07-03 15:15:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/elisa (Old)
and /work/SRC/openSUSE:Factory/.elisa.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "elisa"
Wed Jul 3 15:15:06 2019 rev:8 rq:713103 version:0.4.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/elisa/elisa.changes 2019-06-24 21:53:38.876119213 +0200
+++ /work/SRC/openSUSE:Factory/.elisa.new.4615/elisa.changes 2019-07-03 15:15:06.830977843 +0200
@@ -1,0 +2,8 @@
+Sun Jun 30 20:33:02 UTC 2019 - wbauer@tmo.at
+
+- Update to 0.4.2
+ * Fix restore of tracks with missing metadata in playlist (this
+ was the case for tracks without album metadata)
+ * Fix view selector not following the color theme (kde#408435)
+
+-------------------------------------------------------------------
Old:
----
elisa-0.4.1.tar.xz
elisa-0.4.1.tar.xz.sig
New:
----
elisa-0.4.2.tar.xz
elisa-0.4.2.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ elisa.spec ++++++
--- /var/tmp/diff_new_pack.DWm53n/_old 2019-07-03 15:15:09.610983500 +0200
+++ /var/tmp/diff_new_pack.DWm53n/_new 2019-07-03 15:15:09.626983533 +0200
@@ -20,7 +20,7 @@
%define kf5_version 5.48.0
%bcond_without lang
Name: elisa
-Version: 0.4.1
+Version: 0.4.2
Release: 0
Summary: Music player and collection organizer
License: LGPL-3.0-or-later
++++++ elisa-0.4.1.tar.xz -> elisa-0.4.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/CMakeLists.txt new/elisa-0.4.2/CMakeLists.txt
--- old/elisa-0.4.1/CMakeLists.txt 2019-06-19 22:41:34.000000000 +0200
+++ new/elisa-0.4.2/CMakeLists.txt 2019-06-29 15:03:26.000000000 +0200
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.8)
project(elisa
- VERSION 0.4.1
+ VERSION 0.4.2
LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/autotests/databaseinterfacetest.cpp new/elisa-0.4.2/autotests/databaseinterfacetest.cpp
--- old/elisa-0.4.1/autotests/databaseinterfacetest.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/autotests/databaseinterfacetest.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -4958,6 +4958,155 @@
QCOMPARE(musicDbTrackModifiedSpy.count(), 0);
QCOMPARE(musicDbDatabaseErrorSpy.count(), 0);
}
+
+ void enqueueTracksWithMissingMetadata()
+ {
+ QTemporaryFile databaseFile;
+ databaseFile.open();
+
+ qDebug() << "enqueueTracksWithMissingMetadata" << databaseFile.fileName();
+
+ DatabaseInterface musicDb;
+
+ musicDb.init(QStringLiteral("enqueueTracksWithMissingMetadata"), databaseFile.fileName());
+
+ QSignalSpy musicDbArtistAddedSpy(&musicDb, &DatabaseInterface::artistsAdded);
+ QSignalSpy musicDbAlbumAddedSpy(&musicDb, &DatabaseInterface::albumsAdded);
+ QSignalSpy musicDbTrackAddedSpy(&musicDb, &DatabaseInterface::tracksAdded);
+ QSignalSpy musicDbArtistRemovedSpy(&musicDb, &DatabaseInterface::artistRemoved);
+ QSignalSpy musicDbAlbumRemovedSpy(&musicDb, &DatabaseInterface::albumRemoved);
+ QSignalSpy musicDbTrackRemovedSpy(&musicDb, &DatabaseInterface::trackRemoved);
+ QSignalSpy musicDbAlbumModifiedSpy(&musicDb, &DatabaseInterface::albumModified);
+ QSignalSpy musicDbTrackModifiedSpy(&musicDb, &DatabaseInterface::trackModified);
+ QSignalSpy musicDbDatabaseErrorSpy(&musicDb, &DatabaseInterface::databaseError);
+
+ QCOMPARE(musicDb.allAlbumsData().count(), 0);
+ QCOMPARE(musicDb.allArtistsData().count(), 0);
+ QCOMPARE(musicDb.allTracksData().count(), 0);
+ QCOMPARE(musicDbArtistAddedSpy.count(), 0);
+ QCOMPARE(musicDbAlbumAddedSpy.count(), 0);
+ QCOMPARE(musicDbTrackAddedSpy.count(), 0);
+ QCOMPARE(musicDbArtistRemovedSpy.count(), 0);
+ QCOMPARE(musicDbAlbumRemovedSpy.count(), 0);
+ QCOMPARE(musicDbTrackRemovedSpy.count(), 0);
+ QCOMPARE(musicDbAlbumModifiedSpy.count(), 0);
+ QCOMPARE(musicDbTrackModifiedSpy.count(), 0);
+ QCOMPARE(musicDbDatabaseErrorSpy.count(), 0);
+
+ auto fullTrack = MusicAudioTrack{true, QStringLiteral("$23"), QStringLiteral("0"), QStringLiteral("track6"),
+ QStringLiteral("artist2"), QStringLiteral("album3"), QStringLiteral("artist2"),
+ 6, 1, QTime::fromMSecsSinceStartOfDay(23), {QUrl::fromLocalFile(QStringLiteral("/test/$23"))},
+ QDateTime::fromMSecsSinceEpoch(23),
+ QUrl::fromLocalFile(QStringLiteral("album3")), 5, true,
+ QStringLiteral("genre1"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false};
+
+ fullTrack.setBitRate(154);
+ fullTrack.setChannels(2);
+ fullTrack.setSampleRate(48000);
+
+ auto newTrack = MusicAudioTrack{};
+
+ newTrack.setValid(true);
+ newTrack.setId(QStringLiteral("$29"));
+ newTrack.setParentId(QStringLiteral("0"));
+ newTrack.setTitle(QStringLiteral("track19"));
+ newTrack.setArtist(QStringLiteral("artist2"));
+ newTrack.setDuration(QTime::fromMSecsSinceStartOfDay(29));
+ newTrack.setResourceURI(QUrl::fromLocalFile(QStringLiteral("/$29")));
+ newTrack.setFileModificationTime(QDateTime::fromMSecsSinceEpoch(29));
+ newTrack.setAlbumCover(QUrl::fromLocalFile(QStringLiteral("/withoutAlbum")));
+ newTrack.setRating(9);
+ newTrack.setIsSingleDiscAlbum(true);
+ newTrack.setGenre(QStringLiteral("genre1"));
+ newTrack.setComposer(QStringLiteral("composer1"));
+ newTrack.setLyricist(QStringLiteral("lyricist1"));
+ newTrack.setHasEmbeddedCover(false);
+
+ musicDb.insertTracksList({fullTrack, newTrack}, mNewCovers);
+
+ QCOMPARE(musicDb.allAlbumsData().count(), 1);
+ QCOMPARE(musicDb.allArtistsData().count(), 1);
+ QCOMPARE(musicDb.allTracksData().count(), 2);
+ QCOMPARE(musicDbArtistAddedSpy.count(), 1);
+ QCOMPARE(musicDbAlbumAddedSpy.count(), 1);
+ QCOMPARE(musicDbTrackAddedSpy.count(), 1);
+ QCOMPARE(musicDbArtistRemovedSpy.count(), 0);
+ QCOMPARE(musicDbAlbumRemovedSpy.count(), 0);
+ QCOMPARE(musicDbTrackRemovedSpy.count(), 0);
+ QCOMPARE(musicDbAlbumModifiedSpy.count(), 0);
+ QCOMPARE(musicDbTrackModifiedSpy.count(), 0);
+ QCOMPARE(musicDbDatabaseErrorSpy.count(), 0);
+
+ auto firstTrackId = musicDb.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track6"), QStringLiteral("artist2"),
+ QStringLiteral("album3"), 6, 1);
+ auto firstTrack = musicDb.trackDataFromDatabaseId(firstTrackId);
+
+ auto firstTrackTitle = firstTrack.title();
+ auto firstTrackArtist = firstTrack.artist();
+ auto firstTrackAlbumArtist = firstTrack.albumArtist();
+ auto firstTrackAlbum = firstTrack.album();
+ auto firstTrackImage = firstTrack.albumCover();
+ auto firstTrackDuration = firstTrack.duration();
+ auto firstTrackMilliSecondsDuration = firstTrack.duration().msecsSinceStartOfDay();
+ auto firstTrackTrackNumber = firstTrack.trackNumber();
+ auto firstTrackDiscNumber = firstTrack.discNumber();
+ const auto &firstTrackResource = firstTrack.resourceURI();
+ auto firstTrackRating = firstTrack.rating();
+ auto firstIsSingleDiscAlbum = firstTrack.isSingleDiscAlbum();
+
+ QCOMPARE(firstTrack.isValid(), true);
+ QCOMPARE(firstTrackTitle, QStringLiteral("track6"));
+ QCOMPARE(firstTrackArtist, QStringLiteral("artist2"));
+ QCOMPARE(firstTrackAlbumArtist, QStringLiteral("artist2"));
+ QCOMPARE(firstTrackAlbum, QStringLiteral("album3"));
+ QCOMPARE(firstTrackImage.isValid(), true);
+ QCOMPARE(firstTrackImage, QUrl::fromLocalFile(QStringLiteral("album3")));
+ QCOMPARE(firstTrackDuration, QTime::fromMSecsSinceStartOfDay(23));
+ QCOMPARE(firstTrackMilliSecondsDuration, 23);
+ QCOMPARE(firstTrackTrackNumber, 6);
+ QCOMPARE(firstTrackDiscNumber, 1);
+ QCOMPARE(firstTrackResource.isValid(), true);
+ QCOMPARE(firstTrackResource, QUrl::fromLocalFile(QStringLiteral("/test/$23")));
+ QCOMPARE(firstTrackRating, 5);
+ QCOMPARE(firstIsSingleDiscAlbum, true);
+
+ auto secondTrackId = musicDb.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track19"), QStringLiteral("artist2"), {}, {}, {});
+ auto secondTrack = musicDb.trackDataFromDatabaseId(secondTrackId);
+
+ auto secondTrackTitle = secondTrack.title();
+ auto secondTrackArtist = secondTrack.artist();
+ auto secondTrackAlbumArtist = secondTrack.albumArtist();
+ auto secondTrackAlbum = secondTrack.album();
+ auto secondTrackImage = secondTrack.albumCover();
+ auto secondTrackDuration = secondTrack.duration();
+ auto secondTrackMilliSecondsDuration = secondTrack.duration().msecsSinceStartOfDay();
+ auto secondTrackTrackNumber = secondTrack.trackNumber();
+ auto secondTrackDiscNumber = secondTrack.discNumber();
+ auto secondTrackChannels = secondTrack.channels();
+ auto secondTrackBitRate = secondTrack.bitRate();
+ auto secondTrackSampleRate = secondTrack.sampleRate();
+ const auto &secondTrackResource = secondTrack.resourceURI();
+ auto secondTrackRating = secondTrack.rating();
+ auto secondIsSingleDiscAlbum = secondTrack.isSingleDiscAlbum();
+
+ QCOMPARE(secondTrack.isValid(), true);
+ QCOMPARE(secondTrackTitle, QStringLiteral("track19"));
+ QCOMPARE(secondTrackArtist, QStringLiteral("artist2"));
+ QCOMPARE(secondTrackAlbumArtist, QString());
+ QCOMPARE(secondTrackAlbum, QString());
+ QCOMPARE(secondTrackImage.isValid(), false);
+ QCOMPARE(secondTrackDuration, QTime::fromMSecsSinceStartOfDay(29));
+ QCOMPARE(secondTrackMilliSecondsDuration, 29);
+ QCOMPARE(secondTrackTrackNumber, 0);
+ QCOMPARE(secondTrackDiscNumber, 0);
+ QCOMPARE(secondTrackChannels, 0);
+ QCOMPARE(secondTrackBitRate, 0);
+ QCOMPARE(secondTrackSampleRate, 0);
+ QCOMPARE(secondTrackResource.isValid(), true);
+ QCOMPARE(secondTrackResource, QUrl::fromLocalFile(QStringLiteral("/$29")));
+ QCOMPARE(secondTrackRating, 9);
+ QCOMPARE(secondIsSingleDiscAlbum, true);
+ }
};
QTEST_GUILESS_MAIN(DatabaseInterfaceTests)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/autotests/mediaplaylisttest.cpp new/elisa-0.4.2/autotests/mediaplaylisttest.cpp
--- old/elisa-0.4.1/autotests/mediaplaylisttest.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/autotests/mediaplaylisttest.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -2918,6 +2918,140 @@
QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::MilliSecondsDurationRole).toInt(), 3);
}
+void MediaPlayListTest::restoreTrackWithoutAlbum()
+{
+ QTemporaryFile databaseFile;
+ databaseFile.open();
+
+ qDebug() << "restoreTrackWithoutAlbum" << databaseFile.fileName();
+
+ MediaPlayList myPlayList;
+ QAbstractItemModelTester testModel(&myPlayList);
+ DatabaseInterface myDatabaseContent;
+ TracksListener myListener(&myDatabaseContent);
+
+ QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved);
+ QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved);
+ QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted);
+ QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved);
+ QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved);
+ QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted);
+ QSignalSpy persistentStateChangedSpy(&myPlayList, &MediaPlayList::persistentStateChanged);
+ QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged);
+ QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList);
+ QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList);
+
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ QCOMPARE(rowsMovedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 0);
+ QCOMPARE(persistentStateChangedSpy.count(), 0);
+ QCOMPARE(dataChangedSpy.count(), 0);
+ QCOMPARE(newTrackByNameInListSpy.count(), 0);
+ QCOMPARE(newEntryInListSpy.count(), 0);
+
+ myDatabaseContent.init(QStringLiteral("restoreTrackWithoutAlbum"), databaseFile.fileName());
+
+ connect(&myListener, &TracksListener::trackHasChanged,
+ &myPlayList, &MediaPlayList::trackChanged,
+ Qt::QueuedConnection);
+ connect(&myListener, &TracksListener::tracksListAdded,
+ &myPlayList, &MediaPlayList::tracksListAdded,
+ Qt::QueuedConnection);
+ connect(&myPlayList, &MediaPlayList::newTrackByNameInList,
+ &myListener, &TracksListener::trackByNameInList,
+ Qt::QueuedConnection);
+ connect(&myPlayList, &MediaPlayList::newEntryInList,
+ &myListener, &TracksListener::newEntryInList,
+ Qt::QueuedConnection);
+ connect(&myDatabaseContent, &DatabaseInterface::tracksAdded,
+ &myListener, &TracksListener::tracksAdded);
+
+ myDatabaseContent.insertTracksList(mNewTracks, mNewCovers);
+
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ QCOMPARE(rowsMovedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 0);
+ QCOMPARE(persistentStateChangedSpy.count(), 0);
+ QCOMPARE(dataChangedSpy.count(), 0);
+ QCOMPARE(newTrackByNameInListSpy.count(), 0);
+ QCOMPARE(newEntryInListSpy.count(), 0);
+
+ auto newTrack = MusicAudioTrack{};
+
+ newTrack.setValid(true);
+ newTrack.setId(QStringLiteral("$29"));
+ newTrack.setParentId(QStringLiteral("0"));
+ newTrack.setTitle(QStringLiteral("track19"));
+ newTrack.setArtist(QStringLiteral("artist2"));
+ newTrack.setDuration(QTime::fromMSecsSinceStartOfDay(29));
+ newTrack.setResourceURI(QUrl::fromLocalFile(QStringLiteral("/$29")));
+ newTrack.setFileModificationTime(QDateTime::fromMSecsSinceEpoch(29));
+ newTrack.setAlbumCover(QUrl::fromLocalFile(QStringLiteral("withoutAlbum")));
+ newTrack.setRating(9);
+ newTrack.setIsSingleDiscAlbum(true);
+ newTrack.setGenre(QStringLiteral("genre1"));
+ newTrack.setComposer(QStringLiteral("composer1"));
+ newTrack.setLyricist(QStringLiteral("lyricist1"));
+ newTrack.setHasEmbeddedCover(false);
+
+ myDatabaseContent.insertTracksList({newTrack}, mNewCovers);
+
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ QCOMPARE(rowsMovedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 0);
+ QCOMPARE(persistentStateChangedSpy.count(), 0);
+ QCOMPARE(dataChangedSpy.count(), 0);
+ QCOMPARE(newTrackByNameInListSpy.count(), 0);
+ QCOMPARE(newEntryInListSpy.count(), 0);
+
+ auto newEntry = MediaPlayListEntry{};
+
+ newEntry.mTitle = QStringLiteral("track19");
+ newEntry.mArtist = QStringLiteral("artist2");
+
+ myPlayList.enqueueRestoredEntry(newEntry);
+
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ QCOMPARE(rowsMovedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 1);
+ QCOMPARE(persistentStateChangedSpy.count(), 1);
+ QCOMPARE(dataChangedSpy.count(), 1);
+ QCOMPARE(newTrackByNameInListSpy.count(), 1);
+ QCOMPARE(newEntryInListSpy.count(), 0);
+
+ QCOMPARE(dataChangedSpy.wait(), true);
+
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ QCOMPARE(rowsMovedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 1);
+ QCOMPARE(persistentStateChangedSpy.count(), 1);
+ QCOMPARE(dataChangedSpy.count(), 2);
+ QCOMPARE(newTrackByNameInListSpy.count(), 1);
+ QCOMPARE(newEntryInListSpy.count(), 0);
+
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track19"));
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), {});
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist2"));
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 0);
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 0);
+ QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::MilliSecondsDurationRole).toInt(), 29);
+}
+
void MediaPlayListTest::testHasHeaderAlbumWithSameTitle()
{
MediaPlayList myPlayList;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/autotests/mediaplaylisttest.h new/elisa-0.4.2/autotests/mediaplaylisttest.h
--- old/elisa-0.4.1/autotests/mediaplaylisttest.h 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/autotests/mediaplaylisttest.h 2019-06-29 15:02:46.000000000 +0200
@@ -73,6 +73,8 @@
void restoreMultipleIdenticalTracks();
+ void restoreTrackWithoutAlbum();
+
void testHasHeaderAlbumWithSameTitle();
void testSavePersistentState();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/org.kde.elisa.appdata.xml new/elisa-0.4.2/org.kde.elisa.appdata.xml
--- old/elisa-0.4.1/org.kde.elisa.appdata.xml 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/org.kde.elisa.appdata.xml 2019-06-29 15:02:46.000000000 +0200
@@ -140,6 +140,8 @@
KDE
<releases>
+ <release version="0.4.2" date="2019-06-30"/>
+ <release version="0.4.1" date="2019-06-20"/>
<release version="0.4.0" date="2019-05-20"/>
<release version="0.3.80" date="2019-05-04"/>
<release version="0.3.0" date="2018-09-29"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/po/de/elisa.po new/elisa-0.4.2/po/de/elisa.po
--- old/elisa-0.4.1/po/de/elisa.po 2019-06-19 22:41:06.000000000 +0200
+++ new/elisa-0.4.2/po/de/elisa.po 2019-06-29 15:03:00.000000000 +0200
@@ -1,14 +1,14 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
#
-# Burkhard Lück , 2016, 2017, 2018.
+# Burkhard Lück , 2016, 2017, 2018, 2019.
# Frederik Schwarzer , 2016, 2018.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2019-06-13 07:41+0200\n"
-"PO-Revision-Date: 2018-09-23 20:42+0100\n"
+"PO-Revision-Date: 2019-06-24 14:33+0200\n"
"Last-Translator: Burkhard Lück \n"
"Language-Team: German \n"
"Language: de\n"
@@ -16,7 +16,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 18.12.3\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -69,10 +69,9 @@
msgstr "Ein einfacher Medienspieler geschrieben mit KDE Frameworks"
#: main.cpp:118
-#, fuzzy, kde-format
-#| msgid "(c) 2015-2018, Elisa contributors"
+#, kde-format
msgid "(c) 2015-2019, Elisa contributors"
-msgstr "(c) 2015-2018, Elisa-Mitwirkende"
+msgstr "(c) 2015-2019, Elisa-Mitwirkende"
#: main.cpp:120
#, kde-format
@@ -105,154 +104,118 @@
msgstr "Verschiedene Verbesserungen an der Bedienungsoberfläche"
#: models/trackmetadatamodel.cpp:64
-#, fuzzy, kde-format
-#| msgctxt "Track title for track metadata view"
-#| msgid "Title:"
+#, kde-format
msgctxt "Track title for track metadata view"
msgid "Title"
-msgstr "Titel:"
+msgstr "Titel"
#: models/trackmetadatamodel.cpp:67
-#, fuzzy, kde-format
-#| msgctxt "Duration label for track metadata view"
-#| msgid "Duration:"
+#, kde-format
msgctxt "Duration label for track metadata view"
msgid "Duration"
-msgstr "Dauer:"
+msgstr "Dauer"
#: models/trackmetadatamodel.cpp:70
-#, fuzzy, kde-format
-#| msgctxt "Track artist for track metadata view"
-#| msgid "Artist:"
+#, kde-format
msgctxt "Track artist for track metadata view"
msgid "Artist"
-msgstr "Interpret:"
+msgstr "Interpret"
#: models/trackmetadatamodel.cpp:73
-#, fuzzy, kde-format
-#| msgctxt "Album name for track metadata view"
-#| msgid "Album:"
+#, kde-format
msgctxt "Album name for track metadata view"
msgid "Album"
-msgstr "Album:"
+msgstr "Album"
#: models/trackmetadatamodel.cpp:76
-#, fuzzy, kde-format
-#| msgctxt "Album artist for track metadata view"
-#| msgid "Album Artist:"
+#, kde-format
msgctxt "Album artist for track metadata view"
msgid "Album Artist"
-msgstr "Interpret des Albums:"
+msgstr "Interpret des Albums"
#: models/trackmetadatamodel.cpp:79
-#, fuzzy, kde-format
-#| msgctxt "Track number for track metadata view"
-#| msgid "Track Number:"
+#, kde-format
msgctxt "Track number for track metadata view"
msgid "Track Number"
-msgstr "Nummer des Stücks:"
+msgstr "Nummer des Stücks"
#: models/trackmetadatamodel.cpp:82
-#, fuzzy, kde-format
-#| msgctxt "Disc number for track metadata view"
-#| msgid "Disc Number:"
+#, kde-format
msgctxt "Disc number for track metadata view"
msgid "Disc Number"
-msgstr "CD-Nummer:"
+msgstr "CD-Nummer"
#: models/trackmetadatamodel.cpp:85
-#, fuzzy, kde-format
-#| msgctxt "Rating label for information panel"
-#| msgid "Rating:"
+#, kde-format
msgctxt "Rating label for information panel"
msgid "Rating"
-msgstr "Bewertung:"
+msgstr "Bewertung"
#: models/trackmetadatamodel.cpp:88
-#, fuzzy, kde-format
-#| msgctxt "Genre label for track metadata view"
-#| msgid "Genre:"
+#, kde-format
msgctxt "Genre label for track metadata view"
msgid "Genre"
-msgstr "Genre:"
+msgstr "Genre"
#: models/trackmetadatamodel.cpp:91
-#, fuzzy, kde-format
-#| msgctxt "Lyricist label for track metadata view"
-#| msgid "Lyricist:"
+#, kde-format
msgctxt "Lyricist label for track metadata view"
msgid "Lyricist"
-msgstr "Texter:"
+msgstr "Texter"
#: models/trackmetadatamodel.cpp:94
-#, fuzzy, kde-format
-#| msgctxt "Composer name for track metadata view"
-#| msgid "Composer:"
+#, kde-format
msgctxt "Composer name for track metadata view"
msgid "Composer"
-msgstr "Komponist:"
+msgstr "Komponist"
#: models/trackmetadatamodel.cpp:97
-#, fuzzy, kde-format
-#| msgctxt "Comment label for track metadata view"
-#| msgid "Comment:"
+#, kde-format
msgctxt "Comment label for track metadata view"
msgid "Comment"
-msgstr "Kommentar:"
+msgstr "Kommentar"
#: models/trackmetadatamodel.cpp:100
-#, fuzzy, kde-format
-#| msgctxt "Year label for track metadata view"
-#| msgid "Year:"
+#, kde-format
msgctxt "Year label for track metadata view"
msgid "Year"
-msgstr "Jahr:"
+msgstr "Jahr"
#: models/trackmetadatamodel.cpp:103
-#, fuzzy, kde-format
-#| msgctxt "Channels label for track metadata view"
-#| msgid "Channels:"
+#, kde-format
msgctxt "Channels label for track metadata view"
msgid "Channels"
-msgstr "Kanäle:"
+msgstr "Kanäle"
#: models/trackmetadatamodel.cpp:106
-#, fuzzy, kde-format
-#| msgctxt "Bit rate label for track metadata view"
-#| msgid "Bit Rate:"
+#, kde-format
msgctxt "Bit rate label for track metadata view"
msgid "Bit Rate"
-msgstr "Bitrate:"
+msgstr "Bitrate"
#: models/trackmetadatamodel.cpp:109
-#, fuzzy, kde-format
-#| msgctxt "Sample Rate label for track metadata view"
-#| msgid "Sample Rate:"
+#, kde-format
msgctxt "Sample Rate label for track metadata view"
msgid "Sample Rate"
-msgstr "Abtastrate:"
+msgstr "Abtastrate"
#: models/trackmetadatamodel.cpp:112
#, kde-format
msgctxt "Last play date label for track metadata view"
msgid "Last played"
-msgstr ""
+msgstr "Letzte Wiedergabe"
#: models/trackmetadatamodel.cpp:115
-#, fuzzy, kde-format
-#| msgctxt "Play now current track from play list"
-#| msgid "Play Now"
+#, kde-format
msgctxt "Play counter label for track metadata view"
msgid "Play count"
-msgstr "Jetzt abspielen"
+msgstr "Wiedergabezähler"
#: models/trackmetadatamodel.cpp:118 qml/ContextViewLyrics.qml:32
-#, fuzzy, kde-format
-#| msgctxt "Lyricist label for track metadata view"
-#| msgid "Lyricist:"
+#, kde-format
msgctxt "Lyrics label for track metadata view"
msgid "Lyrics"
-msgstr "Texter:"
+msgstr "Liedtext"
#: models/viewsmodel.cpp:44
#, kde-format
@@ -261,18 +224,16 @@
msgstr "Wiedergabe"
#: models/viewsmodel.cpp:45
-#, fuzzy, kde-format
-#| msgctxt "Clear playlist and play"
-#| msgid "Replace and Play"
+#, kde-format
msgctxt "Title of the view of recently played tracks"
msgid "Recently Played"
-msgstr "Ersetzen und abspielen"
+msgstr "Vor kurzem gespielt"
#: models/viewsmodel.cpp:46
#, kde-format
msgctxt "Title of the view of frequently played tracks"
msgid "Frequently Played"
-msgstr ""
+msgstr "Oft gespielt"
#: models/viewsmodel.cpp:51 qml/FileBrowserView.qml:70
#, kde-format
@@ -284,7 +245,7 @@
#, kde-format
msgctxt "explanation for sleep inhibit during play of music"
msgid "Playing Music"
-msgstr ""
+msgstr "Musik-Wiedergabe"
#: qml/ApplicationMenu.qml:26 qml/MediaPlayerControl.qml:62
#, kde-format
@@ -296,7 +257,7 @@
#, kde-format
msgctxt "Refresh Music Collection application menu entry"
msgid "Refresh Music Collection"
-msgstr ""
+msgstr "Musik-Sammlung neu einlesen"
#: qml/ApplicationMenu.qml:63
#, kde-format
@@ -311,9 +272,7 @@
msgstr "Wiedergabeliste anzeigen"
#: qml/ContextView.qml:55
-#, fuzzy, kde-format
-#| msgctxt "Title of the view of the playlist"
-#| msgid "Now Playing"
+#, kde-format
msgctxt "Title of the context view related to the currently playing track"
msgid "Now Playing"
msgstr "Wiedergabe"
@@ -352,12 +311,10 @@
msgstr "Jetzt abspielen und Wiedergabeliste ersetzen"
#: qml/GridBrowserDelegate.qml:162
-#, fuzzy, kde-format
-#| msgctxt "Hide playlist"
-#| msgid "Hide Playlist"
+#, kde-format
msgctxt "Add whole container to play list"
msgid "Add to playlist"
-msgstr "Wiedergabeliste ausblenden"
+msgstr "Zur Wiedergabeliste hinzufügen"
#: qml/HeaderBar.qml:335
#, kde-format
@@ -461,9 +418,7 @@
msgstr "Wiedergabeliste"
#: qml/MediaPlayListView.qml:131
-#, fuzzy, kde-format
-#| msgid "1 track"
-#| msgid_plural "%1 track"
+#, kde-format
msgid "1 track"
msgid_plural "%1 tracks"
msgstr[0] "1 Stück"
@@ -484,18 +439,16 @@
msgstr ""
#: qml/MediaPlayListView.qml:273
-#, fuzzy, kde-format
-#| msgctxt "Title of the view of the playlist"
-#| msgid "Playlist"
+#, kde-format
msgctxt "Playlist cleared"
msgid "Playlist cleared"
-msgstr "Wiedergabeliste"
+msgstr "Wiedergabeliste geleert"
#: qml/MediaPlayListView.qml:292
#, kde-format
msgctxt "Undo"
msgid "Undo"
-msgstr ""
+msgstr "Zurücknehmen"
#: qml/MediaTrackDelegate.qml:134
#, kde-format
@@ -629,4 +582,4 @@
#, kde-format
msgctxt "message to show when Elisa is scanning music files"
msgid "Scanning music"
-msgstr ""
\ No newline at end of file
+msgstr "Musik wird durchsucht"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/po/it/elisa.po new/elisa-0.4.2/po/it/elisa.po
--- old/elisa-0.4.1/po/it/elisa.po 2019-06-19 22:41:12.000000000 +0200
+++ new/elisa-0.4.2/po/it/elisa.po 2019-06-29 15:03:06.000000000 +0200
@@ -16,7 +16,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 18.12.2\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/po/pl/elisa.po new/elisa-0.4.2/po/pl/elisa.po
--- old/elisa-0.4.1/po/pl/elisa.po 2019-06-19 22:41:18.000000000 +0200
+++ new/elisa-0.4.2/po/pl/elisa.po 2019-06-29 15:03:11.000000000 +0200
@@ -7,7 +7,7 @@
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2019-06-13 07:41+0200\n"
-"PO-Revision-Date: 2019-05-25 07:50+0200\n"
+"PO-Revision-Date: 2019-06-20 20:56+0200\n"
"Last-Translator: Łukasz Wojniłowicz \n"
"Language-Team: Polish \n"
"Language: pl\n"
@@ -203,15 +203,13 @@
#, kde-format
msgctxt "Last play date label for track metadata view"
msgid "Last played"
-msgstr ""
+msgstr "Ostatnie odtworzenie"
#: models/trackmetadatamodel.cpp:115
-#, fuzzy, kde-format
-#| msgctxt "Play now current track from play list"
-#| msgid "Play Now"
+#, kde-format
msgctxt "Play counter label for track metadata view"
msgid "Play count"
-msgstr "Odtwórz teraz"
+msgstr "Licznik odtworzeń"
#: models/trackmetadatamodel.cpp:118 qml/ContextViewLyrics.qml:32
#, kde-format
@@ -226,18 +224,16 @@
msgstr "Teraz odtwarzany"
#: models/viewsmodel.cpp:45
-#, fuzzy, kde-format
-#| msgctxt "Clear playlist and play"
-#| msgid "Replace and Play"
+#, kde-format
msgctxt "Title of the view of recently played tracks"
msgid "Recently Played"
-msgstr "Zastąp i odtwarzaj"
+msgstr "Ostatnio odtwarzane"
#: models/viewsmodel.cpp:46
#, kde-format
msgctxt "Title of the view of frequently played tracks"
msgid "Frequently Played"
-msgstr ""
+msgstr "Najczęściej odtwarzane"
#: models/viewsmodel.cpp:51 qml/FileBrowserView.qml:70
#, kde-format
@@ -261,7 +257,7 @@
#, kde-format
msgctxt "Refresh Music Collection application menu entry"
msgid "Refresh Music Collection"
-msgstr ""
+msgstr "Odśwież zbiór muzyki"
#: qml/ApplicationMenu.qml:63
#, kde-format
@@ -327,50 +323,46 @@
msgstr[2] "jeszcze %1 utworów"
#: qml/MediaPlayerControl.qml:69
-#, fuzzy, kde-format
-#| msgid "Repeat"
+#, kde-format
msgctxt "toggle repeat mode for playlist"
msgid "Toggle Repeat"
-msgstr "Powtórz"
+msgstr "Włącz/wyłącz powtarzanie"
#: qml/MediaPlayerControl.qml:76
-#, fuzzy, kde-format
-#| msgid "Shuffle"
+#, kde-format
msgctxt "toggle shuffle mode for playlist"
msgid "Toggle Shuffle"
-msgstr "Kolejność losowa"
+msgstr "Przełącz losową kolejność"
#: qml/MediaPlayerControl.qml:83
-#, fuzzy, kde-format
-#| msgctxt "Toggle between ascending and descending order"
-#| msgid "Toggle sort order"
+#, kde-format
msgctxt "toggle mute mode for player"
msgid "Toggle Mute"
-msgstr "Przełącz porządek szeregowania"
+msgstr "Przełącz wyciszenie"
#: qml/MediaPlayerControl.qml:90
#, kde-format
msgctxt "toggle play and pause for the audio player"
msgid "Toggle Play and Pause"
-msgstr ""
+msgstr "Odtwarzaj/Wstrzymaj"
#: qml/MediaPlayerControl.qml:98
#, kde-format
msgctxt "skip backward in playlists"
msgid "Skip Backward"
-msgstr ""
+msgstr "Przejdź wstecz"
#: qml/MediaPlayerControl.qml:106
#, kde-format
msgctxt "skip forward in playlists"
msgid "Skip Forward"
-msgstr ""
+msgstr "Przejdź naprzód"
#: qml/MediaPlayerControl.qml:114
#, kde-format
msgctxt "toggle between maximized and minimized ivre"
msgid "Toggle Maximize"
-msgstr ""
+msgstr "Przełącz maksymalizację"
#: qml/MediaPlayerControl.qml:189
#, kde-format
@@ -432,7 +424,7 @@
#, kde-format
msgctxt "Your playlist is empty"
msgid "Your playlist is empty"
-msgstr ""
+msgstr "Twoja lista odtwarzania jest pusta"
#: qml/MediaPlayListView.qml:222
#, kde-format
@@ -441,6 +433,8 @@
"Add some songs to get started. You can browse your music using the views on "
"the left."
msgstr ""
+"Dodaj jakieś utwory, aby zacząć. Swoją muzykę możesz przeglądać w widokach "
+"po lewej."
#: qml/MediaPlayListView.qml:273
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/databaseinterface.cpp new/elisa-0.4.2/src/databaseinterface.cpp
--- old/elisa-0.4.1/src/databaseinterface.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/databaseinterface.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -702,8 +702,8 @@
return result;
}
-qulonglong DatabaseInterface::trackIdFromTitleAlbumTrackDiscNumber(const QString &title, const QString &artist, const QString &album,
- int trackNumber, int discNumber)
+qulonglong DatabaseInterface::trackIdFromTitleAlbumTrackDiscNumber(const QString &title, const QString &artist, const std::optional<QString> &album,
+ std::optional<int> trackNumber, std::optional<int> discNumber)
{
auto result = qulonglong(0);
@@ -3070,6 +3070,20 @@
"GROUP_CONCAT(tracks.`ArtistName`, ', ') as AllArtists, "
"MAX(tracks.`Rating`) as HighestRating, "
"GROUP_CONCAT(genres.`Name`, ', ') as AllGenres, "
+ "("
+ "SELECT "
+ "COUNT(DISTINCT tracks2.DiscNumber) <= 1 "
+ "FROM "
+ "`Tracks` tracks2 "
+ "WHERE "
+ "tracks2.`AlbumTitle` = album.`Title` AND "
+ "(tracks2.`AlbumArtistName` = album.`ArtistName` OR "
+ "(tracks2.`AlbumArtistName` IS NULL AND "
+ "album.`ArtistName` IS NULL"
+ ")"
+ ") AND "
+ "tracks2.`AlbumPath` = album.`AlbumPath` "
+ ") as `IsSingleDiscAlbum`, "
"( "
"SELECT tracksCover.`FileName` "
"FROM "
@@ -3131,6 +3145,20 @@
"GROUP_CONCAT(tracks.`ArtistName`, ', ') as AllArtists, "
"MAX(tracks.`Rating`) as HighestRating, "
"GROUP_CONCAT(genres.`Name`, ', ') as AllGenres, "
+ "("
+ "SELECT "
+ "COUNT(DISTINCT tracks2.DiscNumber) <= 1 "
+ "FROM "
+ "`Tracks` tracks2 "
+ "WHERE "
+ "tracks2.`AlbumTitle` = album.`Title` AND "
+ "(tracks2.`AlbumArtistName` = album.`ArtistName` OR "
+ "(tracks2.`AlbumArtistName` IS NULL AND "
+ "album.`ArtistName` IS NULL"
+ ")"
+ ") AND "
+ "tracks2.`AlbumPath` = album.`AlbumPath` "
+ ") as `IsSingleDiscAlbum`, "
"( "
"SELECT tracksCover.`FileName` "
"FROM "
@@ -4770,9 +4798,9 @@
"`Tracks` tracks "
"WHERE "
"tracks.`Title` = :title AND "
- "tracks.`AlbumTitle` = :album AND "
- "tracks.`TrackNumber` = :trackNumber AND "
- "tracks.`DiscNumber` = :discNumber AND "
+ "(tracks.`AlbumTitle` = :album OR (:album IS NULL AND tracks.`AlbumTitle` IS NULL)) AND "
+ "(tracks.`TrackNumber` = :trackNumber OR (:trackNumber IS NULL AND tracks.`TrackNumber` IS NULL)) AND "
+ "(tracks.`DiscNumber` = :discNumber OR (:discNumber IS NULL AND tracks.`DiscNumber` IS NULL)) AND "
"tracks.`ArtistName` = :artist");
auto result = prepareQuery(d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery, selectTrackQueryText);
@@ -5632,9 +5660,13 @@
d->mInsertTrackQuery.bindValue(QStringLiteral(":albumPath"), trackPath);
if (oneTrack.trackNumberIsValid()) {
d->mInsertTrackQuery.bindValue(QStringLiteral(":trackNumber"), oneTrack.trackNumber());
+ } else {
+ d->mInsertTrackQuery.bindValue(QStringLiteral(":trackNumber"), {});
}
if (oneTrack.discNumberIsValid()) {
d->mInsertTrackQuery.bindValue(QStringLiteral(":discNumber"), oneTrack.discNumber());
+ } else {
+ d->mInsertTrackQuery.bindValue(QStringLiteral(":discNumber"), {});
}
d->mInsertTrackQuery.bindValue(QStringLiteral(":trackDuration"), QVariant::fromValue<qlonglong>(oneTrack.duration().msecsSinceStartOfDay()));
d->mInsertTrackQuery.bindValue(QStringLiteral(":trackRating"), oneTrack.rating());
@@ -5657,12 +5689,18 @@
d->mInsertTrackQuery.bindValue(QStringLiteral(":year"), oneTrack.year());
if (oneTrack.channelsIsValid()) {
d->mInsertTrackQuery.bindValue(QStringLiteral(":channels"), oneTrack.channels());
+ } else {
+ d->mInsertTrackQuery.bindValue(QStringLiteral(":channels"), {});
}
if (oneTrack.bitRateIsValid()) {
d->mInsertTrackQuery.bindValue(QStringLiteral(":bitRate"), oneTrack.bitRate());
+ } else {
+ d->mInsertTrackQuery.bindValue(QStringLiteral(":bitRate"), {});
}
if (oneTrack.sampleRateIsValid()) {
d->mInsertTrackQuery.bindValue(QStringLiteral(":sampleRate"), oneTrack.sampleRate());
+ } else {
+ d->mInsertTrackQuery.bindValue(QStringLiteral(":sampleRate"), {});
}
d->mInsertTrackQuery.bindValue(QStringLiteral(":hasEmbeddedCover"), oneTrack.hasEmbeddedCover());
@@ -6455,8 +6493,8 @@
return result;
}
-qulonglong DatabaseInterface::internalTrackIdFromTitleAlbumTracDiscNumber(const QString &title, const QString &artist, const QString &album,
- int trackNumber, int discNumber)
+qulonglong DatabaseInterface::internalTrackIdFromTitleAlbumTracDiscNumber(const QString &title, const QString &artist, const std::optional<QString> &album,
+ std::optional<int> trackNumber, std::optional<int> discNumber)
{
auto result = qulonglong(0);
@@ -6466,9 +6504,21 @@
d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":title"), title);
d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":artist"), artist);
- d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album);
- d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackNumber"), trackNumber);
- d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":discNumber"), discNumber);
+ if (album.has_value()) {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album.value());
+ } else {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), {});
+ }
+ if (trackNumber.has_value()) {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackNumber"), trackNumber.value());
+ } else {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackNumber"), {});
+ }
+ if (discNumber.has_value()) {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":discNumber"), discNumber.value());
+ } else {
+ d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":discNumber"), {});
+ }
auto queryResult = execQuery(d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/databaseinterface.h new/elisa-0.4.2/src/databaseinterface.h
--- old/elisa-0.4.1/src/databaseinterface.h 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/databaseinterface.h 2019-06-29 15:02:46.000000000 +0200
@@ -33,6 +33,7 @@
#include <QPair>
#include <memory>
+#include <optional>
class DatabaseInterfacePrivate;
class QMutex;
@@ -127,6 +128,11 @@
return operator[](key_type::AlbumIdRole).toULongLong();
}
+ bool hasAlbum() const
+ {
+ return find(key_type::AlbumRole) != end();
+ }
+
QString album() const
{
return operator[](key_type::AlbumRole).toString();
@@ -137,11 +143,21 @@
return operator[](key_type::AlbumArtistRole).toString();
}
+ bool hasTrackNumber() const
+ {
+ return find(key_type::TrackNumberRole) != end();
+ }
+
int trackNumber() const
{
return operator[](key_type::TrackNumberRole).toInt();
}
+ bool hasDiscNumber() const
+ {
+ return find(key_type::DiscNumberRole) != end();
+ }
+
int discNumber() const
{
return operator[](key_type::DiscNumberRole).toInt();
@@ -367,8 +383,8 @@
TrackDataType trackDataFromDatabaseId(qulonglong id);
- qulonglong trackIdFromTitleAlbumTrackDiscNumber(const QString &title, const QString &artist, const QString &album,
- int trackNumber, int discNumber);
+ qulonglong trackIdFromTitleAlbumTrackDiscNumber(const QString &title, const QString &artist, const std::optional<QString> &album,
+ std::optional<int> trackNumber, std::optional<int> discNumber);
qulonglong trackIdFromFileName(const QUrl &fileName);
@@ -447,8 +463,8 @@
MusicAudioTrack internalTrackFromDatabaseId(qulonglong id);
- qulonglong internalTrackIdFromTitleAlbumTracDiscNumber(const QString &title, const QString &artist, const QString &album,
- int trackNumber, int discNumber);
+ qulonglong internalTrackIdFromTitleAlbumTracDiscNumber(const QString &title, const QString &artist, const std::optional<QString> &album,
+ std::optional<int> trackNumber, std::optional<int> discNumber);
qulonglong getDuplicateTrackIdFromTitleAlbumTrackDiscNumber(const QString &title, const QString &trackArtist, const QString &album,
const QString &albumArtist, const QString &trackPath, int trackNumber,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/manageaudioplayer.cpp new/elisa-0.4.2/src/manageaudioplayer.cpp
--- old/elisa-0.4.1/src/manageaudioplayer.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/manageaudioplayer.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -557,8 +557,9 @@
return;
}
- if (*itTitle != mCurrentTrack.data(mTitleRole) || *itArtistName != mCurrentTrack.data(mArtistNameRole) ||
- *itAlbumName != mCurrentTrack.data(mAlbumNameRole)) {
+ if (*itTitle != mCurrentTrack.data(mTitleRole) ||
+ (itArtistName->isValid() && *itArtistName != mCurrentTrack.data(mArtistNameRole)) ||
+ (itAlbumName->isValid() && *itAlbumName != mCurrentTrack.data(mAlbumNameRole))) {
if (mCurrentTrack.isValid() && mCurrentTrack.data(mTitleRole).isValid() && mCurrentTrack.data(mArtistNameRole).isValid() &&
mCurrentTrack.data(mAlbumNameRole).isValid()) {
mPersistentState.clear();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/mediaplaylist.cpp new/elisa-0.4.2/src/mediaplaylist.cpp
--- old/elisa-0.4.1/src/mediaplaylist.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/mediaplaylist.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -146,7 +146,14 @@
d->mTrackData[index.row()][TrackDataType::key_type::ImageUrlRole].toUrl().toString()}}.toJson();
break;
default:
- result = d->mTrackData[index.row()][static_castTrackDataType::key_type(role)];
+ const auto &trackData = d->mTrackData[index.row()];
+ auto roleEnum = static_castTrackDataType::key_type(role);
+ auto itData = trackData.find(roleEnum);
+ if (itData != trackData.end()) {
+ result = itData.value();
+ } else {
+ result = {};
+ }
}
} else {
switch(role)
@@ -338,11 +345,11 @@
Q_EMIT newEntryInList(0, entryString, ElisaUtils::FileName);
}
} else {
- Q_EMIT newTrackByNameInList(newEntry.mTitle.toString(),
- newEntry.mArtist.toString(),
- newEntry.mAlbum.toString(),
- newEntry.mTrackNumber.toInt(),
- newEntry.mDiscNumber.toInt());
+ Q_EMIT newTrackByNameInList(newEntry.mTitle,
+ newEntry.mArtist,
+ newEntry.mAlbum,
+ newEntry.mTrackNumber,
+ newEntry.mDiscNumber);
}
} else {
Q_EMIT newEntryInList(newEntry.mId, {}, ElisaUtils::Track);
@@ -710,9 +717,21 @@
oneData.push_back(oneTrack.title());
oneData.push_back(oneTrack.artist());
- oneData.push_back(oneTrack.album());
- oneData.push_back(QString::number(oneTrack.trackNumber()));
- oneData.push_back(QString::number(oneTrack.discNumber()));
+ if (oneTrack.hasAlbum()) {
+ oneData.push_back(oneTrack.album());
+ } else {
+ oneData.push_back({});
+ }
+ if (oneTrack.hasTrackNumber()) {
+ oneData.push_back(QString::number(oneTrack.trackNumber()));
+ } else {
+ oneData.push_back({});
+ }
+ if (oneTrack.hasDiscNumber()) {
+ oneData.push_back(QString::number(oneTrack.discNumber()));
+ } else {
+ oneData.push_back({});
+ }
oneData.push_back(QString::number(oneEntry.mEntryType));
result.push_back(QVariant(oneData));
@@ -778,10 +797,10 @@
auto restoredTitle = trackData[0];
auto restoredArtist = trackData[1];
auto restoredAlbum = trackData[2];
- auto restoredTrackNumber = trackData[3].toInt();
- auto restoredDiscNumber = trackData[4].toInt();
+ auto restoredTrackNumber = trackData[3];
+ auto restoredDiscNumber = trackData[4];
- ElisaUtils::PlayListEntryType mEntryType = static_castElisaUtils::PlayListEntryType(trackData[5].toInt());
+ auto mEntryType = static_castElisaUtils::PlayListEntryType(trackData[5].toInt());
enqueueRestoredEntry({restoredTitle, restoredArtist, restoredAlbum, restoredTrackNumber, restoredDiscNumber, mEntryType});
}
@@ -893,19 +912,23 @@
}
continue;
} else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && !oneEntry.mTrackUrl.isValid()) {
- if (track.title() != oneEntry.mTitle) {
+ if (track.find(TrackDataType::key_type::TitleRole) != track.end() &&
+ track.title() != oneEntry.mTitle) {
continue;
}
- if (track.album() != oneEntry.mAlbum) {
+ if (track.find(TrackDataType::key_type::AlbumRole) != track.end() &&
+ track.album() != oneEntry.mAlbum) {
continue;
}
- if (track.trackNumber() != oneEntry.mTrackNumber) {
+ if (track.find(TrackDataType::key_type::TrackNumberRole) != track.end() &&
+ track.trackNumber() != oneEntry.mTrackNumber) {
continue;
}
- if (track.discNumber() != oneEntry.mDiscNumber) {
+ if (track.find(TrackDataType::key_type::DiscNumberRole) != track.end() &&
+ track.discNumber() != oneEntry.mDiscNumber) {
continue;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/mediaplaylist.h new/elisa-0.4.2/src/mediaplaylist.h
--- old/elisa-0.4.1/src/mediaplaylist.h 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/mediaplaylist.h 2019-06-29 15:02:46.000000000 +0200
@@ -175,7 +175,7 @@
void hideUndoInline();
- void newTrackByNameInList(const QString &title, const QString &artist, const QString &album, int trackNumber, int discNumber);
+ void newTrackByNameInList(const QVariant &title, const QVariant &artist, const QVariant &album, const QVariant &trackNumber, const QVariant &discNumber);
void newEntryInList(qulonglong newDatabaseId,
const QString &entryTitle,
@@ -319,6 +319,12 @@
mTrackNumber(trackNumber), mDiscNumber(discNumber), mEntryType(entryType) {
}
+ MediaPlayListEntry(QVariant title, QVariant artist, QVariant album, QVariant trackNumber,
+ QVariant discNumber, ElisaUtils::PlayListEntryType entryType = ElisaUtils::Unknown)
+ : mTitle(std::move(title)), mAlbum(std::move(album)), mArtist(std::move(artist)),
+ mTrackNumber(std::move(trackNumber)), mDiscNumber(std::move(discNumber)), mEntryType(entryType) {
+ }
+
explicit MediaPlayListEntry(const MusicAudioTrack &track)
: mTitle(track.title()), mAlbum(track.albumName()), mTrackNumber(track.trackNumber()),
mDiscNumber(track.discNumber()), mId(track.databaseId()), mIsValid(true) {
@@ -353,9 +359,9 @@
QVariant mTrackUrl;
- QVariant mTrackNumber = -1;
+ QVariant mTrackNumber;
- QVariant mDiscNumber = -1;
+ QVariant mDiscNumber;
qulonglong mId = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/qml/ViewSelector.qml new/elisa-0.4.2/src/qml/ViewSelector.qml
--- old/elisa-0.4.1/src/qml/ViewSelector.qml 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/qml/ViewSelector.qml 2019-06-29 15:02:46.000000000 +0200
@@ -40,19 +40,6 @@
implicitWidth: elisaTheme.dp(225)
- Rectangle {
- anchors.fill: parent
- z: 1
-
- border.color: myPalette.base
-
- Behavior on border.color {
- ColorAnimation {
- duration: 300
- }
- }
- }
-
ScrollView {
focus: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/trackslistener.cpp new/elisa-0.4.2/src/trackslistener.cpp
--- old/elisa-0.4.1/src/trackslistener.cpp 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/trackslistener.cpp 2019-06-29 15:02:46.000000000 +0200
@@ -66,17 +66,17 @@
}
for (auto itTrack = d->mTracksByNameSet.begin(); itTrack != d->mTracksByNameSet.end(); ) {
- if (std::get<0>(*itTrack) != oneTrack.title()) {
+ if (!std::get<0>(*itTrack).isEmpty() && std::get<0>(*itTrack) != oneTrack.title()) {
++itTrack;
continue;
}
- if (std::get<1>(*itTrack) != oneTrack.artist()) {
+ if (!std::get<1>(*itTrack).isEmpty() && std::get<1>(*itTrack) != oneTrack.artist()) {
++itTrack;
continue;
}
- if (std::get<2>(*itTrack) != oneTrack.album()) {
+ if (!std::get<2>(*itTrack).isEmpty() && std::get<2>(*itTrack) != oneTrack.album()) {
++itTrack;
continue;
}
@@ -113,11 +113,33 @@
}
}
-void TracksListener::trackByNameInList(const QString &title, const QString &artist, const QString &album, int trackNumber, int discNumber)
+void TracksListener::trackByNameInList(const QVariant &title, const QVariant &artist, const QVariant &album,
+ const QVariant &trackNumber, const QVariant &discNumber)
{
- auto newTrackId = d->mDatabase->trackIdFromTitleAlbumTrackDiscNumber(title, artist, album, trackNumber, discNumber);
+ const auto realTitle = title.toString();
+ const auto realArtist = artist.toString();
+ const auto albumIsValid = !album.isNull() && album.isValid() && !album.toString().isEmpty();
+ auto realAlbum = std::optional<QString>{};
+ if (albumIsValid) {
+ realAlbum = album.toString();
+ }
+ auto trackNumberIsValid = bool{};
+ const auto trackNumberValue = trackNumber.toInt(&trackNumberIsValid);
+ auto realTrackNumber = std::optional<int>{};
+ if (trackNumberIsValid) {
+ realTrackNumber = trackNumberValue;
+ }
+ auto discNumberIsValid = bool{};
+ const auto discNumberValue = discNumber.toInt(&discNumberIsValid);
+ auto realDiscNumber = std::optional<int>{};
+ if (discNumberIsValid) {
+ realDiscNumber = discNumberValue;
+ }
+
+ auto newTrackId = d->mDatabase->trackIdFromTitleAlbumTrackDiscNumber(realTitle, realArtist, realAlbum,
+ realTrackNumber, realDiscNumber);
if (newTrackId == 0) {
- auto newTrack = std::tuple(title, artist, album, trackNumber, discNumber);
+ auto newTrack = std::tuple(realTitle, realArtist, album.toString(), trackNumber.toInt(), discNumber.toInt());
d->mTracksByNameSet.push_back(newTrack);
return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elisa-0.4.1/src/trackslistener.h new/elisa-0.4.2/src/trackslistener.h
--- old/elisa-0.4.1/src/trackslistener.h 2019-06-19 22:40:52.000000000 +0200
+++ new/elisa-0.4.2/src/trackslistener.h 2019-06-29 15:02:46.000000000 +0200
@@ -63,7 +63,7 @@
void trackModified(const TracksListener::TrackDataType &modifiedTrack);
- void trackByNameInList(const QString &title, const QString &artist, const QString &album, int trackNumber, int discNumber);
+ void trackByNameInList(const QVariant &title, const QVariant &artist, const QVariant &album, const QVariant &trackNumber, const QVariant &discNumber);
void newEntryInList(qulonglong newDatabaseId,
const QString &entryTitle,