File indexing completed on 2024-05-12 05:15:03

0001 /*
0002  * SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #include "qtresourcetemplateloader.h"
0009 
0010 #include <KTextTemplate/Engine>
0011 #include <QFile>
0012 #include <QTextStream>
0013 // TODO: remove this class when Grantlee support it
0014 using namespace KCalUtils;
0015 QtResourceTemplateLoader::QtResourceTemplateLoader(const QSharedPointer<KTextTemplate::AbstractLocalizer> &localizer)
0016     : KTextTemplate::FileSystemTemplateLoader(localizer)
0017 {
0018 }
0019 
0020 KTextTemplate::Template QtResourceTemplateLoader::loadByName(const QString &fileName, const KTextTemplate::Engine *engine) const
0021 {
0022     // Qt resource file
0023     if (fileName.startsWith(QLatin1StringView(":/"))) {
0024         QFile file;
0025         file.setFileName(fileName);
0026         if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0027             return KTextTemplate::Template();
0028         }
0029 
0030         QTextStream fstream(&file);
0031         const auto fileContent = fstream.readAll();
0032 
0033         return engine->newTemplate(fileContent, fileName);
0034     } else {
0035         return KTextTemplate::FileSystemTemplateLoader::loadByName(fileName, engine);
0036     }
0037 }
0038 
0039 bool QtResourceTemplateLoader::canLoadTemplate(const QString &name) const
0040 {
0041     // Qt resource file
0042     if (name.startsWith(QLatin1StringView(":/"))) {
0043         QFile file;
0044         file.setFileName(name);
0045 
0046         if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0047             return false;
0048         }
0049         file.close();
0050         return true;
0051     } else {
0052         return KTextTemplate::FileSystemTemplateLoader::canLoadTemplate(name);
0053     }
0054 }