KCalUtils

qtresourcetemplateloader.cpp
1 /*
2  * SPDX-FileCopyrightText: 2016-2023 Laurent Montel <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  *
6  */
7 
8 #include "qtresourcetemplateloader.h"
9 
10 #include <QFile>
11 #include <QTextStream>
12 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
13 #include <grantlee/engine.h>
14 #else
15 #include <KTextTemplate/Engine>
16 #endif
17 // TODO: remove this class when Grantlee support it
18 using namespace KCalUtils;
19 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
20 QtResourceTemplateLoader::QtResourceTemplateLoader(const QSharedPointer<Grantlee::AbstractLocalizer> &localizer)
21  : Grantlee::FileSystemTemplateLoader(localizer)
22 {
23 }
24 #else
25 QtResourceTemplateLoader::QtResourceTemplateLoader(const QSharedPointer<KTextTemplate::AbstractLocalizer> &localizer)
26  : KTextTemplate::FileSystemTemplateLoader(localizer)
27 {
28 }
29 #endif
30 
31 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
32 Grantlee::Template QtResourceTemplateLoader::loadByName(const QString &fileName, const Grantlee::Engine *engine) const
33 #else
34 KTextTemplate::Template QtResourceTemplateLoader::loadByName(const QString &fileName, const KTextTemplate::Engine *engine) const
35 #endif
36 {
37  // Qt resource file
38  if (fileName.startsWith(QLatin1String(":/"))) {
39  QFile file;
40  file.setFileName(fileName);
41  if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
42 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
43  return Grantlee::Template();
44 #else
45  return KTextTemplate::Template();
46 #endif
47  }
48 
49  QTextStream fstream(&file);
50 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
51  fstream.setCodec("UTF-8");
52 #endif
53  const auto fileContent = fstream.readAll();
54 
55  return engine->newTemplate(fileContent, fileName);
56  } else {
57 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
58  return Grantlee::FileSystemTemplateLoader::loadByName(fileName, engine);
59 #else
61 #endif
62  }
63 }
64 
65 bool QtResourceTemplateLoader::canLoadTemplate(const QString &name) const
66 {
67  // Qt resource file
68  if (name.startsWith(QLatin1String(":/"))) {
69  QFile file;
70  file.setFileName(name);
71 
72  if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
73  return false;
74  }
75  file.close();
76  return true;
77  } else {
78 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
79  return Grantlee::FileSystemTemplateLoader::canLoadTemplate(name);
80 #else
82 #endif
83  }
84 }
virtual bool open(QIODevice::OpenMode mode) override
bool canLoadTemplate(const QString &name) const override
bool exists() const const
void setFileName(const QString &name)
virtual void close() override
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const const
QString name(StandardShortcut id)
Template loadByName(const QString &name, Engine const *engine) const override
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Mar 26 2023 04:09:43 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.