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