File indexing completed on 2024-05-12 05:13:33

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 GrantleeTheme;
0015 QtResourceTemplateLoader::QtResourceTemplateLoader(const QSharedPointer<KTextTemplate::AbstractLocalizer> localizer)
0016     : KTextTemplate::FileSystemTemplateLoader(localizer)
0017 {
0018 }
0019 KTextTemplate::Template QtResourceTemplateLoader::loadByName(const QString &fileName, const KTextTemplate::Engine *engine) const
0020 {
0021     // Qt resource file
0022     if (fileName.startsWith(QLatin1StringView(":/"))) {
0023         QFile file;
0024         file.setFileName(fileName);
0025         if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0026             return {};
0027         }
0028 
0029         QTextStream fstream(&file);
0030         const auto fileContent = fstream.readAll();
0031 
0032         return engine->newTemplate(fileContent, fileName);
0033     } else {
0034         return KTextTemplate::FileSystemTemplateLoader::loadByName(fileName, engine);
0035     }
0036 }
0037 
0038 bool QtResourceTemplateLoader::canLoadTemplate(const QString &name) const
0039 {
0040     // Qt resource file
0041     if (name.startsWith(QLatin1StringView(":/"))) {
0042         QFile file;
0043         file.setFileName(name);
0044 
0045         if (!file.exists() || !file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0046             return false;
0047         }
0048         file.close();
0049         return true;
0050     } else {
0051         return KTextTemplate::FileSystemTemplateLoader::canLoadTemplate(name);
0052     }
0053 }