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 }