mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-12 09:04:33 +02:00
* Fixed TWK-281: Ignore leading the when sorting by artist name.
This commit is contained in:
@@ -75,6 +75,7 @@ Artist::Artist( unsigned int id, const QString& name )
|
|||||||
, m_currentItem( 0 )
|
, m_currentItem( 0 )
|
||||||
, m_currentTrack( 0 )
|
, m_currentTrack( 0 )
|
||||||
{
|
{
|
||||||
|
m_sortname = DatabaseImpl::sortname( name, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -45,6 +45,7 @@ public:
|
|||||||
|
|
||||||
unsigned int id() const { return m_id; }
|
unsigned int id() const { return m_id; }
|
||||||
QString name() const { return m_name; }
|
QString name() const { return m_name; }
|
||||||
|
QString sortname() const { return m_sortname; }
|
||||||
|
|
||||||
virtual QList<Tomahawk::query_ptr> tracks();
|
virtual QList<Tomahawk::query_ptr> tracks();
|
||||||
|
|
||||||
@@ -80,6 +81,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
unsigned int m_id;
|
unsigned int m_id;
|
||||||
QString m_name;
|
QString m_name;
|
||||||
|
QString m_sortname;
|
||||||
|
|
||||||
QList<Tomahawk::query_ptr> m_queries;
|
QList<Tomahawk::query_ptr> m_queries;
|
||||||
result_ptr m_currentItem;
|
result_ptr m_currentItem;
|
||||||
|
@@ -448,9 +448,16 @@ DatabaseImpl::getTrackFids( int tid )
|
|||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
DatabaseImpl::sortname( const QString& str )
|
DatabaseImpl::sortname( const QString& str, bool replaceArticle )
|
||||||
{
|
{
|
||||||
return str.toLower().trimmed().replace( QRegExp("[\\s]{2,}"), " " );
|
QString s = str.toLower().trimmed().replace( QRegExp( "[\\s]{2,}" ), " " );
|
||||||
|
|
||||||
|
if ( replaceArticle && s.startsWith( "the " ) )
|
||||||
|
{
|
||||||
|
s = s.right( s.length() - 4 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -59,7 +59,7 @@ public:
|
|||||||
QList< QPair<int, float> > searchTable( const QString& table, const QString& name, uint limit = 10 );
|
QList< QPair<int, float> > searchTable( const QString& table, const QString& name, uint limit = 10 );
|
||||||
QList< int > getTrackFids( int tid );
|
QList< int > getTrackFids( int tid );
|
||||||
|
|
||||||
static QString sortname( const QString& str );
|
static QString sortname( const QString& str, bool replaceArticle = false );
|
||||||
|
|
||||||
QVariantMap artist( int id );
|
QVariantMap artist( int id );
|
||||||
QVariantMap album( int id );
|
QVariantMap album( int id );
|
||||||
|
@@ -309,8 +309,8 @@ TrackProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) c
|
|||||||
const Tomahawk::query_ptr& q1 = p1->query();
|
const Tomahawk::query_ptr& q1 = p1->query();
|
||||||
const Tomahawk::query_ptr& q2 = p2->query();
|
const Tomahawk::query_ptr& q2 = p2->query();
|
||||||
|
|
||||||
QString artist1 = q1->artist();
|
QString artist1 = q1->artistSortname();
|
||||||
QString artist2 = q2->artist();
|
QString artist2 = q2->artistSortname();
|
||||||
QString album1 = q1->album();
|
QString album1 = q1->album();
|
||||||
QString album2 = q2->album();
|
QString album2 = q2->album();
|
||||||
QString track1 = q1->track();
|
QString track1 = q1->track();
|
||||||
@@ -324,7 +324,7 @@ TrackProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) c
|
|||||||
if ( q1->numResults() )
|
if ( q1->numResults() )
|
||||||
{
|
{
|
||||||
const Tomahawk::result_ptr& r = q1->results().at( 0 );
|
const Tomahawk::result_ptr& r = q1->results().at( 0 );
|
||||||
artist1 = r->artist()->name();
|
artist1 = r->artist()->sortname();
|
||||||
album1 = r->album()->name();
|
album1 = r->album()->name();
|
||||||
track1 = r->track();
|
track1 = r->track();
|
||||||
albumpos1 = r->albumpos();
|
albumpos1 = r->albumpos();
|
||||||
@@ -336,7 +336,7 @@ TrackProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) c
|
|||||||
if ( q2->numResults() )
|
if ( q2->numResults() )
|
||||||
{
|
{
|
||||||
const Tomahawk::result_ptr& r = q2->results().at( 0 );
|
const Tomahawk::result_ptr& r = q2->results().at( 0 );
|
||||||
artist2 = r->artist()->name();
|
artist2 = r->artist()->sortname();
|
||||||
album2 = r->album()->name();
|
album2 = r->album()->name();
|
||||||
track2 = r->track();
|
track2 = r->track();
|
||||||
albumpos2 = r->albumpos();
|
albumpos2 = r->albumpos();
|
||||||
|
@@ -360,15 +360,15 @@ TreeProxyModel::textForItem( TreeModelItem* item ) const
|
|||||||
|
|
||||||
if ( !item->artist().isNull() )
|
if ( !item->artist().isNull() )
|
||||||
{
|
{
|
||||||
return item->artist()->name();
|
return DatabaseImpl::sortname( item->artist()->name(), true );
|
||||||
}
|
}
|
||||||
else if ( !item->album().isNull() )
|
else if ( !item->album().isNull() )
|
||||||
{
|
{
|
||||||
return item->album()->name();
|
return DatabaseImpl::sortname( item->album()->name() );
|
||||||
}
|
}
|
||||||
else if ( !item->result().isNull() )
|
else if ( !item->result().isNull() )
|
||||||
{
|
{
|
||||||
return item->result()->track();
|
return DatabaseImpl::sortname( item->result()->track() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return QString();
|
return QString();
|
||||||
|
@@ -117,13 +117,13 @@ Query::updateSortNames()
|
|||||||
{
|
{
|
||||||
if ( isFullTextQuery() )
|
if ( isFullTextQuery() )
|
||||||
{
|
{
|
||||||
m_artistSortname = DatabaseImpl::sortname( m_fullTextQuery );
|
m_artistSortname = DatabaseImpl::sortname( m_fullTextQuery, true );
|
||||||
m_albumSortname = m_artistSortname;
|
m_albumSortname = DatabaseImpl::sortname( m_fullTextQuery );
|
||||||
m_trackSortname = m_artistSortname;
|
m_trackSortname = m_albumSortname;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_artistSortname = DatabaseImpl::sortname( m_artist );
|
m_artistSortname = DatabaseImpl::sortname( m_artist, true );
|
||||||
m_albumSortname = DatabaseImpl::sortname( m_album );
|
m_albumSortname = DatabaseImpl::sortname( m_album );
|
||||||
m_trackSortname = DatabaseImpl::sortname( m_track );
|
m_trackSortname = DatabaseImpl::sortname( m_track );
|
||||||
}
|
}
|
||||||
@@ -393,7 +393,7 @@ float
|
|||||||
Query::howSimilar( const Tomahawk::result_ptr& r )
|
Query::howSimilar( const Tomahawk::result_ptr& r )
|
||||||
{
|
{
|
||||||
// result values
|
// result values
|
||||||
const QString rArtistname = DatabaseImpl::sortname( r->artist()->name() );
|
const QString rArtistname = r->artist()->sortname();
|
||||||
const QString rAlbumname = DatabaseImpl::sortname( r->album()->name() );
|
const QString rAlbumname = DatabaseImpl::sortname( r->album()->name() );
|
||||||
const QString rTrackname = DatabaseImpl::sortname( r->track() );
|
const QString rTrackname = DatabaseImpl::sortname( r->track() );
|
||||||
|
|
||||||
|
@@ -91,6 +91,9 @@ public:
|
|||||||
QString toString() const;
|
QString toString() const;
|
||||||
|
|
||||||
QString resultHint() const { return m_resultHint; }
|
QString resultHint() const { return m_resultHint; }
|
||||||
|
QString artistSortname() const { return m_artistSortname; }
|
||||||
|
QString albumSortname() const { return m_albumSortname; }
|
||||||
|
QString trackSortname() const { return m_trackSortname; }
|
||||||
QString artist() const { return m_artist; }
|
QString artist() const { return m_artist; }
|
||||||
QString album() const { return m_album; }
|
QString album() const { return m_album; }
|
||||||
QString track() const { return m_track; }
|
QString track() const { return m_track; }
|
||||||
|
Reference in New Issue
Block a user