File indexing completed on 2024-06-02 06:03:20

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007-2009, 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_MODELCODECMANAGER_HPP
0010 #define KASTEN_MODELCODECMANAGER_HPP
0011 
0012 // lib
0013 #include "kastencore_export.hpp"
0014 // Qt
0015 #include <QObject>
0016 #include <QVector>
0017 // Std
0018 #include <memory>
0019 
0020 namespace Kasten {
0021 
0022 class AbstractModel;
0023 class AbstractModelSelection;
0024 class AbstractModelStreamEncoder;
0025 class AbstractModelStreamDecoder;
0026 class AbstractModelDataGenerator;
0027 class AbstractModelExporter;
0028 class AbstractOverwriteDialog;
0029 
0030 class ModelCodecManagerPrivate;
0031 
0032 class KASTENCORE_EXPORT ModelCodecManager : public QObject
0033 {
0034     Q_OBJECT
0035 
0036 public:
0037     explicit ModelCodecManager();
0038     ~ModelCodecManager() override;
0039 
0040 public:
0041     // or use the viewmodel here? on what should the export be based?
0042     void encodeToStream(AbstractModelStreamEncoder* encoder,
0043                         AbstractModel* model, const AbstractModelSelection* selection);
0044 
0045     void exportDocument(AbstractModelExporter* exporter,
0046                         AbstractModel* model, const AbstractModelSelection* selection);
0047 
0048 public:
0049     QVector<AbstractModelStreamEncoder*> encoderList(AbstractModel* model, const AbstractModelSelection* selection) const;
0050     QVector<AbstractModelStreamDecoder*> decoderList() const;
0051     QVector<AbstractModelDataGenerator*> generatorList() const;
0052 
0053     QVector<AbstractModelExporter*> exporterList(AbstractModel* model, const AbstractModelSelection* selection) const;
0054 
0055 public:
0056     void setEncoders(const QVector<AbstractModelStreamEncoder*>& encoderList);
0057     void setDecoders(const QVector<AbstractModelStreamDecoder*>& decoderList);
0058     void setGenerators(const QVector<AbstractModelDataGenerator*>& generatorList);
0059     void setOverwriteDialog(AbstractOverwriteDialog* overwriteDialog);
0060 
0061 private:
0062     const std::unique_ptr<class ModelCodecManagerPrivate> d_ptr;
0063     Q_DECLARE_PRIVATE(ModelCodecManager)
0064 };
0065 
0066 }
0067 
0068 #endif