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 }