Moodbar: Disable moodbar loader for CUE songs

This commit is contained in:
Jonas Kvinge
2022-01-05 18:58:02 +01:00
parent 7d55eb4b44
commit fdedfd54c7
8 changed files with 17 additions and 9 deletions

View File

@@ -59,7 +59,7 @@ void MoodbarController::CurrentSongChanged(const Song &song) {
QByteArray data; QByteArray data;
MoodbarPipeline *pipeline = nullptr; MoodbarPipeline *pipeline = nullptr;
const MoodbarLoader::Result result = app_->moodbar_loader()->Load(song.url(), &data, &pipeline); const MoodbarLoader::Result result = app_->moodbar_loader()->Load(song.url(), song.has_cue(), &data, &pipeline);
switch (result) { switch (result) {
case MoodbarLoader::CannotLoad: case MoodbarLoader::CannotLoad:

View File

@@ -102,6 +102,7 @@ QPixmap MoodbarItemDelegate::PixmapForIndex(const QModelIndex &idx, const QSize
// Pixmaps are keyed off URL. // Pixmaps are keyed off URL.
const QUrl url = idx.sibling(idx.row(), Playlist::Column_Filename).data().toUrl(); const QUrl url = idx.sibling(idx.row(), Playlist::Column_Filename).data().toUrl();
const bool has_cue = idx.sibling(idx.row(), Playlist::Column_HasCUE).data().toBool();
Data *data = nullptr; Data *data = nullptr;
if (data_.contains(url)) { if (data_.contains(url)) {
@@ -135,20 +136,20 @@ QPixmap MoodbarItemDelegate::PixmapForIndex(const QModelIndex &idx, const QSize
} }
// We have to start loading the data from scratch. // We have to start loading the data from scratch.
StartLoadingData(url, data); StartLoadingData(url, has_cue, data);
return QPixmap(); return QPixmap();
} }
void MoodbarItemDelegate::StartLoadingData(const QUrl &url, Data *data) { void MoodbarItemDelegate::StartLoadingData(const QUrl &url, const bool has_cue, Data *data) {
data->state_ = Data::State_LoadingData; data->state_ = Data::State_LoadingData;
// Load a mood file for this song and generate some colors from it // Load a mood file for this song and generate some colors from it
QByteArray bytes; QByteArray bytes;
MoodbarPipeline *pipeline = nullptr; MoodbarPipeline *pipeline = nullptr;
switch (app_->moodbar_loader()->Load(url, &bytes, &pipeline)) { switch (app_->moodbar_loader()->Load(url, has_cue, &bytes, &pipeline)) {
case MoodbarLoader::CannotLoad: case MoodbarLoader::CannotLoad:
data->state_ = Data::State_CannotLoad; data->state_ = Data::State_CannotLoad;
break; break;
@@ -183,7 +184,7 @@ void MoodbarItemDelegate::ReloadAllColors() {
Data *data = data_[url]; Data *data = data_[url];
if (data->state_ == Data::State_Loaded) { if (data->state_ == Data::State_Loaded) {
StartLoadingData(url, data); StartLoadingData(url, false, data);
} }
} }

View File

@@ -77,7 +77,7 @@ class MoodbarItemDelegate : public QItemDelegate {
private: private:
QPixmap PixmapForIndex(const QModelIndex &idx, const QSize size); QPixmap PixmapForIndex(const QModelIndex &idx, const QSize size);
void StartLoadingData(const QUrl &url, Data *data); void StartLoadingData(const QUrl &url, const bool has_cue, Data *data);
void StartLoadingColors(const QUrl &url, const QByteArray &bytes, Data *data); void StartLoadingColors(const QUrl &url, const QByteArray &bytes, Data *data);
void StartLoadingImage(const QUrl &url, Data *data); void StartLoadingImage(const QUrl &url, Data *data);

View File

@@ -93,9 +93,9 @@ QStringList MoodbarLoader::MoodFilenames(const QString &song_filename) {
} }
MoodbarLoader::Result MoodbarLoader::Load(const QUrl &url, QByteArray *data, MoodbarPipeline **async_pipeline) { MoodbarLoader::Result MoodbarLoader::Load(const QUrl &url, const bool has_cue, QByteArray *data, MoodbarPipeline **async_pipeline) {
if (url.scheme() != "file") { if (!url.isLocalFile() || has_cue) {
return CannotLoad; return CannotLoad;
} }

View File

@@ -52,7 +52,7 @@ class MoodbarLoader : public QObject {
WillLoadAsync WillLoadAsync
}; };
Result Load(const QUrl &url, QByteArray *data, MoodbarPipeline **async_pipeline); Result Load(const QUrl &url, const bool has_cue, QByteArray *data, MoodbarPipeline **async_pipeline);
private slots: private slots:
void ReloadSettings(); void ReloadSettings();

View File

@@ -336,6 +336,8 @@ QVariant Playlist::data(const QModelIndex &idx, int role) const {
case Column_Rating: return song.rating(); case Column_Rating: return song.rating();
case Column_HasCUE: return song.has_cue();
} }
return QVariant(); return QVariant();
@@ -1310,6 +1312,8 @@ bool Playlist::CompareItems(const int column, const Qt::SortOrder order, std::sh
case Column_Rating: cmp(rating); case Column_Rating: cmp(rating);
case Column_HasCUE: cmp(has_cue);
default: qLog(Error) << "No such column" << column; default: qLog(Error) << "No such column" << column;
} }
@@ -1368,6 +1372,7 @@ QString Playlist::column_name(Column column) {
case Column_Source: return tr("Source"); case Column_Source: return tr("Source");
case Column_Mood: return tr("Mood"); case Column_Mood: return tr("Mood");
case Column_Rating: return tr("Rating"); case Column_Rating: return tr("Rating");
case Column_HasCUE: return tr("CUE");
default: qLog(Error) << "No such column" << column;; default: qLog(Error) << "No such column" << column;;
} }
return ""; return "";

View File

@@ -131,6 +131,7 @@ class Playlist : public QAbstractListModel {
Column_Source, Column_Source,
Column_Mood, Column_Mood,
Column_Rating, Column_Rating,
Column_HasCUE,
ColumnCount ColumnCount
}; };

View File

@@ -397,6 +397,7 @@ void PlaylistView::RestoreHeaderState() {
header_->HideSection(Playlist::Column_Grouping); header_->HideSection(Playlist::Column_Grouping);
header_->HideSection(Playlist::Column_Mood); header_->HideSection(Playlist::Column_Mood);
header_->HideSection(Playlist::Column_Rating); header_->HideSection(Playlist::Column_Rating);
header_->HideSection(Playlist::Column_HasCUE);
header_->moveSection(header_->visualIndex(Playlist::Column_Track), 0); header_->moveSection(header_->visualIndex(Playlist::Column_Track), 0);