diff --git a/gui/gui.pro b/gui/gui.pro index 60fe30a..cb515f7 100644 --- a/gui/gui.pro +++ b/gui/gui.pro @@ -36,9 +36,11 @@ SOURCES += \ clicklabel.cpp \ previewgenerator.cpp \ previewgeneratormapfunctor.cpp \ + previewgeneratorodt.cpp \ previewgeneratorpdf.cpp \ previewgeneratorplaintext.cpp \ previewresult.cpp \ + previewresultodt.cpp \ previewresultpdf.cpp \ previewresultplaintext.cpp \ renderconfig.cpp \ @@ -54,9 +56,11 @@ HEADERS += \ clicklabel.h \ previewgenerator.h \ previewgeneratormapfunctor.h \ + previewgeneratorodt.h \ previewgeneratorpdf.h \ previewgeneratorplaintext.h \ previewresult.h \ + previewresultodt.h \ previewresultpdf.h \ previewresultplaintext.h \ renderconfig.h \ @@ -66,6 +70,7 @@ FORMS += \ mainwindow.ui INCLUDEPATH += /usr/include/poppler/qt5/ +INCLUDEPATH += /usr/include/quazip5 QT += widgets sql diff --git a/gui/previewgenerator.cpp b/gui/previewgenerator.cpp index 25a911b..1e0b2ce 100644 --- a/gui/previewgenerator.cpp +++ b/gui/previewgenerator.cpp @@ -2,13 +2,15 @@ #include "previewgenerator.h" #include "previewgeneratorpdf.h" #include "previewgeneratorplaintext.h" +#include "previewgeneratorodt.h" static PreviewGenerator *plainTextGenerator = new PreviewGeneratorPlainText(); static QMap generators{ {"pdf", new PreviewGeneratorPdf()}, {"txt", plainTextGenerator}, {"md", plainTextGenerator}, {"py", plainTextGenerator}, {"java", plainTextGenerator}, {"js", plainTextGenerator}, - {"cpp", plainTextGenerator}, {"c", plainTextGenerator}, {"sql", plainTextGenerator}}; + {"cpp", plainTextGenerator}, {"c", plainTextGenerator}, {"sql", plainTextGenerator}, + {"odt", new PreviewGeneratorOdt()}}; PreviewGenerator *PreviewGenerator::get(QFileInfo &info) { diff --git a/gui/previewgeneratorodt.cpp b/gui/previewgeneratorodt.cpp new file mode 100644 index 0000000..de5b64a --- /dev/null +++ b/gui/previewgeneratorodt.cpp @@ -0,0 +1,32 @@ +#include +#include +#include "previewgeneratorplaintext.h" +#include "previewgeneratorodt.h" +#include "previewresultodt.h" +#include "../shared/tagstripperprocessor.h" + +QSharedPointer PreviewGeneratorOdt::generate(RenderConfig config, QString documentPath, + unsigned int page) +{ + PreviewResultOdt *result = new PreviewResultOdt(documentPath, page); + + QFileInfo info{documentPath}; + + QuaZipFile zipFile(documentPath); + zipFile.setFileName("content.xml"); + if(!zipFile.open(QIODevice::ReadOnly)) + { + return QSharedPointer(result); + } + QByteArray entireContent = zipFile.readAll(); + if(entireContent.isEmpty()) + { + throw LooqsGeneralException("Error while reading content.xml of " + documentPath); + } + TagStripperProcessor tsp; + QString content = tsp.process(entireContent).first().content; + + PreviewGeneratorPlainText plainTextGenerator; + result->setText(plainTextGenerator.generatePreviewText(content, config, info.fileName())); + return QSharedPointer(result); +} diff --git a/gui/previewgeneratorodt.h b/gui/previewgeneratorodt.h new file mode 100644 index 0000000..661c5fa --- /dev/null +++ b/gui/previewgeneratorodt.h @@ -0,0 +1,12 @@ +#ifndef PREVIEWGENERATORODT_H +#define PREVIEWGENERATORODT_H + +#include "previewgenerator.h" +class PreviewGeneratorOdt : public PreviewGenerator +{ + public: + using PreviewGenerator::PreviewGenerator; + + QSharedPointer generate(RenderConfig config, QString documentPath, unsigned int page); +}; +#endif // PREVIEWGENERATORODT_H