File indexing completed on 2024-06-16 04:47:20
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file is Skrooge plugin for JSON import / export. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgimportpluginjson.h" 0012 0013 #include <klocalizedstring.h> 0014 #include <kpluginfactory.h> 0015 0016 #include <qsavefile.h> 0017 0018 #include "skgdocumentbank.h" 0019 #include "skgservices.h" 0020 #include "skgtraces.h" 0021 0022 /** 0023 * This plugin factory. 0024 */ 0025 K_PLUGIN_CLASS_WITH_JSON(SKGImportPluginJson, "metadata.json") 0026 0027 SKGImportPluginJson::SKGImportPluginJson(QObject* iImporter, const QVariantList& iArg) 0028 : SKGImportPlugin(iImporter) 0029 { 0030 SKGTRACEINFUNC(10) 0031 Q_UNUSED(iArg) 0032 } 0033 0034 SKGImportPluginJson::~SKGImportPluginJson() 0035 = default; 0036 0037 bool SKGImportPluginJson::isExportPossible() 0038 { 0039 SKGTRACEINFUNC(10) 0040 return (m_importer->getDocument() == nullptr ? true : m_importer->getFileNameExtension() == QStringLiteral("JSON")); 0041 } 0042 0043 SKGError SKGImportPluginJson::exportFile() 0044 { 0045 SKGError err; 0046 QString doc; 0047 err = m_importer->getDocument()->copyToJson(doc); 0048 IFOK(err) { 0049 QSaveFile file(m_importer->getLocalFileName(false)); 0050 if (!file.open(QIODevice::WriteOnly)) { 0051 err.setReturnCode(ERR_INVALIDARG).setMessage(i18nc("Error message", "Save file '%1' failed", m_importer->getFileName().toDisplayString())); 0052 } else { 0053 QTextStream stream(&file); 0054 if (!m_importer->getCodec().isEmpty()) { 0055 stream.setCodec(m_importer->getCodec().toLatin1().constData()); 0056 } 0057 stream << doc << SKGENDL; 0058 0059 // Close file 0060 file.commit(); 0061 } 0062 } 0063 return err; 0064 } 0065 0066 QString SKGImportPluginJson::getMimeTypeFilter() const 0067 { 0068 return "*.json|" % i18nc("A file format", "JSON file"); 0069 } 0070 0071 #include <skgimportpluginjson.moc>