Skip to content

Commit

Permalink
fix(UI): Fix TheTvDbImages language configuration
Browse files Browse the repository at this point in the history
Follow up to 68ea08d
  • Loading branch information
bugwelle committed Aug 9, 2024
1 parent a6952a2 commit a743cda
Show file tree
Hide file tree
Showing 10 changed files with 192 additions and 31 deletions.
4 changes: 4 additions & 0 deletions MediaElch.pro
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ SOURCES += \
src/scrapers/concert/tmdb/TmdbConcert.cpp \
src/scrapers/concert/tmdb/TmdbConcertSearchJob.cpp \
src/scrapers/image/FanartTvConfiguration.cpp \
src/scrapers/image/TheTvDbImagesConfiguration.cpp \
src/scrapers/image/FanartTv.cpp \
src/scrapers/image/FanartTvMusicArtists.cpp \
src/scrapers/image/FanartTvMusic.cpp \
Expand Down Expand Up @@ -427,6 +428,7 @@ SOURCES += \
src/ui/renamer/RenamerPlaceholders.cpp \
src/ui/scrapers/concert/TmdbConcertConfigurationView.cpp \
src/ui/scrapers/image/FanartTvConfigurationView.cpp \
src/ui/scrapers/image/TheTvDbImagesConfigurationView.cpp \
src/ui/scrapers/movie/AebnConfigurationView.cpp \
src/ui/scrapers/movie/ImdbMovieConfigurationView.cpp \
src/ui/scrapers/movie/TmdbMovieConfigurationView.cpp \
Expand Down Expand Up @@ -642,6 +644,7 @@ HEADERS += Version.h \
src/scrapers/concert/tmdb/TmdbConcert.h \
src/scrapers/concert/tmdb/TmdbConcertSearchJob.h \
src/scrapers/image/FanartTvConfiguration.h \
src/scrapers/image/TheTvDbImagesConfiguration.h \
src/scrapers/image/FanartTv.h \
src/scrapers/image/FanartTvMusicArtists.h \
src/scrapers/image/FanartTvMusic.h \
Expand Down Expand Up @@ -817,6 +820,7 @@ HEADERS += Version.h \
src/ui/renamer/RenamerPlaceholders.h \
src/ui/scrapers/concert/TmdbConcertConfigurationView.h \
src/ui/scrapers/image/FanartTvConfigurationView.h \
src/ui/scrapers/image/TheTvDbImagesConfigurationView.h \
src/ui/scrapers/movie/AebnConfigurationView.h \
src/ui/scrapers/movie/ImdbMovieConfigurationView.h \
src/ui/scrapers/movie/TmdbMovieConfigurationView.h \
Expand Down
1 change: 1 addition & 0 deletions src/scrapers/image/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ add_library(
TheTvDbImages.cpp
TmdbImages.cpp
FanartTvConfiguration.cpp
TheTvDbImagesConfiguration.cpp
)

