Add option to save album cover in album directory

This commit is contained in:
Jonas Kvinge
2019-03-11 23:07:11 +01:00
parent 242137a50c
commit 2211716d04
9 changed files with 308 additions and 55 deletions

View File

@@ -43,10 +43,12 @@
const char *CollectionSettingsPage::kSettingsGroup = "Collection";
CollectionSettingsPage::CollectionSettingsPage(SettingsDialog* dialog)
CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog)
: SettingsPage(dialog),
ui_(new Ui_CollectionSettingsPage),
initialised_model_(false) {
initialised_model_(false)
{
ui_->setupUi(this);
ui_->list->setItemDelegate(new NativeSeparatorsDelegate(this));
@@ -56,6 +58,11 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog* dialog)
connect(ui_->add, SIGNAL(clicked()), SLOT(Add()));
connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove()));
connect(ui_->checkbox_cover_album_dir, SIGNAL(toggled(bool)), SLOT(CoverSaveInAlbumDirChanged()));
connect(ui_->radiobutton_cover_hash, SIGNAL(toggled(bool)), SLOT(CoverSaveInAlbumDirChanged()));
connect(ui_->radiobutton_cover_pattern, SIGNAL(toggled(bool)), SLOT(CoverSaveInAlbumDirChanged()));
}
CollectionSettingsPage::~CollectionSettingsPage() { delete ui_; }
@@ -83,25 +90,6 @@ void CollectionSettingsPage::CurrentRowChanged(const QModelIndex& index) {
ui_->remove->setEnabled(index.isValid());
}
void CollectionSettingsPage::Save() {
QSettings s;
s.beginGroup(kSettingsGroup);
s.setValue("auto_open", ui_->auto_open->isChecked());
s.setValue("pretty_covers", ui_->pretty_covers->isChecked());
s.setValue("show_dividers", ui_->show_dividers->isChecked());
s.setValue("startup_scan", ui_->startup_scan->isChecked());
s.setValue("monitor", ui_->monitor->isChecked());
QString filter_text = ui_->cover_art_patterns->text();
QStringList filters = filter_text.split(',', QString::SkipEmptyParts);
s.setValue("cover_art_patterns", filters);
s.endGroup();
}
void CollectionSettingsPage::Load() {
if (!initialised_model_) {
@@ -127,5 +115,74 @@ void CollectionSettingsPage::Load() {
QStringList filters = s.value("cover_art_patterns", QStringList() << "front" << "cover").toStringList();
ui_->cover_art_patterns->setText(filters.join(","));
ui_->checkbox_cover_album_dir->setChecked(s.value("cover_album_dir", false).toBool());
SaveCover save_cover = SaveCover(s.value("cover_filename", SaveCover_Hash).toInt());
switch (save_cover) {
case SaveCover_Hash: ui_->radiobutton_cover_hash->setChecked(true); break;
case SaveCover_Pattern: ui_->radiobutton_cover_pattern->setChecked(true); break;
}
QString cover_pattern = s.value("cover_pattern").toString();
if (!cover_pattern.isEmpty()) ui_->lineedit_cover_pattern->setText(cover_pattern);
ui_->checkbox_cover_overwrite->setChecked(s.value("cover_overwrite", false).toBool());
ui_->checkbox_cover_lowercase->setChecked(s.value("cover_lowercase", true).toBool());
ui_->checkbox_cover_replace_spaces->setChecked(s.value("cover_replace_spaces", true).toBool());
s.endGroup();
}
void CollectionSettingsPage::Save() {
QSettings s;
s.beginGroup(kSettingsGroup);
s.setValue("auto_open", ui_->auto_open->isChecked());
s.setValue("pretty_covers", ui_->pretty_covers->isChecked());
s.setValue("show_dividers", ui_->show_dividers->isChecked());
s.setValue("startup_scan", ui_->startup_scan->isChecked());
s.setValue("monitor", ui_->monitor->isChecked());
QString filter_text = ui_->cover_art_patterns->text();
QStringList filters = filter_text.split(',', QString::SkipEmptyParts);
s.setValue("cover_art_patterns", filters);
s.setValue("cover_album_dir", ui_->checkbox_cover_album_dir->isChecked());
SaveCover save_cover = SaveCover_Hash;
if (ui_->radiobutton_cover_hash->isChecked()) save_cover = SaveCover_Hash;
if (ui_->radiobutton_cover_pattern->isChecked()) save_cover = SaveCover_Pattern;
s.setValue("cover_filename", int(save_cover));
s.setValue("cover_pattern", ui_->lineedit_cover_pattern->text());
s.setValue("cover_overwrite", ui_->checkbox_cover_overwrite->isChecked());
s.setValue("cover_lowercase", ui_->checkbox_cover_lowercase->isChecked());
s.setValue("cover_replace_spaces", ui_->checkbox_cover_replace_spaces->isChecked());
s.endGroup();
}
void CollectionSettingsPage::CoverSaveInAlbumDirChanged() {
if (ui_->checkbox_cover_album_dir->isChecked()) {
if (!ui_->groupbox_cover_filename->isEnabled()) {
ui_->groupbox_cover_filename->setEnabled(true);
}
if (ui_->radiobutton_cover_pattern->isChecked()) {
if (!ui_->lineedit_cover_pattern->isEnabled()) ui_->lineedit_cover_pattern->setEnabled(true);
if (!ui_->checkbox_cover_overwrite->isEnabled()) ui_->checkbox_cover_overwrite->setEnabled(true);
if (!ui_->checkbox_cover_lowercase->isEnabled()) ui_->checkbox_cover_lowercase->setEnabled(true);
if (!ui_->checkbox_cover_replace_spaces->isEnabled()) ui_->checkbox_cover_replace_spaces->setEnabled(true);
}
else {
if (ui_->lineedit_cover_pattern->isEnabled()) ui_->lineedit_cover_pattern->setEnabled(false);
if (ui_->checkbox_cover_overwrite->isEnabled()) ui_->checkbox_cover_overwrite->setEnabled(false);
if (ui_->checkbox_cover_lowercase->isEnabled()) ui_->checkbox_cover_lowercase->setEnabled(false);
if (ui_->checkbox_cover_replace_spaces->isEnabled()) ui_->checkbox_cover_replace_spaces->setEnabled(false);
}
}
else {
if (ui_->groupbox_cover_filename->isEnabled()) {
ui_->groupbox_cover_filename->setEnabled(false);
}
}
}

View File

@@ -43,6 +43,11 @@ public:
static const char *kSettingsGroup;
enum SaveCover {
SaveCover_Hash = 1,
SaveCover_Pattern = 2
};
void Load();
void Save();
@@ -51,6 +56,7 @@ private slots:
void Remove();
void CurrentRowChanged(const QModelIndex &index);
void CoverSaveInAlbumDirChanged();
private:
Ui_CollectionSettingsPage *ui_;

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>509</width>
<height>452</height>
<height>695</height>
</rect>
</property>
<property name="windowTitle">
@@ -15,14 +15,14 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<widget class="QLabel" name="label_collection_folders">
<property name="text">
<string>These folders will be scanned for music to make up your collection</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QHBoxLayout" name="layout_collection_folders">
<item>
<widget class="QListView" name="list">
<property name="iconSize">
@@ -37,7 +37,7 @@
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<layout class="QVBoxLayout" name="layout_collection_folder_buttons">
<item>
<widget class="QPushButton" name="add">
<property name="text">
@@ -56,7 +56,7 @@
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<spacer name="spacer_collection_buttons">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@@ -73,7 +73,7 @@
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="groupbox_updating">
<property name="title">
<string>Automatic updating</string>
</property>
@@ -93,7 +93,7 @@
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="label_preferred_cover_filenames">
<property name="text">
<string>Preferred album art filenames (comma separated)</string>
</property>
@@ -111,7 +111,7 @@ If there are no matches then it will use the largest image in the directory.</st
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_1">
<widget class="QGroupBox" name="groupbox_display">
<property name="title">
<string>Display options</string>
</property>
@@ -140,6 +140,92 @@ If there are no matches then it will use the largest image in the directory.</st
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_albumcovers">
<property name="title">
<string>Saving album covers</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QCheckBox" name="checkbox_cover_album_dir">
<property name="text">
<string>Save album covers in album directory</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_cover_filename">
<property name="title">
<string>Filename:</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QWidget" name="groupbox_buttons" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QRadioButton" name="radiobutton_cover_hash">
<property name="text">
<string>Use hash</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radiobutton_cover_pattern">
<property name="text">
<string>Use pattern</string>
</property>
</widget>
</item>
<item>
<spacer name="spacer_cover_filename_bttons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineedit_cover_pattern">
<property name="text">
<string>%albumartist-%album</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_cover_overwrite">
<property name="text">
<string>Overwrite existing file</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_cover_lowercase">
<property name="text">
<string>Lowercase filename</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_cover_replace_spaces">
<property name="text">
<string>Replace spaces with dashes</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<tabstops>