AusweisApp
Lade ...
Suche ...
Keine Treffer
UiLoader.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
7#include "Env.h"
8#include "UiPlugin.h"
9
10#include <QJsonObject>
11#include <QMap>
12#include <QStringList>
13
14
15class test_UiLoader;
16
17namespace governikus
18{
19
21 : public QObject
22{
23 Q_OBJECT
24 friend class Env;
25 friend class ::test_UiLoader;
26
27 private:
28 static QStringList cUserRequest;
29 QMap<QString, UiPlugin*> mLoadedPlugins;
30
31 [[nodiscard]] static QStringList getInitialDefault();
32 [[nodiscard]] static QString unify(const QString& pName);
33 [[nodiscard]] static QString getName(const QMetaObject* pMeta);
34 [[nodiscard]] static QString getName(const QJsonObject& pJson);
35 [[nodiscard]] static QJsonObject getMetaDataFileContent(const QJsonObject& pJson);
36 [[nodiscard]] static inline bool isDefault(const QJsonObject& pJson);
37 [[nodiscard]] static inline bool isUserInteractive(const QJsonObject& pJson);
38 [[nodiscard]] static QStringList getUserRequestOrDefault();
39 [[nodiscard]] static inline bool isPlugin(const QJsonObject& pJson);
40 static void setEnvironment(const QJsonObject& pJson);
41 static inline void setMetaDataProperties(UiPlugin* pUi, const QJsonObject& pJson);
42
43#ifndef QT_NO_DEBUG
44
45 public:
46#endif
47 UiLoader();
48 ~UiLoader() override;
49
50 [[nodiscard]] bool load(const QString& pName);
51 void preparePlugin(UiPlugin* pUi, const QJsonObject& pMetaData);
52
53 public:
54 // do not make this non-static as the CommandLineParser spawns
55 // this object on startup. Since this is a QObject this should be avoided.
56 [[nodiscard]] static QString getDefault();
57 static void setUserRequest(const QStringList& pRequest);
58
59 [[nodiscard]] bool initialize() const;
60 [[nodiscard]] bool hasActiveUI() const;
61 [[nodiscard]] bool requiresReaderManager() const;
62 [[nodiscard]] bool isLoaded() const;
63 [[nodiscard]] bool load();
64
65 template<typename T>
66 [[nodiscard]] std::enable_if_t<std::is_base_of_v<UiPlugin, T>, bool> load()
67 {
68 return load(getName(&T::staticMetaObject));
69 }
70
71
72 template<typename T>
73 [[nodiscard]] std::enable_if_t<std::is_base_of_v<UiPlugin, T>, T*> getLoaded() const
74 {
75 return qobject_cast<T*>(mLoadedPlugins.value(getName(&T::staticMetaObject)));
76 }
77
78
79 Q_INVOKABLE void shutdown();
80
81 Q_SIGNALS:
82 void fireLoadedPlugin(UiPlugin* pPlugin);
84};
85
86} // namespace governikus
Definition Env.h:40
Definition UiLoader.h:22
static void setUserRequest(const QStringList &pRequest)
Definition UiLoader.cpp:183
void fireLoadedPlugin(UiPlugin *pPlugin)
bool requiresReaderManager() const
Definition UiLoader.cpp:72
std::enable_if_t< std::is_base_of_v< UiPlugin, T >, bool > load()
Definition UiLoader.h:66
Q_INVOKABLE void shutdown()
Definition UiLoader.cpp:195
static QString getDefault()
Definition UiLoader.cpp:173
UiLoader()
Definition UiLoader.cpp:21
~UiLoader() override
Definition UiLoader.cpp:27
bool initialize() const
Definition UiLoader.cpp:56
bool isLoaded() const
Definition UiLoader.cpp:81
void preparePlugin(UiPlugin *pUi, const QJsonObject &pMetaData)
Definition UiLoader.cpp:142
std::enable_if_t< std::is_base_of_v< UiPlugin, T >, T * > getLoaded() const
Definition UiLoader.h:73
bool load()
Definition UiLoader.cpp:87
bool hasActiveUI() const
Definition UiLoader.cpp:64
#define T(v)
Definition http_parser.cpp:237
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17