Sort retrieved GS songs only in some cases.
Indeed, even it makes sense sometimes (e.g. for playlists) it doesn't make sense at all for search results... Make the sorting function part of Song.
This commit is contained in:
parent
ac936c5374
commit
b49c3db6e0
|
@ -331,6 +331,15 @@ QString Song::TextForFiletype(FileType type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CompareSongsName(const Song& song1, const Song& song2) {
|
||||||
|
return song1.PrettyTitleWithArtist().localeAwareCompare(song2.PrettyTitleWithArtist()) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Song::SortSongsListAlphabetically(SongList* songs) {
|
||||||
|
Q_ASSERT(songs);
|
||||||
|
qSort(songs->begin(), songs->end(), CompareSongsName);
|
||||||
|
}
|
||||||
|
|
||||||
void Song::Init(const QString& title, const QString& artist,
|
void Song::Init(const QString& title, const QString& artist,
|
||||||
const QString& album, qint64 length_nanosec) {
|
const QString& album, qint64 length_nanosec) {
|
||||||
d->valid_ = true;
|
d->valid_ = true;
|
||||||
|
|
|
@ -95,6 +95,9 @@ class Song {
|
||||||
static QString TextForFiletype(FileType type);
|
static QString TextForFiletype(FileType type);
|
||||||
QString TextForFiletype() const { return TextForFiletype(filetype()); }
|
QString TextForFiletype() const { return TextForFiletype(filetype()); }
|
||||||
|
|
||||||
|
// Sort songs alphabetically using their pretty title
|
||||||
|
static void SortSongsListAlphabetically(QList<Song>* songs);
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
void Init(const QString& title, const QString& artist, const QString& album, qint64 length_nanosec);
|
void Init(const QString& title, const QString& artist, const QString& album, qint64 length_nanosec);
|
||||||
void Init(const QString& title, const QString& artist, const QString& album, qint64 beginning, qint64 end);
|
void Init(const QString& title, const QString& artist, const QString& album, qint64 beginning, qint64 end);
|
||||||
|
|
|
@ -711,6 +711,8 @@ void GroovesharkService::PlaylistSongsRetrieved() {
|
||||||
|
|
||||||
QVariantMap result = ExtractResult(reply);
|
QVariantMap result = ExtractResult(reply);
|
||||||
SongList songs = ExtractSongs(result);
|
SongList songs = ExtractSongs(result);
|
||||||
|
Song::SortSongsListAlphabetically(&songs);
|
||||||
|
|
||||||
foreach (const Song& song, songs) {
|
foreach (const Song& song, songs) {
|
||||||
QStandardItem* child = new QStandardItem(song.PrettyTitleWithArtist());
|
QStandardItem* child = new QStandardItem(song.PrettyTitleWithArtist());
|
||||||
child->setData(Type_Track, InternetModel::Role_Type);
|
child->setData(Type_Track, InternetModel::Role_Type);
|
||||||
|
@ -752,6 +754,8 @@ void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_i
|
||||||
|
|
||||||
QVariantMap result = ExtractResult(reply);
|
QVariantMap result = ExtractResult(reply);
|
||||||
SongList songs = ExtractSongs(result);
|
SongList songs = ExtractSongs(result);
|
||||||
|
Song::SortSongsListAlphabetically(&songs);
|
||||||
|
|
||||||
foreach (const Song& song, songs) {
|
foreach (const Song& song, songs) {
|
||||||
QStandardItem* child = new QStandardItem(song.PrettyTitleWithArtist());
|
QStandardItem* child = new QStandardItem(song.PrettyTitleWithArtist());
|
||||||
child->setData(Type_Track, InternetModel::Role_Type);
|
child->setData(Type_Track, InternetModel::Role_Type);
|
||||||
|
@ -784,6 +788,7 @@ void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
QVariantMap result = ExtractResult(reply);
|
QVariantMap result = ExtractResult(reply);
|
||||||
SongList songs = ExtractSongs(result);
|
SongList songs = ExtractSongs(result);
|
||||||
|
Song::SortSongsListAlphabetically(&songs);
|
||||||
|
|
||||||
app_->task_manager()->IncreaseTaskProgress(task_popular_id_, 50, 100);
|
app_->task_manager()->IncreaseTaskProgress(task_popular_id_, 50, 100);
|
||||||
if (app_->task_manager()->GetTaskProgress(task_popular_id_) >= 100) {
|
if (app_->task_manager()->GetTaskProgress(task_popular_id_) >= 100) {
|
||||||
|
@ -816,6 +821,7 @@ void GroovesharkService::PopularSongsTodayRetrieved(QNetworkReply* reply) {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
QVariantMap result = ExtractResult(reply);
|
QVariantMap result = ExtractResult(reply);
|
||||||
SongList songs = ExtractSongs(result);
|
SongList songs = ExtractSongs(result);
|
||||||
|
Song::SortSongsListAlphabetically(&songs);
|
||||||
|
|
||||||
app_->task_manager()->IncreaseTaskProgress(task_popular_id_, 50, 100);
|
app_->task_manager()->IncreaseTaskProgress(task_popular_id_, 50, 100);
|
||||||
if (app_->task_manager()->GetTaskProgress(task_popular_id_) >= 100) {
|
if (app_->task_manager()->GetTaskProgress(task_popular_id_) >= 100) {
|
||||||
|
@ -1561,10 +1567,6 @@ QVariantMap GroovesharkService::ExtractResult(QNetworkReply* reply) {
|
||||||
return result["result"].toMap();
|
return result["result"].toMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CompareSongsName(const Song& song1, const Song& song2) {
|
|
||||||
return song1.PrettyTitleWithArtist().localeAwareCompare(song2.PrettyTitleWithArtist()) < 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SongList GroovesharkService::ExtractSongs(const QVariantMap& result) {
|
SongList GroovesharkService::ExtractSongs(const QVariantMap& result) {
|
||||||
QVariantList result_songs = result["songs"].toList();
|
QVariantList result_songs = result["songs"].toList();
|
||||||
SongList songs;
|
SongList songs;
|
||||||
|
@ -1572,7 +1574,6 @@ SongList GroovesharkService::ExtractSongs(const QVariantMap& result) {
|
||||||
QVariantMap result_song = result_songs[i].toMap();
|
QVariantMap result_song = result_songs[i].toMap();
|
||||||
songs << ExtractSong(result_song);
|
songs << ExtractSong(result_song);
|
||||||
}
|
}
|
||||||
qSort(songs.begin(), songs.end(), CompareSongsName);
|
|
||||||
return songs;
|
return songs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue