EditTagDialog: Disable fields for unsupported tags
This commit is contained in:
parent
1fdeb50d93
commit
2cb29d06b3
|
@ -351,6 +351,73 @@ void Song::set_embedded_cover() { d->art_automatic_ = QUrl::fromLocalFile(kEmbed
|
|||
void Song::clear_art_automatic() { d->art_automatic_.clear(); }
|
||||
void Song::clear_art_manual() { d->art_manual_.clear(); }
|
||||
|
||||
bool Song::additional_tags_supported() const {
|
||||
return d->filetype_ == FileType_FLAC ||
|
||||
d->filetype_ == FileType_WavPack ||
|
||||
d->filetype_ == FileType_OggFlac ||
|
||||
d->filetype_ == FileType_OggVorbis ||
|
||||
d->filetype_ == FileType_OggOpus ||
|
||||
d->filetype_ == FileType_OggSpeex ||
|
||||
d->filetype_ == FileType_MPEG ||
|
||||
d->filetype_ == FileType_MP4 ||
|
||||
d->filetype_ == FileType_MPC ||
|
||||
d->filetype_ == FileType_APE;
|
||||
}
|
||||
|
||||
bool Song::albumartist_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::composer_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::performer_supported() const {
|
||||
return d->filetype_ == FileType_FLAC ||
|
||||
d->filetype_ == FileType_WavPack ||
|
||||
d->filetype_ == FileType_OggFlac ||
|
||||
d->filetype_ == FileType_OggVorbis ||
|
||||
d->filetype_ == FileType_OggOpus ||
|
||||
d->filetype_ == FileType_OggSpeex ||
|
||||
d->filetype_ == FileType_MPEG ||
|
||||
d->filetype_ == FileType_MPC ||
|
||||
d->filetype_ == FileType_APE;
|
||||
}
|
||||
|
||||
bool Song::grouping_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::genre_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::compilation_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::rating_supported() const {
|
||||
return d->filetype_ == FileType_FLAC ||
|
||||
d->filetype_ == FileType_WavPack ||
|
||||
d->filetype_ == FileType_OggFlac ||
|
||||
d->filetype_ == FileType_OggVorbis ||
|
||||
d->filetype_ == FileType_OggOpus ||
|
||||
d->filetype_ == FileType_OggSpeex ||
|
||||
d->filetype_ == FileType_MPEG ||
|
||||
d->filetype_ == FileType_MP4 ||
|
||||
d->filetype_ == FileType_ASF ||
|
||||
d->filetype_ == FileType_MPC ||
|
||||
d->filetype_ == FileType_APE;
|
||||
}
|
||||
|
||||
bool Song::comment_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::lyrics_supported() const {
|
||||
return additional_tags_supported();
|
||||
}
|
||||
|
||||
bool Song::save_embedded_cover_supported(const FileType filetype) {
|
||||
|
||||
return filetype == FileType_FLAC ||
|
||||
|
|
|
@ -298,6 +298,17 @@ class Song {
|
|||
static bool save_embedded_cover_supported(const FileType filetype);
|
||||
bool save_embedded_cover_supported() const { return url().isLocalFile() && save_embedded_cover_supported(filetype()) && !has_cue(); };
|
||||
|
||||
bool additional_tags_supported() const;
|
||||
bool albumartist_supported() const;
|
||||
bool composer_supported() const;
|
||||
bool performer_supported() const;
|
||||
bool grouping_supported() const;
|
||||
bool genre_supported() const;
|
||||
bool compilation_supported() const;
|
||||
bool rating_supported() const;
|
||||
bool comment_supported() const;
|
||||
bool lyrics_supported() const;
|
||||
|
||||
const QUrl &stream_url() const;
|
||||
const QUrl &effective_stream_url() const;
|
||||
bool init_from_file() const;
|
||||
|
|
|
@ -624,6 +624,15 @@ void EditTagDialog::SelectionChanged() {
|
|||
UpdateCoverAction first_cover_action = data_[indexes.first().row()].cover_action_;
|
||||
bool art_different = false;
|
||||
bool action_different = false;
|
||||
bool albumartist_enabled = false;
|
||||
bool composer_enabled = false;
|
||||
bool performer_enabled = false;
|
||||
bool grouping_enabled = false;
|
||||
bool genre_enabled = false;
|
||||
bool compilation_enabled = false;
|
||||
bool rating_enabled = false;
|
||||
bool comment_enabled = false;
|
||||
bool lyrics_enabled = false;
|
||||
for (const QModelIndex &idx : indexes) {
|
||||
if (data_[idx.row()].cover_action_ == UpdateCoverAction_None) {
|
||||
data_[idx.row()].cover_result_ = AlbumCoverImageResult();
|
||||
|
@ -639,7 +648,33 @@ void EditTagDialog::SelectionChanged() {
|
|||
(song.has_embedded_cover() && first_song.has_embedded_cover() && (first_song.effective_albumartist() != song.effective_albumartist() || first_song.album() != song.album()))
|
||||
) {
|
||||
art_different = true;
|
||||
break;
|
||||
}
|
||||
if (song.albumartist_supported()) {
|
||||
albumartist_enabled = true;
|
||||
}
|
||||
if (song.composer_supported()) {
|
||||
composer_enabled = true;
|
||||
}
|
||||
if (song.performer_supported()) {
|
||||
performer_enabled = true;
|
||||
}
|
||||
if (song.grouping_supported()) {
|
||||
grouping_enabled = true;
|
||||
}
|
||||
if (song.genre_supported()) {
|
||||
genre_enabled = true;
|
||||
}
|
||||
if (song.compilation_supported()) {
|
||||
compilation_enabled = true;
|
||||
}
|
||||
if (song.rating_supported()) {
|
||||
rating_enabled = true;
|
||||
}
|
||||
if (song.comment_supported()) {
|
||||
comment_enabled = true;
|
||||
}
|
||||
if (song.lyrics_supported()) {
|
||||
lyrics_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -695,6 +730,16 @@ void EditTagDialog::SelectionChanged() {
|
|||
ui_->checkbox_embedded_cover->setChecked(embedded_cover);
|
||||
album_cover_choice_controller_->set_save_embedded_cover_override(embedded_cover);
|
||||
|
||||
ui_->albumartist->setEnabled(albumartist_enabled);
|
||||
ui_->composer->setEnabled(composer_enabled);
|
||||
ui_->performer->setEnabled(performer_enabled);
|
||||
ui_->grouping->setEnabled(grouping_enabled);
|
||||
ui_->genre->setEnabled(genre_enabled);
|
||||
ui_->compilation->setEnabled(compilation_enabled);
|
||||
ui_->rating->setEnabled(rating_enabled);
|
||||
ui_->comment->setEnabled(comment_enabled);
|
||||
ui_->lyrics->setEnabled(lyrics_enabled);
|
||||
|
||||
}
|
||||
|
||||
void EditTagDialog::UpdateUI(const QModelIndexList &indexes) {
|
||||
|
|
Loading…
Reference in New Issue