Make import ComicInfo.XML from new comics optional

It is disabled by default.
This commit is contained in:
Luis Ángel San Martín
2022-10-28 23:31:55 +02:00
parent f8d89f7c14
commit 150d27c3ad
10 changed files with 44 additions and 18 deletions

View File

@ -10,8 +10,8 @@ using namespace YACReader;
bool InitialComicInfoExtractor::crash = false;
InitialComicInfoExtractor::InitialComicInfoExtractor(QString fileSource, QString target, int coverPage)
: _fileSource(fileSource), _target(target), _numPages(0), _coverPage(coverPage), _xmlInfoData()
InitialComicInfoExtractor::InitialComicInfoExtractor(QString fileSource, QString target, int coverPage, bool getXMLMetadata)
: _fileSource(fileSource), _target(target), _numPages(0), _coverPage(coverPage), getXMLMetadata(getXMLMetadata), _xmlInfoData()
{
}
@ -101,16 +101,17 @@ void InitialComicInfoExtractor::extract()
QList<QString> order = archive.getFileNames();
// Try to find embeded XML info (ComicRack or ComicTagger)
if (getXMLMetadata) {
// Try to find embeded XML info (ComicRack or ComicTagger)
auto infoIndex = 0;
for (auto &fileName : order) {
if (fileName.endsWith(".xml", Qt::CaseInsensitive)) {
_xmlInfoData = archive.getRawDataAtIndex(infoIndex);
break;
}
auto infoIndex = 0;
for (auto &fileName : order) {
if (fileName.endsWith(".xml", Qt::CaseInsensitive)) {
_xmlInfoData = archive.getRawDataAtIndex(infoIndex);
break;
infoIndex++;
}
infoIndex++;
}
//--------------------------

View File

@ -9,7 +9,7 @@ class InitialComicInfoExtractor : public QObject
Q_OBJECT
public:
InitialComicInfoExtractor(QString fileSource, QString target = "", int coverPage = 1);
InitialComicInfoExtractor(QString fileSource, QString target = "", int coverPage = 1, bool getXMLMetadata = false);
private:
QString _fileSource;
@ -19,6 +19,7 @@ private:
QPair<int, int> _coverSize;
QImage _cover;
int _coverPage;
int getXMLMetadata;
static bool crash;
QByteArray _xmlInfoData;
void saveCover(const QString &path, const QImage &cover);

View File

@ -18,6 +18,8 @@
#include "pdf_comic.h"
#include "yacreader_global.h"
#include "yacreader_global_gui.h"
#include "QsLog.h"
#include <algorithm>
@ -26,8 +28,8 @@ using namespace std;
using namespace YACReader;
//--------------------------------------------------------------------------------
LibraryCreator::LibraryCreator()
: creation(false), partialUpdate(false)
LibraryCreator::LibraryCreator(QSettings *settings)
: creation(false), partialUpdate(false), settings(settings)
{
_nameFilter << Comic::comicExtensions;
}
@ -301,7 +303,7 @@ void LibraryCreator::insertComic(const QString &relativePath, const QFileInfo &f
QPair<int, int> originalCoverSize = { 0, 0 };
bool exists = checkCover(hash);
YACReader::InitialComicInfoExtractor ie(QDir::cleanPath(fileInfo.absoluteFilePath()), _target + "/covers/" + hash + ".jpg", comic.info.coverPage.toInt());
YACReader::InitialComicInfoExtractor ie(QDir::cleanPath(fileInfo.absoluteFilePath()), _target + "/covers/" + hash + ".jpg", comic.info.coverPage.toInt(), settings->value(IMPORT_COMIC_INFO_XML_METADATA, false).toBool());
if (!(comic.hasCover() && exists)) {
ie.extract();

View File

@ -22,7 +22,7 @@ class LibraryCreator : public QThread
{
Q_OBJECT
public:
LibraryCreator();
LibraryCreator(QSettings *settings);
void createLibrary(const QString &source, const QString &target);
void updateLibrary(const QString &source, const QString &target);
void updateFolder(const QString &source, const QString &target, const QString &folder, const QModelIndex &dest);
@ -54,6 +54,7 @@ private:
bool creation;
bool partialUpdate;
QModelIndex folderDestinationModelIndex;
QSettings *settings;
signals:
void finished();

View File

@ -167,7 +167,7 @@ void LibraryWindow::setupUI()
setUnifiedTitleAndToolBarOnMac(true);
libraryCreator = new LibraryCreator();
libraryCreator = new LibraryCreator(settings);
packageManager = new PackageManager();
xmlInfoLibraryScanner = new XMLInfoLibraryScanner();

View File

@ -50,13 +50,13 @@ OptionsDialog::OptionsDialog(QWidget *parent)
trayIconCheckbox = new QCheckBox(tr("Close to tray"));
startToTrayCheckbox = new QCheckBox(tr("Start into the system tray"));
connect(trayIconCheckbox, &QCheckBox::clicked,
connect(trayIconCheckbox, &QCheckBox::clicked, this,
[=](bool checked) {
settings->setValue(CLOSE_TO_TRAY, checked);
startToTrayCheckbox->setEnabled(checked);
emit optionsChanged();
});
connect(startToTrayCheckbox, &QCheckBox::clicked,
connect(startToTrayCheckbox, &QCheckBox::clicked, this,
[=](bool checked) {
settings->setValue(START_TO_TRAY, checked);
});
@ -74,6 +74,18 @@ OptionsDialog::OptionsDialog(QWidget *parent)
connect(apiKeyButton, &QAbstractButton::clicked, this, &OptionsDialog::editApiKey);
auto comicInfoXMLBox = new QGroupBox(tr("ComicInfo.xml legacy support"));
comicInfoXMLCheckbox = new QCheckBox(tr("Import metada from ComicInfo.xml when adding new comics"));
connect(comicInfoXMLCheckbox, &QCheckBox::clicked, this,
[=](bool checked) {
settings->setValue(IMPORT_COMIC_INFO_XML_METADATA, checked);
});
auto comicInfoXMLBoxLayout = new QVBoxLayout();
comicInfoXMLBoxLayout->addWidget(comicInfoXMLCheckbox);
comicInfoXMLBox->setLayout(comicInfoXMLBoxLayout);
// grid view background config
useBackgroundImageCheck = new QCheckBox(tr("Enable background image"));
@ -139,6 +151,7 @@ OptionsDialog::OptionsDialog(QWidget *parent)
generalLayout->addWidget(trayIconBox);
generalLayout->addWidget(shortcutsBox);
generalLayout->addWidget(apiKeyBox);
generalLayout->addWidget(comicInfoXMLBox);
generalLayout->addStretch();
tabWidget->addTab(generalW, tr("General"));
@ -172,6 +185,8 @@ void OptionsDialog::restoreOptions(QSettings *settings)
startToTrayCheckbox->setChecked(settings->value(START_TO_TRAY, false).toBool());
startToTrayCheckbox->setEnabled(trayIconCheckbox->isChecked());
comicInfoXMLCheckbox->setChecked(settings->value(IMPORT_COMIC_INFO_XML_METADATA, false).toBool());
bool useBackgroundImage = settings->value(USE_BACKGROUND_IMAGE_IN_GRID_VIEW, true).toBool();
useBackgroundImageCheck->setChecked(useBackgroundImage);

View File

@ -37,6 +37,7 @@ private:
QCheckBox *displayContinueReadingBannerCheck;
QCheckBox *trayIconCheckbox;
QCheckBox *startToTrayCheckbox;
QCheckBox *comicInfoXMLCheckbox;
};
#endif