From cbb5ac2f2b8e490d192c1b16cfb414b70c086b70 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 16 May 2013 12:54:54 +0200 Subject: [PATCH] * TrackData's cache keys need to use the proper DbImpl's sort-names. --- src/libtomahawk/TrackData.cpp | 18 ++++++++++++++---- src/libtomahawk/TrackData.h | 6 ++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/TrackData.cpp b/src/libtomahawk/TrackData.cpp index 5434ca426..f559efa7f 100644 --- a/src/libtomahawk/TrackData.cpp +++ b/src/libtomahawk/TrackData.cpp @@ -50,11 +50,11 @@ static QReadWriteLock s_dataidMutex; inline QString -datacacheKey( const QString& artist, const QString& track ) +cacheKey( const QString& artist, const QString& track ) { QString str; QTextStream stream( &str ); - stream << artist << track; + stream << DatabaseImpl::sortname( artist ) << "\t" << DatabaseImpl::sortname( track ); return str; } @@ -74,7 +74,7 @@ TrackData::get( unsigned int id, const QString& artist, const QString& track ) s_dataidMutex.unlock(); QMutexLocker lock( &s_datanameCacheMutex ); - const QString key = datacacheKey( artist, track ); + const QString key = cacheKey( artist, track ); if ( s_trackDatasByName.contains( 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_waitingForId = ( id == 0 ); + + updateSortNames(); } @@ -126,7 +128,7 @@ TrackData::deleteLater() { 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 ) ) { 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 TrackData::toString() const { diff --git a/src/libtomahawk/TrackData.h b/src/libtomahawk/TrackData.h index 59e89227b..17729808c 100644 --- a/src/libtomahawk/TrackData.h +++ b/src/libtomahawk/TrackData.h @@ -68,6 +68,9 @@ public: QString toString() const; Tomahawk::query_ptr toQuery(); + QString artistSortname() const { return m_artistSortname; } + QString trackSortname() const { return m_trackSortname; } + QWeakPointer< Tomahawk::TrackData > weakRef() { return m_ownRef; } void setWeakRef( QWeakPointer< Tomahawk::TrackData > weakRef ) { m_ownRef = weakRef; } @@ -121,9 +124,12 @@ private: void updateAttributes(); void parseSocialActions(); + void updateSortNames(); QString m_artist; QString m_track; + QString m_artistSortname; + QString m_trackSortname; int m_year;