1 /*
2     This file is part of the Okteta KPart module, made within the KDE community.
3 
4     SPDX-FileCopyrightText: 2003, 2007, 2009, 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8 
9 #include "partfactory.hpp"
10 
11 // part
12 #include "part.hpp"
13 // Okteta Kasten
14 #include <Kasten/Okteta/ByteArrayViewProfileManager>
15 #include <Kasten/Okteta/ByteArrayStreamEncoderConfigEditorFactoryFactory>
16 #include <Kasten/Okteta/ByteArrayDataGeneratorConfigEditorFactoryFactory>
17 #include <Kasten/Okteta/ByteArrayStreamEncoderFactory>
18 #include <Kasten/Okteta/ByteArrayDataGeneratorFactory>
19 // Kasten
20 #include <Kasten/ModelCodecViewManager>
21 #include <Kasten/ModelCodecManager>
22 // KF
23 #if KPARTS_VERSION >= QT_VERSION_CHECK(5, 77, 0)
24 #include <KPluginMetaData>
25 #endif
26 #include <KLocalizedString>
27 
OktetaPartFactory()28 OktetaPartFactory::OktetaPartFactory()
29 #if KPARTS_VERSION >= QT_VERSION_CHECK(5, 77, 0)
30 {
31 #else
32     : mAboutData(QStringLiteral("oktetapart"),
33                  i18n("OktetaPart"),
34                  QStringLiteral(OKTETA_VERSION),
35                  i18n("Embedded hex editor"),
36                  KAboutLicense::LGPL_V2_1,
37                  i18n("Copyright 2003-%1 Friedrich W. H. Kossebau", QStringLiteral("2021")))
38 {
39     mAboutData.addAuthor(i18n("Friedrich W. H. Kossebau"), i18n("Author"), QStringLiteral("kossebau@kde.org"));
40 #endif
41     mByteArrayViewProfileManager = new Kasten::ByteArrayViewProfileManager();
42 
43     mModelCodecViewManager = new Kasten::ModelCodecViewManager();
44     mModelCodecManager = new Kasten::ModelCodecManager();
45 
46     const QVector<Kasten::AbstractModelStreamEncoder*> encoderList =
47         Kasten::ByteArrayStreamEncoderFactory::createStreamEncoders();
48 
49     const QVector<Kasten::AbstractModelDataGenerator*> generatorList =
50         Kasten::ByteArrayDataGeneratorFactory::createDataGenerators();
51 
52     const QVector<Kasten::AbstractModelStreamEncoderConfigEditorFactory*> encoderConfigEditorFactoryList =
53         Kasten::ByteArrayStreamEncoderConfigEditorFactoryFactory::createFactorys();
54 
55     const QVector<Kasten::AbstractModelDataGeneratorConfigEditorFactory*> generatorConfigEditorFactoryList =
56         Kasten::ByteArrayDataGeneratorConfigEditorFactoryFactory::createFactorys();
57 
58     mModelCodecManager->setEncoders( encoderList );
59     mModelCodecManager->setGenerators( generatorList );
60 
61     mModelCodecViewManager->setEncoderConfigEditorFactories(encoderConfigEditorFactoryList);
62     mModelCodecViewManager->setGeneratorConfigEditorFactories(generatorConfigEditorFactoryList);
63 }
64 
65 OktetaPartFactory::~OktetaPartFactory()
66 {
67     delete mByteArrayViewProfileManager;
68     delete mModelCodecViewManager;
69     delete mModelCodecManager;
70 }
71 
72 QObject* OktetaPartFactory::create(const char* iface,
73                                    QWidget* parentWidget,
74                                    QObject* parent,
75                                    const QVariantList& args,
76                                    const QString& keyword)
77 {
78     Q_UNUSED(parentWidget)
79     Q_UNUSED(keyword);
80 
81     const OktetaPart::Modus modus =
82         (args.contains(QStringLiteral("Browser/View")) ||
83          (strcmp(iface, "Browser/View") == 0)) ?       OktetaPart::Modus::BrowserView :
84         (strcmp(iface, "KParts::ReadOnlyPart") == 0) ? OktetaPart::Modus::ReadOnly :
85         /* else */                                     OktetaPart::Modus::ReadWrite;
86 
87 #if KPARTS_VERSION >= QT_VERSION_CHECK(5, 77, 0)
88     auto* part = new OktetaPart(parent, metaData(), modus, mByteArrayViewProfileManager, mModelCodecManager, mModelCodecViewManager);
89 #else
90     auto* part = new OktetaPart(parent, mAboutData, modus, mByteArrayViewProfileManager, mModelCodecManager, mModelCodecViewManager);
91 #endif
92 
93     return part;
94 }
95