Rewrite album cover loader
This commit is contained in:
@@ -45,7 +45,6 @@
|
||||
#include "core/iconloader.h"
|
||||
#include "utilities/strutils.h"
|
||||
#include "utilities/timeutils.h"
|
||||
#include "utilities/coveroptions.h"
|
||||
#include "collection/collection.h"
|
||||
#include "collection/collectionmodel.h"
|
||||
#include "collection/collectiondirectorymodel.h"
|
||||
@@ -90,10 +89,6 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog, QWidget *
|
||||
QObject::connect(ui_->song_tracking, &QCheckBox::toggled, this, &CollectionSettingsPage::SongTrackingToggled);
|
||||
#endif
|
||||
|
||||
QObject::connect(ui_->radiobutton_save_albumcover_albumdir, &QRadioButton::toggled, this, &CollectionSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
QObject::connect(ui_->radiobutton_cover_hash, &QRadioButton::toggled, this, &CollectionSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
QObject::connect(ui_->radiobutton_cover_pattern, &QRadioButton::toggled, this, &CollectionSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
|
||||
QObject::connect(ui_->checkbox_disk_cache, &QCheckBox::stateChanged, this, &CollectionSettingsPage::DiskCacheEnable);
|
||||
QObject::connect(ui_->button_clear_disk_cache, &QPushButton::clicked, dialog->app(), &Application::ClearPixmapDiskCache);
|
||||
QObject::connect(ui_->button_clear_disk_cache, &QPushButton::clicked, this, &CollectionSettingsPage::ClearPixmapDiskCache);
|
||||
@@ -189,34 +184,6 @@ void CollectionSettingsPage::Load() {
|
||||
QStringList filters = s.value("cover_art_patterns", QStringList() << "front" << "cover").toStringList();
|
||||
ui_->cover_art_patterns->setText(filters.join(","));
|
||||
|
||||
const CoverOptions::CoverType save_cover_type = static_cast<CoverOptions::CoverType>(s.value("save_cover_type", static_cast<int>(CoverOptions::CoverType::Cache)).toInt());
|
||||
switch (save_cover_type) {
|
||||
case CoverOptions::CoverType::Cache:
|
||||
ui_->radiobutton_save_albumcover_cache->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverType::Album:
|
||||
ui_->radiobutton_save_albumcover_albumdir->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverType::Embedded:
|
||||
ui_->radiobutton_save_albumcover_embedded->setChecked(true);
|
||||
break;
|
||||
}
|
||||
|
||||
const CoverOptions::CoverFilename save_cover_filename = static_cast<CoverOptions::CoverFilename>(s.value("save_cover_filename", static_cast<int>(CoverOptions::CoverFilename::Pattern)).toInt());
|
||||
switch (save_cover_filename) {
|
||||
case CoverOptions::CoverFilename::Hash:
|
||||
ui_->radiobutton_cover_hash->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverFilename::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());
|
||||
|
||||
ui_->spinbox_cache_size->setValue(s.value(kSettingsCacheSize, kSettingsCacheSizeDefault).toInt());
|
||||
ui_->combobox_cache_size->setCurrentIndex(ui_->combobox_cache_size->findData(s.value(kSettingsCacheSizeUnit, static_cast<int>(CacheSizeUnit::MB)).toInt()));
|
||||
ui_->checkbox_disk_cache->setChecked(s.value(kSettingsDiskCacheEnable, false).toBool());
|
||||
@@ -270,22 +237,6 @@ void CollectionSettingsPage::Save() {
|
||||
|
||||
s.setValue("cover_art_patterns", filters);
|
||||
|
||||
CoverOptions::CoverType save_cover_type = CoverOptions::CoverType::Cache;
|
||||
if (ui_->radiobutton_save_albumcover_cache->isChecked()) save_cover_type = CoverOptions::CoverType::Cache;
|
||||
else if (ui_->radiobutton_save_albumcover_albumdir->isChecked()) save_cover_type = CoverOptions::CoverType::Album;
|
||||
else if (ui_->radiobutton_save_albumcover_embedded->isChecked()) save_cover_type = CoverOptions::CoverType::Embedded;
|
||||
s.setValue("save_cover_type", static_cast<int>(save_cover_type));
|
||||
|
||||
CoverOptions::CoverFilename save_cover_filename = CoverOptions::CoverFilename::Hash;
|
||||
if (ui_->radiobutton_cover_hash->isChecked()) save_cover_filename = CoverOptions::CoverFilename::Hash;
|
||||
else if (ui_->radiobutton_cover_pattern->isChecked()) save_cover_filename = CoverOptions::CoverFilename::Pattern;
|
||||
s.setValue("save_cover_filename", static_cast<int>(save_cover_filename));
|
||||
|
||||
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.setValue(kSettingsCacheSize, ui_->spinbox_cache_size->value());
|
||||
s.setValue(kSettingsCacheSizeUnit, ui_->combobox_cache_size->currentData().toInt());
|
||||
s.setValue(kSettingsDiskCacheEnable, ui_->checkbox_disk_cache->isChecked());
|
||||
@@ -303,33 +254,6 @@ void CollectionSettingsPage::Save() {
|
||||
|
||||
}
|
||||
|
||||
void CollectionSettingsPage::CoverSaveInAlbumDirChanged() {
|
||||
|
||||
if (ui_->radiobutton_save_albumcover_albumdir->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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CollectionSettingsPage::ClearPixmapDiskCache() {
|
||||
|
||||
ui_->disk_cache_in_use->setText("empty");
|
||||
|
||||
@@ -67,7 +67,6 @@ class CollectionSettingsPage : public SettingsPage {
|
||||
void CurrentRowChanged(const QModelIndex &idx);
|
||||
void SongTrackingToggled();
|
||||
void DiskCacheEnable(const int state);
|
||||
void CoverSaveInAlbumDirChanged();
|
||||
void ClearPixmapDiskCache();
|
||||
void CacheSizeUnitChanged(int index);
|
||||
void DiskCacheSizeUnitChanged(int index);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>519</width>
|
||||
<height>1546</height>
|
||||
<height>920</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -221,130 +221,6 @@ 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="layout_albumcovers">
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_save_options">
|
||||
<property name="title">
|
||||
<string/>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_albumdir">
|
||||
<property name="text">
|
||||
<string>Save album covers in album directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_cache">
|
||||
<property name="text">
|
||||
<string>Save album covers in cache directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_embedded">
|
||||
<property name="text">
|
||||
<string>Save album covers as embedded cover</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_cover_filename">
|
||||
<property name="title">
|
||||
<string>Filename:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="layout_cover_filename">
|
||||
<item>
|
||||
<widget class="QWidget" name="groupbox_cover_type" native="true">
|
||||
<layout class="QHBoxLayout" name="layout_cover_type">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_cover_pattern">
|
||||
<property name="text">
|
||||
<string>Pattern</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_cover_hash">
|
||||
<property name="text">
|
||||
<string>Random</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>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_albumcovercache">
|
||||
<property name="title">
|
||||
@@ -623,15 +499,6 @@ If there are no matches then it will use the largest image in the directory.</st
|
||||
<tabstop>auto_open</tabstop>
|
||||
<tabstop>pretty_covers</tabstop>
|
||||
<tabstop>show_dividers</tabstop>
|
||||
<tabstop>radiobutton_save_albumcover_albumdir</tabstop>
|
||||
<tabstop>radiobutton_save_albumcover_cache</tabstop>
|
||||
<tabstop>radiobutton_save_albumcover_embedded</tabstop>
|
||||
<tabstop>radiobutton_cover_pattern</tabstop>
|
||||
<tabstop>radiobutton_cover_hash</tabstop>
|
||||
<tabstop>lineedit_cover_pattern</tabstop>
|
||||
<tabstop>checkbox_cover_overwrite</tabstop>
|
||||
<tabstop>checkbox_cover_lowercase</tabstop>
|
||||
<tabstop>checkbox_cover_replace_spaces</tabstop>
|
||||
<tabstop>spinbox_cache_size</tabstop>
|
||||
<tabstop>combobox_cache_size</tabstop>
|
||||
<tabstop>checkbox_disk_cache</tabstop>
|
||||
|
||||
@@ -39,29 +39,49 @@
|
||||
#include "ui_coverssettingspage.h"
|
||||
#include "core/application.h"
|
||||
#include "core/iconloader.h"
|
||||
#include "utilities/coveroptions.h"
|
||||
#include "covermanager/coverproviders.h"
|
||||
#include "covermanager/coverprovider.h"
|
||||
#include "widgets/loginstatewidget.h"
|
||||
|
||||
const char *CoversSettingsPage::kSettingsGroup = "Covers";
|
||||
const char *CoversSettingsPage::kProviders = "providers";
|
||||
const char *CoversSettingsPage::kTypes = "types";
|
||||
const char *CoversSettingsPage::kSaveType = "save_type";
|
||||
const char *CoversSettingsPage::kSaveFilename = "save_filename";
|
||||
const char *CoversSettingsPage::kSavePattern = "save_pattern";
|
||||
const char *CoversSettingsPage::kSaveOverwrite = "save_overwrite";
|
||||
const char *CoversSettingsPage::kSaveLowercase = "save_lowercase";
|
||||
const char *CoversSettingsPage::kSaveReplaceSpaces = "save_replace_spaces";
|
||||
|
||||
CoversSettingsPage::CoversSettingsPage(SettingsDialog *dialog, QWidget *parent)
|
||||
: SettingsPage(dialog, parent),
|
||||
ui_(new Ui::CoversSettingsPage),
|
||||
provider_selected_(false) {
|
||||
provider_selected_(false),
|
||||
types_selected_(false) {
|
||||
|
||||
ui_->setupUi(this);
|
||||
setWindowIcon(IconLoader::Load("cdcase", true, 0, 32));
|
||||
|
||||
QObject::connect(ui_->providers_up, &QPushButton::clicked, this, &CoversSettingsPage::ProvidersMoveUp);
|
||||
QObject::connect(ui_->providers_down, &QPushButton::clicked, this, &CoversSettingsPage::ProvidersMoveDown);
|
||||
QObject::connect(ui_->providers, &QListWidget::currentItemChanged, this, &CoversSettingsPage::CurrentItemChanged);
|
||||
QObject::connect(ui_->providers, &QListWidget::itemSelectionChanged, this, &CoversSettingsPage::ItemSelectionChanged);
|
||||
QObject::connect(ui_->providers, &QListWidget::itemChanged, this, &CoversSettingsPage::ItemChanged);
|
||||
QObject::connect(ui_->providers, &QListWidget::currentItemChanged, this, &CoversSettingsPage::ProvidersCurrentItemChanged);
|
||||
QObject::connect(ui_->providers, &QListWidget::itemSelectionChanged, this, &CoversSettingsPage::ProvidersItemSelectionChanged);
|
||||
QObject::connect(ui_->providers, &QListWidget::itemChanged, this, &CoversSettingsPage::ProvidersItemChanged);
|
||||
|
||||
QObject::connect(ui_->button_authenticate, &QPushButton::clicked, this, &CoversSettingsPage::AuthenticateClicked);
|
||||
QObject::connect(ui_->login_state, &LoginStateWidget::LogoutClicked, this, &CoversSettingsPage::LogoutClicked);
|
||||
|
||||
QObject::connect(ui_->types_up, &QPushButton::clicked, this, &CoversSettingsPage::TypesMoveUp);
|
||||
QObject::connect(ui_->types_down, &QPushButton::clicked, this, &CoversSettingsPage::TypesMoveDown);
|
||||
QObject::connect(ui_->types, &QListWidget::currentItemChanged, this, &CoversSettingsPage::TypesCurrentItemChanged);
|
||||
QObject::connect(ui_->types, &QListWidget::itemSelectionChanged, this, &CoversSettingsPage::TypesItemSelectionChanged);
|
||||
QObject::connect(ui_->types, &QListWidget::itemChanged, this, &CoversSettingsPage::TypesItemChanged);
|
||||
|
||||
QObject::connect(ui_->radiobutton_save_albumcover_albumdir, &QRadioButton::toggled, this, &CoversSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
QObject::connect(ui_->radiobutton_cover_hash, &QRadioButton::toggled, this, &CoversSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
QObject::connect(ui_->radiobutton_cover_pattern, &QRadioButton::toggled, this, &CoversSettingsPage::CoverSaveInAlbumDirChanged);
|
||||
|
||||
ui_->login_state->AddCredentialGroup(ui_->widget_authenticate);
|
||||
|
||||
NoProviderSelected();
|
||||
@@ -87,6 +107,57 @@ void CoversSettingsPage::Load() {
|
||||
item->setForeground(provider->is_enabled() ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
|
||||
}
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
const QStringList all_types = QStringList() << "art_unset"
|
||||
<< "art_manual"
|
||||
<< "art_automatic"
|
||||
<< "art_embedded";
|
||||
|
||||
const QStringList types = s.value(kTypes, all_types).toStringList();
|
||||
|
||||
ui_->types->clear();
|
||||
for (const QString &type : types) {
|
||||
AddAlbumCoverArtType(type, AlbumCoverArtTypeDescription(type), true);
|
||||
}
|
||||
|
||||
for (const QString &type : all_types) {
|
||||
if (!types.contains(type)) {
|
||||
AddAlbumCoverArtType(type, AlbumCoverArtTypeDescription(type), false);
|
||||
}
|
||||
}
|
||||
|
||||
const CoverOptions::CoverType save_cover_type = static_cast<CoverOptions::CoverType>(s.value(kSaveType, static_cast<int>(CoverOptions::CoverType::Cache)).toInt());
|
||||
switch (save_cover_type) {
|
||||
case CoverOptions::CoverType::Cache:
|
||||
ui_->radiobutton_save_albumcover_cache->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverType::Album:
|
||||
ui_->radiobutton_save_albumcover_albumdir->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverType::Embedded:
|
||||
ui_->radiobutton_save_albumcover_embedded->setChecked(true);
|
||||
break;
|
||||
}
|
||||
|
||||
const CoverOptions::CoverFilename save_cover_filename = static_cast<CoverOptions::CoverFilename>(s.value(kSaveFilename, static_cast<int>(CoverOptions::CoverFilename::Pattern)).toInt());
|
||||
switch (save_cover_filename) {
|
||||
case CoverOptions::CoverFilename::Hash:
|
||||
ui_->radiobutton_cover_hash->setChecked(true);
|
||||
break;
|
||||
case CoverOptions::CoverFilename::Pattern:
|
||||
ui_->radiobutton_cover_pattern->setChecked(true);
|
||||
break;
|
||||
}
|
||||
QString cover_pattern = s.value(kSavePattern).toString();
|
||||
if (!cover_pattern.isEmpty()) ui_->lineedit_cover_pattern->setText(cover_pattern);
|
||||
ui_->checkbox_cover_overwrite->setChecked(s.value(kSaveOverwrite, false).toBool());
|
||||
ui_->checkbox_cover_lowercase->setChecked(s.value(kSaveLowercase, true).toBool());
|
||||
ui_->checkbox_cover_replace_spaces->setChecked(s.value(kSaveReplaceSpaces, true).toBool());
|
||||
|
||||
s.endGroup();
|
||||
|
||||
Init(ui_->layout_coverssettingspage->parentWidget());
|
||||
|
||||
if (!QSettings().childGroups().contains(kSettingsGroup)) set_changed();
|
||||
@@ -95,20 +166,47 @@ void CoversSettingsPage::Load() {
|
||||
|
||||
void CoversSettingsPage::Save() {
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
QStringList providers;
|
||||
for (int i = 0; i < ui_->providers->count(); ++i) {
|
||||
const QListWidgetItem *item = ui_->providers->item(i);
|
||||
if (item->checkState() == Qt::Checked) providers << item->text(); // clazy:exclude=reserve-candidates
|
||||
if (item->checkState() == Qt::Checked) providers << item->text();
|
||||
}
|
||||
s.setValue(kProviders, providers);
|
||||
|
||||
QStringList types;
|
||||
for (int i = 0; i < ui_->types->count(); ++i) {
|
||||
const QListWidgetItem *item = ui_->types->item(i);
|
||||
if (item->checkState() == Qt::Checked) {
|
||||
types << item->data(Type_Role_Name).toString();
|
||||
}
|
||||
}
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
s.setValue("providers", providers);
|
||||
s.setValue(kTypes, types);
|
||||
|
||||
CoverOptions::CoverType save_cover_type = CoverOptions::CoverType::Cache;
|
||||
if (ui_->radiobutton_save_albumcover_cache->isChecked()) save_cover_type = CoverOptions::CoverType::Cache;
|
||||
else if (ui_->radiobutton_save_albumcover_albumdir->isChecked()) save_cover_type = CoverOptions::CoverType::Album;
|
||||
else if (ui_->radiobutton_save_albumcover_embedded->isChecked()) save_cover_type = CoverOptions::CoverType::Embedded;
|
||||
s.setValue(kSaveType, static_cast<int>(save_cover_type));
|
||||
|
||||
CoverOptions::CoverFilename save_cover_filename = CoverOptions::CoverFilename::Hash;
|
||||
if (ui_->radiobutton_cover_hash->isChecked()) save_cover_filename = CoverOptions::CoverFilename::Hash;
|
||||
else if (ui_->radiobutton_cover_pattern->isChecked()) save_cover_filename = CoverOptions::CoverFilename::Pattern;
|
||||
s.setValue(kSaveFilename, static_cast<int>(save_cover_filename));
|
||||
|
||||
s.setValue(kSavePattern, ui_->lineedit_cover_pattern->text());
|
||||
s.setValue(kSaveOverwrite, ui_->checkbox_cover_overwrite->isChecked());
|
||||
s.setValue(kSaveLowercase, ui_->checkbox_cover_lowercase->isChecked());
|
||||
s.setValue(kSaveReplaceSpaces, ui_->checkbox_cover_replace_spaces->isChecked());
|
||||
|
||||
s.endGroup();
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::CurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous) {
|
||||
void CoversSettingsPage::ProvidersCurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous) {
|
||||
|
||||
if (item_previous) {
|
||||
CoverProvider *provider = dialog()->app()->cover_providers()->ProviderByName(item_previous->text());
|
||||
@@ -155,7 +253,7 @@ void CoversSettingsPage::CurrentItemChanged(QListWidgetItem *item_current, QList
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::ItemSelectionChanged() {
|
||||
void CoversSettingsPage::ProvidersItemSelectionChanged() {
|
||||
|
||||
if (ui_->providers->selectedItems().count() == 0) {
|
||||
DisableAuthentication();
|
||||
@@ -166,7 +264,7 @@ void CoversSettingsPage::ItemSelectionChanged() {
|
||||
}
|
||||
else {
|
||||
if (ui_->providers->currentItem() && !provider_selected_) {
|
||||
CurrentItemChanged(ui_->providers->currentItem(), nullptr);
|
||||
ProvidersCurrentItemChanged(ui_->providers->currentItem(), nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +285,7 @@ void CoversSettingsPage::ProvidersMove(const int d) {
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::ItemChanged(QListWidgetItem *item) {
|
||||
void CoversSettingsPage::ProvidersItemChanged(QListWidgetItem *item) {
|
||||
|
||||
item->setForeground((item->checkState() == Qt::Checked) ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
|
||||
|
||||
@@ -281,3 +379,114 @@ void CoversSettingsPage::AuthenticationFailure(const QStringList &errors) {
|
||||
bool CoversSettingsPage::ProviderCompareOrder(CoverProvider *a, CoverProvider *b) {
|
||||
return a->order() < b->order();
|
||||
}
|
||||
|
||||
void CoversSettingsPage::CoverSaveInAlbumDirChanged() {
|
||||
|
||||
if (ui_->radiobutton_save_albumcover_albumdir->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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::AddAlbumCoverArtType(const QString &name, const QString &description, const bool enabled) {
|
||||
|
||||
QListWidgetItem *item = new QListWidgetItem;
|
||||
item->setData(Type_Role_Name, name);
|
||||
item->setText(description);
|
||||
item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
|
||||
ui_->types->addItem(item);
|
||||
|
||||
}
|
||||
|
||||
QString CoversSettingsPage::AlbumCoverArtTypeDescription(const QString &type) const {
|
||||
|
||||
if (type == "art_unset") {
|
||||
return tr("Manually unset (%1)").arg(type);
|
||||
}
|
||||
if (type == "art_manual") {
|
||||
return tr("Set through album cover search (%1)").arg(type);
|
||||
}
|
||||
if (type == "art_automatic") {
|
||||
return tr("Automatically picked up from album directory (%1)").arg(type);
|
||||
}
|
||||
if (type == "art_embedded") {
|
||||
return tr("Embedded album cover art (%1)").arg(type);
|
||||
}
|
||||
|
||||
return QString();
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::TypesMoveUp() { TypesMove(-1); }
|
||||
|
||||
void CoversSettingsPage::TypesMoveDown() { TypesMove(+1); }
|
||||
|
||||
void CoversSettingsPage::TypesMove(const int d) {
|
||||
|
||||
const int row = ui_->types->currentRow();
|
||||
QListWidgetItem *item = ui_->types->takeItem(row);
|
||||
ui_->types->insertItem(row + d, item);
|
||||
ui_->types->setCurrentRow(row + d);
|
||||
|
||||
set_changed();
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::TypesItemChanged(QListWidgetItem *item) {
|
||||
|
||||
item->setForeground((item->checkState() == Qt::Checked) ? palette().color(QPalette::Active, QPalette::Text) : palette().color(QPalette::Disabled, QPalette::Text));
|
||||
|
||||
set_changed();
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::TypesCurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous) {
|
||||
|
||||
Q_UNUSED(item_previous)
|
||||
|
||||
if (item_current) {
|
||||
const int row = ui_->types->row(item_current);
|
||||
ui_->types_up->setEnabled(row != 0);
|
||||
ui_->types_down->setEnabled(row != ui_->types->count() - 1);
|
||||
types_selected_ = true;
|
||||
}
|
||||
else {
|
||||
ui_->types_up->setEnabled(false);
|
||||
ui_->types_down->setEnabled(false);
|
||||
types_selected_ = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CoversSettingsPage::TypesItemSelectionChanged() {
|
||||
|
||||
if (ui_->types->selectedItems().count() == 0) {
|
||||
ui_->types_up->setEnabled(false);
|
||||
ui_->types_down->setEnabled(false);
|
||||
}
|
||||
else {
|
||||
if (ui_->providers->currentItem() && !types_selected_) {
|
||||
TypesCurrentItemChanged(ui_->types->currentItem(), nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,14 @@ class CoversSettingsPage : public SettingsPage {
|
||||
~CoversSettingsPage() override;
|
||||
|
||||
static const char *kSettingsGroup;
|
||||
static const char *kProviders;
|
||||
static const char *kTypes;
|
||||
static const char *kSaveType;
|
||||
static const char *kSaveFilename;
|
||||
static const char *kSavePattern;
|
||||
static const char *kSaveOverwrite;
|
||||
static const char *kSaveLowercase;
|
||||
static const char *kSaveReplaceSpaces;
|
||||
|
||||
void Load() override;
|
||||
void Save() override;
|
||||
@@ -52,21 +60,35 @@ class CoversSettingsPage : public SettingsPage {
|
||||
void DisableAuthentication();
|
||||
void DisconnectAuthentication(CoverProvider *provider) const;
|
||||
static bool ProviderCompareOrder(CoverProvider *a, CoverProvider *b);
|
||||
void AddAlbumCoverArtType(const QString &name, const QString &description, const bool enabled);
|
||||
QString AlbumCoverArtTypeDescription(const QString &type) const;
|
||||
void TypesMove(const int d);
|
||||
|
||||
private slots:
|
||||
void CurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous);
|
||||
void ItemSelectionChanged();
|
||||
void ItemChanged(QListWidgetItem *item);
|
||||
void ProvidersCurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous);
|
||||
void ProvidersItemSelectionChanged();
|
||||
void ProvidersItemChanged(QListWidgetItem *item);
|
||||
void ProvidersMoveUp();
|
||||
void ProvidersMoveDown();
|
||||
void AuthenticateClicked();
|
||||
void LogoutClicked();
|
||||
void AuthenticationSuccess();
|
||||
void AuthenticationFailure(const QStringList &errors);
|
||||
void CoverSaveInAlbumDirChanged();
|
||||
void TypesCurrentItemChanged(QListWidgetItem *item_current, QListWidgetItem *item_previous);
|
||||
void TypesItemSelectionChanged();
|
||||
void TypesItemChanged(QListWidgetItem *item);
|
||||
void TypesMoveUp();
|
||||
void TypesMoveDown();
|
||||
|
||||
private:
|
||||
enum Type_Role {
|
||||
Type_Role_Name = Qt::UserRole + 1
|
||||
};
|
||||
|
||||
Ui_CoversSettingsPage *ui_;
|
||||
bool provider_selected_;
|
||||
bool types_selected_;
|
||||
};
|
||||
|
||||
#endif // COVERSSETTINGSPAGE_H
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>460</width>
|
||||
<height>600</height>
|
||||
<height>897</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -141,6 +141,180 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_album_cover_art_types">
|
||||
<property name="title">
|
||||
<string>Album cover types</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QListWidget" name="types">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Ignored">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="layout_move_up_down">
|
||||
<item>
|
||||
<widget class="QPushButton" name="types_up">
|
||||
<property name="text">
|
||||
<string>Move up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="types_down">
|
||||
<property name="text">
|
||||
<string>Move down</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_types_updown">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_albumcovers">
|
||||
<property name="title">
|
||||
<string>Saving album covers</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="layout_albumcovers">
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_save_options">
|
||||
<property name="title">
|
||||
<string/>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_albumdir">
|
||||
<property name="text">
|
||||
<string>Save album covers in album directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_cache">
|
||||
<property name="text">
|
||||
<string>Save album covers in cache directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_save_albumcover_embedded">
|
||||
<property name="text">
|
||||
<string>Save album covers as embedded cover</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupbox_cover_filename">
|
||||
<property name="title">
|
||||
<string>Filename:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="layout_cover_filename">
|
||||
<item>
|
||||
<widget class="QWidget" name="groupbox_cover_type" native="true">
|
||||
<layout class="QHBoxLayout" name="layout_cover_type">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_cover_pattern">
|
||||
<property name="text">
|
||||
<string>Pattern</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radiobutton_cover_hash">
|
||||
<property name="text">
|
||||
<string>Random</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>
|
||||
<item>
|
||||
<spacer name="spacer_bottom">
|
||||
<property name="orientation">
|
||||
|
||||
Reference in New Issue
Block a user