Moodbar: Disable moodbar loader for CUE songs
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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 "";
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class Playlist : public QAbstractListModel {
|
|||||||
Column_Source,
|
Column_Source,
|
||||||
Column_Mood,
|
Column_Mood,
|
||||||
Column_Rating,
|
Column_Rating,
|
||||||
|
Column_HasCUE,
|
||||||
ColumnCount
|
ColumnCount
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user