This commit is contained in:
craig
2012-01-24 19:31:17 +00:00
parent 44967aa209
commit 639c45c3a5
4 changed files with 29 additions and 8 deletions

View File

@@ -155,6 +155,9 @@ void MtpConnection::updateLibrary()
musicPath=musicFolder.value().path;
}
}
MusicLibraryItemArtist *artistItem = 0;
MusicLibraryItemAlbum *albumItem = 0;
while (track) {
QMap<int, Folder>::ConstIterator it=folderMap.find(track->parent_id);
Song s;
@@ -174,8 +177,13 @@ void MtpConnection::updateLibrary()
s.track=track->tracknumber;
s.fillEmptyFields();
trackMap.insert(track->item_id, track);
MusicLibraryItemArtist *artistItem = library->artist(s);
MusicLibraryItemAlbum *albumItem = artistItem->album(s);
if (!artistItem || s.albumArtist()!=artistItem->data()) {
artistItem = library->artist(s);
}
if (!albumItem || albumItem->parent()!=artistItem || s.album!=albumItem->data()) {
albumItem = artistItem->album(s);
}
MusicLibraryItemSong *songItem = new MusicLibraryItemSong(s, albumItem);
albumItem->append(songItem);

View File

@@ -95,6 +95,8 @@ void MusicScanner::scanFolder(const QString &f, int level)
if (level<4) {
QDir d(f);
QFileInfoList entries=d.entryInfoList(QDir::Files|QDir::NoSymLinks|QDir::Dirs|QDir::NoDotAndDotDot);
MusicLibraryItemArtist *artistItem = 0;
MusicLibraryItemAlbum *albumItem = 0;
foreach (const QFileInfo &info, entries) {
if (stopRequested) {
return;
@@ -110,8 +112,12 @@ void MusicScanner::scanFolder(const QString &f, int level)
song.fillEmptyFields();
song.size=info.size();
MusicLibraryItemArtist *artistItem = library->artist(song);
MusicLibraryItemAlbum *albumItem = artistItem->album(song);
if (!artistItem || song.albumArtist()!=artistItem->data()) {
artistItem = library->artist(song);
}
if (!albumItem || albumItem->parent()!=artistItem || song.album!=albumItem->data()) {
albumItem = artistItem->album(song);
}
MusicLibraryItemSong *songItem = new MusicLibraryItemSong(song, albumItem);
albumItem->append(songItem);

View File

@@ -607,7 +607,7 @@ bool MusicLibraryModel::fromXML(const QDateTime dbUpdate)
if (root) {
if (QLatin1String("Artist")==element) {
song.albumartist=reader.attributes().value("name").toString();
artistItem = root->artist(song);
artistItem = root->createArtist(song);
}
else if (QLatin1String("Album")==element) {
song.album=reader.attributes().value("name").toString();
@@ -615,7 +615,7 @@ bool MusicLibraryModel::fromXML(const QDateTime dbUpdate)
if (!song.file.isEmpty()) {
song.file.append("dummy.mp3");
}
albumItem = artistItem->album(song);
albumItem = artistItem->createAlbum(song);
if (QLatin1String("true")==reader.attributes().value("singleTracks").toString()) {
albumItem->setIsSingleTracks();
}

View File

@@ -300,6 +300,8 @@ MusicLibraryItemRoot * MPDParseUtils::parseLibraryItems(const QByteArray &data)
QByteArray currentItem;
QList<QByteArray> lines = data.split('\n');
int amountOfLines = lines.size();
MusicLibraryItemArtist *artistItem = 0;
MusicLibraryItemAlbum *albumItem = 0;
for (int i = 0; i < amountOfLines; i++) {
currentItem += lines.at(i);
@@ -313,8 +315,13 @@ MusicLibraryItemRoot * MPDParseUtils::parseLibraryItems(const QByteArray &data)
}
currentSong.fillEmptyFields();
MusicLibraryItemArtist *artistItem = rootItem->artist(currentSong);
MusicLibraryItemAlbum *albumItem = artistItem->album(currentSong);
if (!artistItem || currentSong.albumArtist()!=artistItem->data()) {
artistItem = rootItem->artist(currentSong);
}
if (!albumItem || albumItem->parent()!=artistItem || currentSong.album!=albumItem->data()) {
albumItem = artistItem->album(currentSong);
}
MusicLibraryItemSong *songItem = new MusicLibraryItemSong(currentSong, albumItem);
albumItem->append(songItem);