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>