Dont count playlist in stats

This commit is contained in:
craig.p.drummond
2013-07-03 15:38:54 +00:00
parent 0248bb6963
commit 8847fbc84f
5 changed files with 52 additions and 10 deletions

View File

@@ -240,9 +240,9 @@ QVariant AlbumsModel::data(const QModelIndex &index, int role) const
? al->name
: (year>0 ? QString("%1\n%2 (%3)\n").arg(al->artist).arg(al->album).arg(QString::number(year)) : QString("%1\n%2\n").arg(al->artist).arg(al->album))+
#ifdef ENABLE_KDE_SUPPORT
i18np("1 Track (%2)", "%1 Tracks (%2)", al->songs.count(), Song::formattedTime(al->totalTime(), true));
i18np("1 Track (%2)", "%1 Tracks (%2)", al->trackCount(), Song::formattedTime(al->totalTime(), true));
#else
QTP_TRACKS_DURATION_STR(al->songs.count(), Song::formattedTime(al->totalTime(), true));
QTP_TRACKS_DURATION_STR(al->trackCount(), Song::formattedTime(al->totalTime(), true));
#endif
}
case Qt::DisplayRole:
@@ -535,6 +535,7 @@ AlbumsModel::AlbumItem::AlbumItem(const QString &ar, const QString &al, quint16
, cover(0)
, updated(false)
, coverRequested(false)
, numTracks(0)
, time(0)
{
setName();
@@ -581,14 +582,29 @@ void AlbumsModel::AlbumItem::setName()
: (artist+QLatin1String(" - ")+album);
}
quint32 AlbumsModel::AlbumItem::trackCount()
{
updateStats();
return numTracks;
}
quint32 AlbumsModel::AlbumItem::totalTime()
{
updateStats();
return time;
}
void AlbumsModel::AlbumItem::updateStats()
{
if (0==time) {
numTracks=0;
foreach (SongItem *s, songs) {
time+=s->time;
if (Song::Playlist!=s->type) {
time+=s->time;
numTracks++;
}
}
}
return time;
}
void AlbumsModel::AlbumItem::getCover()

View File

@@ -83,7 +83,9 @@ public:
void clearSongs();
void setSongs(MusicLibraryItemAlbum *ai);
void setName();
quint32 trackCount();
quint32 totalTime();
void updateStats();
void getCover();
bool isSingleTracks() const { return Song::SingleTracks==type; }
const SongItem *getCueFile() const;
@@ -97,6 +99,7 @@ public:
bool updated;
bool coverRequested;
Song::Type type;
quint32 numTracks;
quint32 time;
};

View File

@@ -267,13 +267,29 @@ const QPixmap & MusicLibraryItemAlbum::cover()
}
quint32 MusicLibraryItemAlbum::totalTime()
{
updateStats();
return m_totalTime;
}
quint32 MusicLibraryItemAlbum::trackCount()
{
updateStats();
return m_numTracks;
}
void MusicLibraryItemAlbum::updateStats()
{
if (0==m_totalTime) {
m_numTracks=0;
foreach (MusicLibraryItem *i, m_childItems) {
m_totalTime+=static_cast<MusicLibraryItemSong *>(i)->time();
MusicLibraryItemSong *song=static_cast<MusicLibraryItemSong *>(i);
if (Song::Playlist!=song->song().type) {
m_totalTime+=song->time();
m_numTracks++;
}
}
}
return m_totalTime;
}
void MusicLibraryItemAlbum::addTracks(MusicLibraryItemAlbum *other)

View File

@@ -69,6 +69,7 @@ public:
bool hasRealCover() const { return !m_coverIsDefault; }
quint32 year() const { return m_year; }
quint32 totalTime();
quint32 trackCount();
void addTracks(MusicLibraryItemAlbum *other);
bool isSingleTracks() const { return Song::SingleTracks==m_type; }
void setIsSingleTracks();
@@ -93,12 +94,14 @@ private:
void setCoverImage(const QImage &img) const;
void setYear(const MusicLibraryItemSong *song);
bool largeImages() const;
void updateStats();
private:
quint32 m_year;
quint16 m_yearOfTrack;
quint16 m_yearOfDisc;
quint32 m_totalTime;
quint32 m_numTracks;
mutable bool m_coverIsDefault;
mutable QPixmap *m_cover;
Song::Type m_type;

View File

@@ -291,9 +291,11 @@ QVariant MusicLibraryModel::data(const QModelIndex &index, int role) const
? item->data()
: item->data()+"<br/>"+
#ifdef ENABLE_KDE_SUPPORT
i18np("1 Track (%2)", "%1 Tracks (%2)", item->childCount(), Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true))
i18np("1 Track (%2)", "%1 Tracks (%2)", static_cast<MusicLibraryItemAlbum *>(item)->trackCount(),
Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true))
#else
QTP_TRACKS_DURATION_STR(item->childCount(), Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true))
QTP_TRACKS_DURATION_STR(static_cast<MusicLibraryItemAlbum *>(item)->trackCount(),
Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true))
#endif
);
case MusicLibraryItem::Type_Song: {
@@ -325,9 +327,11 @@ QVariant MusicLibraryModel::data(const QModelIndex &index, int role) const
return Song::formattedTime(static_cast<MusicLibraryItemSong *>(item)->time(), true);
case MusicLibraryItem::Type_Album:
#ifdef ENABLE_KDE_SUPPORT
return i18np("1 Track (%2)", "%1 Tracks (%2)", item->childCount(), Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true));
return i18np("1 Track (%2)", "%1 Tracks (%2)", static_cast<MusicLibraryItemAlbum *>(item)->trackCount(),
Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true));
#else
return QTP_TRACKS_DURATION_STR(item->childCount(), Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true));
return QTP_TRACKS_DURATION_STR(static_cast<MusicLibraryItemAlbum *>(item)->trackCount(),
Song::formattedTime(static_cast<MusicLibraryItemAlbum *>(item)->totalTime(), true));
#endif
default: return QVariant();
}