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 ¤t, 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: