mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-14 01:54:07 +02:00
* TrackData's cache keys need to use the proper DbImpl's sort-names.
This commit is contained in:
@@ -50,11 +50,11 @@ static QReadWriteLock s_dataidMutex;
|
|||||||
|
|
||||||
|
|
||||||
inline QString
|
inline QString
|
||||||
datacacheKey( const QString& artist, const QString& track )
|
cacheKey( const QString& artist, const QString& track )
|
||||||
{
|
{
|
||||||
QString str;
|
QString str;
|
||||||
QTextStream stream( &str );
|
QTextStream stream( &str );
|
||||||
stream << artist << track;
|
stream << DatabaseImpl::sortname( artist ) << "\t" << DatabaseImpl::sortname( track );
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ TrackData::get( unsigned int id, const QString& artist, const QString& track )
|
|||||||
s_dataidMutex.unlock();
|
s_dataidMutex.unlock();
|
||||||
|
|
||||||
QMutexLocker lock( &s_datanameCacheMutex );
|
QMutexLocker lock( &s_datanameCacheMutex );
|
||||||
const QString key = datacacheKey( artist, track );
|
const QString key = cacheKey( artist, track );
|
||||||
if ( s_trackDatasByName.contains( key ) )
|
if ( s_trackDatasByName.contains( key ) )
|
||||||
{
|
{
|
||||||
trackdata_wptr track = s_trackDatasByName.value( key );
|
trackdata_wptr track = s_trackDatasByName.value( key );
|
||||||
@@ -112,6 +112,8 @@ TrackData::TrackData( unsigned int id, const QString& artist, const QString& tra
|
|||||||
, m_trackId( id )
|
, m_trackId( id )
|
||||||
{
|
{
|
||||||
m_waitingForId = ( id == 0 );
|
m_waitingForId = ( id == 0 );
|
||||||
|
|
||||||
|
updateSortNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -126,7 +128,7 @@ TrackData::deleteLater()
|
|||||||
{
|
{
|
||||||
QMutexLocker lock( &s_datanameCacheMutex );
|
QMutexLocker lock( &s_datanameCacheMutex );
|
||||||
|
|
||||||
const QString key = datacacheKey( m_artist, m_track );
|
const QString key = cacheKey( m_artist, m_track );
|
||||||
if ( s_trackDatasByName.contains( key ) )
|
if ( s_trackDatasByName.contains( key ) )
|
||||||
{
|
{
|
||||||
s_trackDatasByName.remove( key );
|
s_trackDatasByName.remove( key );
|
||||||
@@ -146,6 +148,14 @@ TrackData::deleteLater()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TrackData::updateSortNames()
|
||||||
|
{
|
||||||
|
m_artistSortname = DatabaseImpl::sortname( m_artist, true );
|
||||||
|
m_trackSortname = DatabaseImpl::sortname( m_track );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
TrackData::toString() const
|
TrackData::toString() const
|
||||||
{
|
{
|
||||||
|
@@ -68,6 +68,9 @@ public:
|
|||||||
QString toString() const;
|
QString toString() const;
|
||||||
Tomahawk::query_ptr toQuery();
|
Tomahawk::query_ptr toQuery();
|
||||||
|
|
||||||
|
QString artistSortname() const { return m_artistSortname; }
|
||||||
|
QString trackSortname() const { return m_trackSortname; }
|
||||||
|
|
||||||
QWeakPointer< Tomahawk::TrackData > weakRef() { return m_ownRef; }
|
QWeakPointer< Tomahawk::TrackData > weakRef() { return m_ownRef; }
|
||||||
void setWeakRef( QWeakPointer< Tomahawk::TrackData > weakRef ) { m_ownRef = weakRef; }
|
void setWeakRef( QWeakPointer< Tomahawk::TrackData > weakRef ) { m_ownRef = weakRef; }
|
||||||
|
|
||||||
@@ -121,9 +124,12 @@ private:
|
|||||||
|
|
||||||
void updateAttributes();
|
void updateAttributes();
|
||||||
void parseSocialActions();
|
void parseSocialActions();
|
||||||
|
void updateSortNames();
|
||||||
|
|
||||||
QString m_artist;
|
QString m_artist;
|
||||||
QString m_track;
|
QString m_track;
|
||||||
|
QString m_artistSortname;
|
||||||
|
QString m_trackSortname;
|
||||||
|
|
||||||
int m_year;
|
int m_year;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user