mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-20 15:59:42 +01:00
Added albumArtist property to Track.
This commit is contained in:
parent
fbec557e6e
commit
cb6c901eb4
@ -47,7 +47,7 @@ static QMutex s_nameCacheMutex;
|
||||
|
||||
|
||||
inline QString
|
||||
cacheKey( const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
cacheKey( const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
{
|
||||
const QString durationStr = QString::number( duration );
|
||||
const QString albumposStr = QString::number( albumpos );
|
||||
@ -58,11 +58,12 @@ cacheKey( const QString& artist, const QString& track, const QString& album, int
|
||||
// The "+" implementation in Qt4 differs slighty depending on compile
|
||||
// options which could drastically reduce the performance.
|
||||
str.reserve( artist.size() + track.size() + album.size()
|
||||
+ composer.size() + durationStr.size()
|
||||
+ albumArtist.size() + composer.size() + durationStr.size()
|
||||
+ albumposStr.size() + discnumberStr.size() );
|
||||
str += artist;
|
||||
str += track;
|
||||
str += album;
|
||||
str += albumArtist;
|
||||
str += composer;
|
||||
str += durationStr;
|
||||
str += albumposStr;
|
||||
@ -72,7 +73,7 @@ cacheKey( const QString& artist, const QString& track, const QString& album, int
|
||||
|
||||
|
||||
track_ptr
|
||||
Track::get( const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
Track::get( const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
{
|
||||
if ( artist.trimmed().isEmpty() || track.trimmed().isEmpty() )
|
||||
{
|
||||
@ -82,7 +83,7 @@ Track::get( const QString& artist, const QString& track, const QString& album, i
|
||||
}
|
||||
|
||||
QMutexLocker lock( &s_nameCacheMutex );
|
||||
const QString key = cacheKey( artist, track, album, duration, composer, albumpos, discnumber );
|
||||
const QString key = cacheKey( artist, track, album, albumArtist, duration, composer, albumpos, discnumber );
|
||||
if ( s_tracksByName.contains( key ) )
|
||||
{
|
||||
track_wptr track = s_tracksByName.value( key );
|
||||
@ -90,7 +91,7 @@ Track::get( const QString& artist, const QString& track, const QString& album, i
|
||||
return track.toStrongRef();
|
||||
}
|
||||
|
||||
track_ptr t = track_ptr( new Track( artist, track, album, duration, composer, albumpos, discnumber ), &Track::deleteLater );
|
||||
track_ptr t = track_ptr( new Track( artist, track, album, albumArtist, duration, composer, albumpos, discnumber ), &Track::deleteLater );
|
||||
t->setWeakRef( t.toWeakRef() );
|
||||
s_tracksByName.insert( key, t );
|
||||
|
||||
@ -99,10 +100,10 @@ Track::get( const QString& artist, const QString& track, const QString& album, i
|
||||
|
||||
|
||||
track_ptr
|
||||
Track::get( unsigned int id, const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
Track::get( unsigned int id, const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
{
|
||||
QMutexLocker lock( &s_nameCacheMutex );
|
||||
const QString key = cacheKey( artist, track, album, duration, composer, albumpos, discnumber );
|
||||
const QString key = cacheKey( artist, track, album, albumArtist, duration, composer, albumpos, discnumber );
|
||||
if ( s_tracksByName.contains( key ) )
|
||||
{
|
||||
track_wptr track = s_tracksByName.value( key );
|
||||
@ -110,7 +111,7 @@ Track::get( unsigned int id, const QString& artist, const QString& track, const
|
||||
return track;
|
||||
}
|
||||
|
||||
track_ptr t = track_ptr( new Track( id, artist, track, album, duration, composer, albumpos, discnumber ), &Track::deleteLater );
|
||||
track_ptr t = track_ptr( new Track( id, artist, track, album, albumArtist, duration, composer, albumpos, discnumber ), &Track::deleteLater );
|
||||
t->setWeakRef( t.toWeakRef() );
|
||||
s_tracksByName.insert( key, t );
|
||||
|
||||
@ -118,8 +119,8 @@ Track::get( unsigned int id, const QString& artist, const QString& track, const
|
||||
}
|
||||
|
||||
|
||||
Track::Track( unsigned int id, const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
: d_ptr( new TrackPrivate( this, album, duration, composer, albumpos, discnumber ) )
|
||||
Track::Track( unsigned int id, const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
: d_ptr( new TrackPrivate( this, album, albumArtist, duration, composer, albumpos, discnumber ) )
|
||||
{
|
||||
Q_D( Track );
|
||||
d->trackData = TrackData::get( id, artist, track );
|
||||
@ -128,8 +129,8 @@ Track::Track( unsigned int id, const QString& artist, const QString& track, cons
|
||||
}
|
||||
|
||||
|
||||
Track::Track( const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
: d_ptr( new TrackPrivate( this, album, duration, composer, albumpos, discnumber ) )
|
||||
Track::Track( const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber )
|
||||
: d_ptr( new TrackPrivate( this, album, albumArtist, duration, composer, albumpos, discnumber ) )
|
||||
{
|
||||
Q_D( Track );
|
||||
d->trackData = TrackData::get( 0, artist, track );
|
||||
@ -232,7 +233,7 @@ Track::deleteLater()
|
||||
Q_D( Track );
|
||||
QMutexLocker lock( &s_nameCacheMutex );
|
||||
|
||||
const QString key = cacheKey( artist(), track(), d->album, d->duration, d->composer, d->albumpos, d->discnumber );
|
||||
const QString key = cacheKey( artist(), track(), d->album, d->albumArtist, d->duration, d->composer, d->albumpos, d->discnumber );
|
||||
if ( s_tracksByName.contains( key ) )
|
||||
{
|
||||
s_tracksByName.remove( key );
|
||||
@ -617,13 +618,32 @@ Track::artistPtr() const
|
||||
}
|
||||
|
||||
|
||||
artist_ptr
|
||||
Track::albumArtistPtr() const
|
||||
{
|
||||
Q_D( const Track );
|
||||
if ( !d->albumArtistPtr )
|
||||
{
|
||||
d->albumArtistPtr = Artist::get( albumArtist(), false );
|
||||
connect( d->albumArtistPtr.data(), SIGNAL( updated() ), SIGNAL( updated() ), Qt::UniqueConnection );
|
||||
connect( d->albumArtistPtr.data(), SIGNAL( coverChanged() ), SIGNAL( coverChanged() ), Qt::UniqueConnection );
|
||||
}
|
||||
|
||||
return d->albumArtistPtr;
|
||||
}
|
||||
|
||||
|
||||
album_ptr
|
||||
Track::albumPtr() const
|
||||
{
|
||||
Q_D( const Track );
|
||||
if ( !d->albumPtr )
|
||||
{
|
||||
d->albumPtr = Album::get( artistPtr(), album(), false );
|
||||
if ( albumArtist().isEmpty() )
|
||||
d->albumPtr = Album::get( artistPtr(), album(), false );
|
||||
else
|
||||
d->albumPtr = Album::get( albumArtistPtr(), album(), false );
|
||||
|
||||
connect( d->albumPtr.data(), SIGNAL( updated() ), SIGNAL( updated() ), Qt::UniqueConnection );
|
||||
connect( d->albumPtr.data(), SIGNAL( coverChanged() ), SIGNAL( coverChanged() ), Qt::UniqueConnection );
|
||||
}
|
||||
@ -697,6 +717,14 @@ Track::artist() const
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
Track::albumArtist() const
|
||||
{
|
||||
Q_D( const Track );
|
||||
return d->albumArtist;
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
Track::track() const
|
||||
{
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||
*
|
||||
* Copyright 2013, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||
* Copyright 2013, Teo Mrnjavac <teo@kde.org>
|
||||
* Copyright 2013, Uwe L. Korn <uwelk@xhochy.com>
|
||||
* Copyright 2013-2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||
* Copyright 2013, Teo Mrnjavac <teo@kde.org>
|
||||
* Copyright 2013, Uwe L. Korn <uwelk@xhochy.com>
|
||||
*
|
||||
* Tomahawk is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -48,8 +48,8 @@ public:
|
||||
enum DescriptionMode
|
||||
{ Detailed = 0, Short = 1 };
|
||||
|
||||
static track_ptr get( const QString& artist, const QString& track, const QString& album = QString(), int duration = 0, const QString& composer = QString(), unsigned int albumpos = 0, unsigned int discnumber = 0 );
|
||||
static track_ptr get( unsigned int id, const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
static track_ptr get( const QString& artist, const QString& track, const QString& album = QString(), const QString& albumArtist = QString(), int duration = 0, const QString& composer = QString(), unsigned int albumpos = 0, unsigned int discnumber = 0 );
|
||||
static track_ptr get( unsigned int id, const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
|
||||
virtual ~Track();
|
||||
|
||||
@ -74,6 +74,7 @@ public:
|
||||
const QString& trackSortname() const;
|
||||
|
||||
QString artist() const;
|
||||
QString albumArtist() const;
|
||||
QString track() const;
|
||||
QString composer() const;
|
||||
QString album() const;
|
||||
@ -83,6 +84,7 @@ public:
|
||||
unsigned int discnumber() const;
|
||||
|
||||
Tomahawk::artist_ptr artistPtr() const;
|
||||
Tomahawk::artist_ptr albumArtistPtr() const;
|
||||
Tomahawk::album_ptr albumPtr() const;
|
||||
Tomahawk::artist_ptr composerPtr() const;
|
||||
|
||||
@ -142,8 +144,8 @@ protected:
|
||||
|
||||
private:
|
||||
Q_DECLARE_PRIVATE( Track )
|
||||
explicit Track( unsigned int id, const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
explicit Track( const QString& artist, const QString& track, const QString& album, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
explicit Track( unsigned int id, const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
explicit Track( const QString& artist, const QString& track, const QString& album, const QString& albumArtist, int duration, const QString& composer, unsigned int albumpos, unsigned int discnumber );
|
||||
|
||||
void init();
|
||||
|
||||
|
@ -29,10 +29,11 @@ namespace Tomahawk {
|
||||
class TrackPrivate
|
||||
{
|
||||
public:
|
||||
TrackPrivate( Track* q, const QString& _album, int _duration, const QString& _composer, unsigned int _albumpos, unsigned int _discnumber )
|
||||
TrackPrivate( Track* q, const QString& _album, const QString& _albumArtist, int _duration, const QString& _composer, unsigned int _albumpos, unsigned int _discnumber )
|
||||
: q_ptr( q )
|
||||
, composer( _composer )
|
||||
, album( _album )
|
||||
, albumArtist( _albumArtist )
|
||||
, duration( _duration )
|
||||
, albumpos( _albumpos )
|
||||
, discnumber( _discnumber )
|
||||
@ -45,6 +46,7 @@ public:
|
||||
private:
|
||||
QString composer;
|
||||
QString album;
|
||||
QString albumArtist;
|
||||
QString composerSortname;
|
||||
QString albumSortname;
|
||||
|
||||
@ -53,6 +55,7 @@ private:
|
||||
uint discnumber;
|
||||
|
||||
mutable Tomahawk::artist_ptr artistPtr;
|
||||
mutable Tomahawk::artist_ptr albumArtistPtr;
|
||||
mutable Tomahawk::album_ptr albumPtr;
|
||||
mutable Tomahawk::artist_ptr composerPtr;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user