target_link_libraries(
Expand Down
29 changes: 3 additions & 26 deletions src/scrapers/image/TheTvDbImages.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#include "TheTvDbImages.h"

#include "TheTvDbImagesConfiguration.h"
#include "data/tv_show/TvShow.h"
#include "data/tv_show/TvShowEpisode.h"
#include "globals/Manager.h"
#include "scrapers/tv_show/ShowMerger.h"
#include "scrapers/tv_show/thetvdb/TheTvDb.h"
#include "settings/Settings.h"

namespace mediaelch {
namespace scraper {
Expand All @@ -32,31 +32,8 @@ TheTvDbImages::TheTvDbImages(QObject* parent) : ImageProvider(parent)
ImageType::TvShowEpisodeThumb,
ImageType::TvShowSeasonBanner,
ImageType::TvShowSeasonBackdrop};
m_meta.supportedLanguages = {"bg",
"zh",
"hr",
"cs",
"da",
"nl",
"en",
"fi",
"fr",
"de",
"el",
"he",
"hu",
"it",
"ja",
"ko",
"no",
"pl",
"pt",
"ru",
"sl",
"es",
"sv",
"tr"};
m_meta.defaultLocale = Locale("en");
m_meta.supportedLanguages = TheTvDbImagesConfiguration::supportedLanguages();
m_meta.defaultLocale = TheTvDbImagesConfiguration::defaultLocale();

m_dummyShow = new TvShow(mediaelch::DirectoryPath(), this);
m_dummyEpisode = new TvShowEpisode(QStringList(), m_dummyShow);
Expand Down
75 changes: 75 additions & 0 deletions src/scrapers/image/TheTvDbImagesConfiguration.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#include "scrapers/image/TheTvDbImagesConfiguration.h"

#include "scrapers/image/TheTvDbImages.h"

namespace {

static constexpr char moduleName[] = "scrapers";
static const Settings::Key KEY_SCRAPERS_LANGUAGE(moduleName, "Scrapers/images.thetvdb/Language");

} // namespace


namespace mediaelch {
namespace scraper {

TheTvDbImagesConfiguration::TheTvDbImagesConfiguration(Settings& settings) :
ScraperConfiguration(QString(TheTvDbImages::ID), settings)
{
settings.onSettingChanged(KEY_SCRAPERS_LANGUAGE, this, [this]() { emit languageChanged(language()); });
}

void TheTvDbImagesConfiguration::init()
{
settings().setDefaultValue(KEY_SCRAPERS_LANGUAGE, defaultLocale().toString());
}

mediaelch::Locale TheTvDbImagesConfiguration::defaultLocale()
{
return {"en"};
}

QVector<Locale> TheTvDbImagesConfiguration::supportedLanguages()
{
// Multiple languages, but no way to query for it and also no official list of languages.
return QVector<Locale>({
"bg",
"zh",
"hr",
"cs",
"da",
"nl",
"en",
"fi",
"fr",
"de",
"el",
"he",
"hu",
"it",
"ja",
"ko",
"no",
"pl",
"pt",
"ru",
"sl",
"es",
"sv",
"tr",
});
}

Locale TheTvDbImagesConfiguration::language()
{
return settings().value(KEY_SCRAPERS_LANGUAGE).toString();
}

void TheTvDbImagesConfiguration::setLanguage(const Locale& value)
{
settings().setValue(KEY_SCRAPERS_LANGUAGE, value.toString());
}


} // namespace scraper
} // namespace mediaelch
34 changes: 34 additions & 0 deletions src/scrapers/image/TheTvDbImagesConfiguration.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once

#include "data/Locale.h"
#include "scrapers/ScraperConfiguration.h"
#include "settings/Settings.h"
#include "utils/Meta.h"

#include <QVector>

namespace mediaelch {
namespace scraper {

class TheTvDbImagesConfiguration : public QObject, public ScraperConfiguration
{
Q_OBJECT
public:
explicit TheTvDbImagesConfiguration(Settings& settings);
~TheTvDbImagesConfiguration() override = default;

void init() override;

ELCH_NODISCARD static mediaelch::Locale defaultLocale();
ELCH_NODISCARD static QVector<Locale> supportedLanguages();

signals:
void languageChanged(Locale language);

public:
ELCH_NODISCARD Locale language() override;
void setLanguage(const Locale& value) override;
};

} // namespace scraper
} // namespace mediaelch
12 changes: 8 additions & 4 deletions src/ui/image/ImageDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include "data/music/Artist.h"
#include "data/tv_show/TvShow.h"
#include "data/tv_show/TvShowEpisode.h"
#include "globals/Helper.h"
#include "globals/Manager.h"
#include "log/Log.h"
#include "media/NameFormatter.h"
Expand All @@ -18,7 +17,6 @@

#include <QBuffer>
#include <QFileDialog>
#include <QLabel>
#include <QMovie>
#include <QPainter>
#include <QSize>
Expand Down Expand Up @@ -672,8 +670,14 @@ void ImageDialog::onProviderChanged(int index)
mediaelch::ScraperConfiguration* providerSettings =
Manager::instance()->scrapers().imageProviderConfig(provider->meta().identifier);
MediaElch_Assert(providerSettings != nullptr);
ui->comboLanguage->setupLanguages(provider->meta().supportedLanguages, providerSettings->language());
ui->comboLanguage->setEnabled(true);
if (providerSettings->language() == mediaelch::Locale::NoLocale) {
// can happen if there is a mismatch between configuration class and "supportedLanguages".
ui->comboLanguage->setInvalid();
ui->comboLanguage->setEnabled(false);
} else {
ui->comboLanguage->setupLanguages(provider->meta().supportedLanguages, providerSettings->language());
ui->comboLanguage->setEnabled(true);
}
}

if (isDefaultProvider) {
Expand Down
1 change: 1 addition & 0 deletions src/ui/scrapers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ add_library(
music/UniversalMusicConfigurationView.cpp
concert/TmdbConcertConfigurationView.cpp
image/FanartTvConfigurationView.cpp
image/TheTvDbImagesConfigurationView.cpp
)

target_link_libraries(
Expand Down
7 changes: 6 additions & 1 deletion src/ui/scrapers/ScraperManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "scrapers/image/FanartTvMusic.h"
#include "scrapers/image/FanartTvMusicArtists.h"
#include "scrapers/image/TheTvDbImages.h"
#include "scrapers/image/TheTvDbImagesConfiguration.h"
#include "scrapers/image/TmdbImages.h"
#include "scrapers/movie/MovieScraper.h"
#include "scrapers/movie/adultdvdempire/AdultDvdEmpire.h"
Expand Down Expand Up @@ -37,6 +38,7 @@
#include "settings/Settings.h"
#include "ui/scrapers/concert/TmdbConcertConfigurationView.h"
#include "ui/scrapers/image/FanartTvConfigurationView.h"
#include "ui/scrapers/image/TheTvDbImagesConfigurationView.h"
#include "ui/scrapers/movie/AebnConfigurationView.h"
#include "ui/scrapers/movie/ImdbMovieConfigurationView.h"
#include "ui/scrapers/movie/TmdbMovieConfigurationView.h"
Expand Down Expand Up @@ -456,9 +458,12 @@ void ScraperManager::initImageProviders()
}
{
ManagedImageProvider provider;
auto providerConfig = std::make_unique<ScraperConfigurationStub>(TheTvDbImages::ID, m_settings);
auto providerConfig = std::make_unique<TheTvDbImagesConfiguration>(m_settings);
providerConfig->init();
provider.m_scraper = std::make_unique<TheTvDbImages>(nullptr);
provider.m_viewFactory = [config = providerConfig.get()]() {
return new TheTvDbImagesConfigurationView(*config);
};
provider.m_config = std::move(providerConfig);

m_imageProviders.push_back(std::move(provider));
Expand Down
35 changes: 35 additions & 0 deletions src/ui/scrapers/image/TheTvDbImagesConfigurationView.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "ui/scrapers/image/TheTvDbImagesConfigurationView.h"

#include <QGridLayout>
#include <QLabel>

namespace mediaelch {
namespace scraper {


TheTvDbImagesConfigurationView::TheTvDbImagesConfigurationView(TheTvDbImagesConfiguration& settings) :
m_settings(settings)
{
m_languageBox = new LanguageCombo(this);
m_languageBox->setupLanguages(m_settings.supportedLanguages(), m_settings.language());

auto* layout = new QGridLayout(this);
layout->addWidget(new QLabel(tr("Language")), 0, 0);
layout->addWidget(m_languageBox, 0, 1);
layout->setColumnStretch(2, 1);
layout->setContentsMargins(12, 0, 12, 12);


connect(m_languageBox, &LanguageCombo::languageChanged, this, [this]() {
m_settings.setLanguage(m_languageBox->currentLocale());
});
connect(&m_settings, &TheTvDbImagesConfiguration::languageChanged, this, [this](Locale language) {
const bool blocked = m_languageBox->blockSignals(true); // avoid triggering save-logic or infinite loop
m_languageBox->setLanguage(language);
m_languageBox->blockSignals(blocked);
});
}


} // namespace scraper
} // namespace mediaelch
25 changes: 25 additions & 0 deletions src/ui/scrapers/image/TheTvDbImagesConfigurationView.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once

#include "scrapers/image/TheTvDbImagesConfiguration.h"
#include "ui/small_widgets/LanguageCombo.h"

#include <QWidget>

namespace mediaelch {
namespace scraper {

class TheTvDbImagesConfigurationView : public QWidget
{
Q_OBJECT

public:
explicit TheTvDbImagesConfigurationView(TheTvDbImagesConfiguration& settings);
~TheTvDbImagesConfigurationView() override = default;

private:
TheTvDbImagesConfiguration& m_settings;
LanguageCombo* m_languageBox{nullptr};
};

} // namespace scraper
} // namespace mediaelch

0 comments on commit a743cda

Please sign in to comment.