Playlist: add newly-added columns
Still mostly boilter-plate-y. It is somewhat interesting to see that info in playlist view, so add the two fileds as columns. At least for Integrated loudness, since it's normally negative, we need to add a specialized Delegate.
This commit is contained in:
parent
44e5c32bcb
commit
b2c66c9cda
|
@ -323,6 +323,10 @@ QVariant Playlist::data(const QModelIndex &idx, int role) const {
|
|||
if (role == Qt::DisplayRole) return song.comment().simplified();
|
||||
return song.comment();
|
||||
|
||||
case Column_EBUR128IntegratedLoudness: return song.ebur128_integrated_loudness_lufs() ? *song.ebur128_integrated_loudness_lufs() : QVariant();
|
||||
|
||||
case Column_EBUR128LoudnessRange: return song.ebur128_loudness_range_lu() ? *song.ebur128_loudness_range_lu() : QVariant();
|
||||
|
||||
case Column_Source: return QVariant::fromValue(song.source());
|
||||
|
||||
case Column_Rating: return song.rating();
|
||||
|
@ -1325,6 +1329,9 @@ bool Playlist::CompareItems(const int column, const Qt::SortOrder order, std::sh
|
|||
|
||||
case Column_HasCUE: cmp(has_cue);
|
||||
|
||||
case Column_EBUR128IntegratedLoudness: cmp(ebur128_integrated_loudness_lufs);
|
||||
case Column_EBUR128LoudnessRange: cmp(ebur128_loudness_range_lu);
|
||||
|
||||
default: qLog(Error) << "No such column" << column;
|
||||
}
|
||||
|
||||
|
@ -1384,6 +1391,10 @@ QString Playlist::column_name(Column column) {
|
|||
case Column_Mood: return tr("Mood");
|
||||
case Column_Rating: return tr("Rating");
|
||||
case Column_HasCUE: return tr("CUE");
|
||||
|
||||
case Column_EBUR128IntegratedLoudness: return tr("Integrated loudness");
|
||||
case Column_EBUR128LoudnessRange: return tr("Loudness range");
|
||||
|
||||
default: qLog(Error) << "No such column" << column;;
|
||||
}
|
||||
return "";
|
||||
|
|
|
@ -131,6 +131,8 @@ class Playlist : public QAbstractListModel {
|
|||
Column_Mood,
|
||||
Column_Rating,
|
||||
Column_HasCUE,
|
||||
Column_EBUR128IntegratedLoudness,
|
||||
Column_EBUR128LoudnessRange,
|
||||
ColumnCount
|
||||
};
|
||||
|
||||
|
|
|
@ -540,3 +540,23 @@ QString RatingItemDelegate::displayText(const QVariant &value, const QLocale&) c
|
|||
return QString::number(rating, 'f', 1);
|
||||
|
||||
}
|
||||
|
||||
QString Ebur128LoudnessLUFSItemDelegate::displayText(const QVariant &value, const QLocale&) const {
|
||||
|
||||
bool ok = false;
|
||||
double v = value.toDouble(&ok);
|
||||
|
||||
if (ok) return Song::Ebur128LoudnessLUFSToText(v);
|
||||
return QString();
|
||||
|
||||
}
|
||||
|
||||
QString Ebur128LoudnessRangeLUItemDelegate::displayText(const QVariant &value, const QLocale&) const {
|
||||
|
||||
bool ok = false;
|
||||
double v = value.toDouble(&ok);
|
||||
|
||||
if (ok) return Song::Ebur128LoudnessRangeLUToText(v);
|
||||
return QString();
|
||||
|
||||
}
|
||||
|
|
|
@ -231,4 +231,20 @@ class RatingItemDelegate : public PlaylistDelegateBase {
|
|||
QModelIndexList selected_indexes_;
|
||||
};
|
||||
|
||||
class Ebur128LoudnessLUFSItemDelegate : public PlaylistDelegateBase {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Ebur128LoudnessLUFSItemDelegate(QObject *parent) : PlaylistDelegateBase(parent) {}
|
||||
QString displayText(const QVariant &value, const QLocale &locale) const override;
|
||||
};
|
||||
|
||||
class Ebur128LoudnessRangeLUItemDelegate : public PlaylistDelegateBase {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Ebur128LoudnessRangeLUItemDelegate(QObject *parent) : PlaylistDelegateBase(parent) {}
|
||||
QString displayText(const QVariant &value, const QLocale &locale) const override;
|
||||
};
|
||||
|
||||
#endif // PLAYLISTDELEGATES_H
|
||||
|
|
|
@ -274,6 +274,8 @@ void PlaylistView::SetItemDelegates() {
|
|||
rating_delegate_ = new RatingItemDelegate(this);
|
||||
setItemDelegateForColumn(Playlist::Column_Rating, rating_delegate_);
|
||||
|
||||
setItemDelegateForColumn(Playlist::Column_EBUR128IntegratedLoudness, new Ebur128LoudnessLUFSItemDelegate(this));
|
||||
setItemDelegateForColumn(Playlist::Column_EBUR128LoudnessRange, new Ebur128LoudnessRangeLUItemDelegate(this));
|
||||
}
|
||||
|
||||
void PlaylistView::setModel(QAbstractItemModel *m) {
|
||||
|
@ -391,6 +393,8 @@ void PlaylistView::RestoreHeaderState() {
|
|||
header_->HideSection(Playlist::Column_Mood);
|
||||
header_->HideSection(Playlist::Column_Rating);
|
||||
header_->HideSection(Playlist::Column_HasCUE);
|
||||
header_->HideSection(Playlist::Column_EBUR128IntegratedLoudness);
|
||||
header_->HideSection(Playlist::Column_EBUR128LoudnessRange);
|
||||
|
||||
header_->moveSection(header_->visualIndex(Playlist::Column_Track), 0);
|
||||
|
||||
|
|
Loading…
Reference in New Issue