ImagingTools Core SDK
CQmlCodeRequestGeneratorComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5//Qt includes
6#include <QtCore/QFile>
7
8// ACF includes
9#include <QtCore/qstring.h>
10#include <istd/TDelPtr.h>
11#include <iproc/TSyncProcessorCompBase.h>
12#include <ifile/IFilePersistence.h>
13
14// ImtCore includes
15#include <imtsdl/ISdlProcessArgumentsParser.h>
16#include <imtsdl/ISdlTypeListProvider.h>
17#include <imtsdl/ISdlDocumentTypeListProvider.h>
18#include <imtsdl/CSdlTools.h>
19#include <imtsdl/ISdlRequestListProvider.h>
20
21
22namespace imtsdlgenqml
23{
24
25
26
27class CQmlCodeRequestGeneratorComp:
28 public iproc::CSyncProcessorCompBase,
29 private imtsdl::CSdlTools
30{
31
32public:
33 typedef iproc::CSyncProcessorCompBase BaseClass;
34
35 I_BEGIN_COMPONENT(CQmlCodeRequestGeneratorComp)
36 I_ASSIGN(m_argumentParserCompPtr, "ArgumentParser", "Command line process argument parser", true, "ArgumentParser")
37 I_ASSIGN(m_sdlTypeListCompPtr, "SdlTypeListProvider", "SDL types used to create a code", true, "SdlTypeListProvider")
38 I_ASSIGN(m_sdlDocumentListCompPtr, "SdlDocumentListProvider", "SDL documents used to create a GraphQL wrap code", true, "SdlDocumentListProvider")
39 I_ASSIGN(m_qmldirFilePersistanceCompPtr, "QmldirFilePersistance", "Qmldir file persistance, used to update qmldir file with new modules", true, "QmldirFilePersistance")
40 I_ASSIGN(m_customSchemaParamsCompPtr, "CustomSchemaParams", "Custom schema parameters, that contains additional options", false, "CustomSchemaParams")
41 I_ASSIGN(m_sdlRequestListCompPtr, "SdlRequestListProvider", "SDL requests used to create a GraphQL wrap code", true, "SdlRequestListProvider")
42 I_END_COMPONENT
43
44 //reimplemented(iproc::IProcessor)
45 virtual iproc::IProcessor::TaskState DoProcessing(
46 const iprm::IParamsSet* paramsPtr,
47 const istd::IPolymorphic* inputPtr,
48 istd::IChangeable* outputPtr,
49 ibase::IProgressManager* progressManagerPtr = NULL) override;
50
51private:
53 struct QmldirFileInfo
54 {
55 bool IsSingleton = false;
56 QString Type;
57 QString Version;
58 QString FileName;
59 };
60 static bool UpdateQmldirParams(iprm::IParamsSet& qmldirDataParams, const QList<QmldirFileInfo>& infoList);
61 QString GetQmlImportDeclarationByField(const imtsdl::CSdlField& sdlField) const;
62
63private:
64 I_REF(imtsdl::ISdlProcessArgumentsParser, m_argumentParserCompPtr);
65 I_REF(imtsdl::ISdlTypeListProvider, m_sdlTypeListCompPtr);
66 I_REF(imtsdl::ISdlDocumentTypeListProvider, m_sdlDocumentListCompPtr);
67 I_REF(ifile::IFilePersistence, m_qmldirFilePersistanceCompPtr);
68 I_REF(iprm::IParamsSet, m_customSchemaParamsCompPtr);
69 I_REF(imtsdl::ISdlRequestListProvider, m_sdlRequestListCompPtr);
70};
71
72
73} // namespace imtsdlgenqml
74