File indexing completed on 2024-04-21 04:21:20

0001 // SPDX-FileCopyrightText: 2003-2022 Jesper K. Pedersen <blackie@kde.org>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #ifndef HTMLGENERATOR_GENERATOR_H
0006 #define HTMLGENERATOR_GENERATOR_H
0007 
0008 #include "Setup.h"
0009 
0010 #include <DB/CategoryPtr.h>
0011 #include <DB/ImageInfoPtr.h>
0012 #include <ImageManager/ImageClientInterface.h>
0013 #include <Utilities/UniqFilenameMapper.h>
0014 
0015 #include <QEventLoop>
0016 #include <QPointer>
0017 #include <QProgressDialog>
0018 #include <QString>
0019 #include <QTemporaryDir>
0020 
0021 namespace HTMLGenerator
0022 {
0023 
0024 class Generator : public QProgressDialog, private ImageManager::ImageClientInterface
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     Generator(const Setup &setup, QWidget *parent);
0030     ~Generator() override;
0031     void generate();
0032 
0033 protected Q_SLOTS:
0034     void slotCancelGenerate();
0035     void showBrowser();
0036 
0037 protected:
0038     bool generateIndexPage(int width, int height);
0039     bool generateContentPage(int width, int height,
0040                              const DB::FileName &prevInfo, const DB::FileName &current, const DB::FileName &nextInfo);
0041     bool linkIndexFile();
0042     QString populateDescription(QList<DB::CategoryPtr> categories, const DB::ImageInfoPtr info);
0043 
0044 public:
0045     QString namePage(int width, int height, const DB::FileName &fileName);
0046     QString nameImage(const DB::FileName &fileName, int size);
0047 
0048     QString createImage(const DB::FileName &id, int size);
0049     QString createVideo(const DB::FileName &fileName);
0050 
0051     QString kimFileName(bool relative);
0052     bool writeToFile(const QString &fileName, const QString &str);
0053     int calculateSteps();
0054     void getThemeInfo(QString *baseDir, QString *name, QString *author);
0055 
0056     void pixmapLoaded(ImageManager::ImageRequest *request, const QImage &image) override;
0057     int maxImageSize();
0058     void minImageSize(int &width, int &height);
0059 
0060 private:
0061     Setup m_setup;
0062     int m_waitCounter;
0063     int m_total;
0064     QTemporaryDir m_tempDirHandle;
0065     QDir m_tempDir;
0066     Utilities::UniqFilenameMapper m_filenameMapper;
0067     QSet<QPair<DB::FileName, int>> m_generatedFiles;
0068     DB::FileNameSet m_copiedVideos;
0069     bool m_hasEnteredLoop;
0070     QPointer<QEventLoop> m_eventLoop;
0071     QString m_avconv;
0072 };
0073 
0074 }
0075 
0076 #endif /* HTMLGENERATOR_GENERATOR_H */
0077 
0078 // vi:expandtab:tabstop=4 shiftwidth=4: