Add option to set prefixes to ignore when sorting (e.g. 'The')

#706
This commit is contained in:
Craig Drummond
2015-07-25 17:38:56 +01:00
parent 200cf0736d
commit e33d41066e
7 changed files with 79 additions and 18 deletions

View File

@@ -349,20 +349,45 @@ static bool songsSortArAl(const Song &a, const Song &b)
// return a.lastModified>b.lastModified;
//}
static QStringList prefixesToIngore=QStringList() << QLatin1String("The");
QStringList LibraryDb::ignorePrefixes()
{
return prefixesToIngore;
}
void LibraryDb::setIgnorePrefixes(const QStringList &prefixes)
{
prefixesToIngore=prefixes;
}
static QString ignorePrefix(const QString &str)
{
foreach (const QString &p, prefixesToIngore) {
if (str.startsWith(p+QLatin1Char(' '))) {
return str.mid(p.length()+1);
}
}
return QString();
}
static QString sortString(const QString &str)
{
QString sort=ignorePrefix(str);
if (sort.isEmpty()) {
sort=str;
}
sort=sort.remove('.');
return sort==str ? QString() : sort;
}
static QString artistSort(const Song &s)
{
if (!s.artistSortString().isEmpty()) {
return s.artistSortString();
}
const QString &albumArtist=s.albumArtist();
QString sort;
if (albumArtist.startsWith("The ")) {
sort=albumArtist.mid(4);
} else {
sort=albumArtist;
}
sort=sort.remove('.');
return sort==albumArtist ? QString() : sort;
return sortString(s.albumArtist());
}
static QString albumSort(const Song &s)
@@ -370,14 +395,7 @@ static QString albumSort(const Song &s)
if (!s.albumSort().isEmpty()) {
return s.albumSort();
}
QString sort;
if (s.album.startsWith("The ")) {
sort=s.album.mid(4);
} else {
sort=s.album;
}
sort=sort.remove('.');
return sort==s.album ? QString() : sort;
return sortString(s.album);
}
// Code taken from Clementine's LibraryQuery