AusweisApp2
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{
27 Q_OBJECT
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 inline void setMetaDataProperties(UIPlugIn* pUi, const QJsonObject& pJson);
45
46#ifndef QT_NO_DEBUG
47
48 public:
49#endif
50 UILoader();
51 ~UILoader() override;
52
53 [[nodiscard]] bool load(const QString& pName);
54 void preparePlugIn(UIPlugIn* pUi, const QJsonObject& pMetaData);
55
56 public:
57 // do not make this non-static as the CommandLineParser spawns
58 // this object on startup. Since this is a QObject this should be avoided.
59 [[nodiscard]] static QString getDefault();
60 static void setUserRequest(const QStringList& pRequest);
61
62 [[nodiscard]] bool initialize() const;
63 [[nodiscard]] bool hasActiveUI() const;
64 [[nodiscard]] bool requiresReaderManager() const;
65 [[nodiscard]] bool isLoaded() const;
66 [[nodiscard]] bool load();
67
68 template<typename T>
69 [[nodiscard]] std::enable_if_t<std::is_base_of_v<UIPlugIn, T>, bool> load()
70 {
71 return load(getName(&T::staticMetaObject));
72 }
73
74
75 template<typename T>
76 [[nodiscard]] std::enable_if_t<std::is_base_of_v<UIPlugIn, T>, T*> getLoaded() const
77 {
78 return qobject_cast<T*>(mLoadedPlugIns.value(getName(&T::staticMetaObject)));
79 }
80
81
82 Q_INVOKABLE void shutdown();
83
84 Q_SIGNALS:
85 void fireLoadedPlugin(UIPlugIn* pPlugin);
87};
88
89} // namespace governikus
Definition Env.h:46
Definition UILoader.h:26
bool isLoaded() const
Definition UILoader.cpp:81
bool hasActiveUI() const
Definition UILoader.cpp:64
void fireLoadedPlugin(UIPlugIn *pPlugin)
~UILoader() override
Definition UILoader.cpp:27
void preparePlugIn(UIPlugIn *pUi, const QJsonObject &pMetaData)
Definition UILoader.cpp:141
std::enable_if_t< std::is_base_of_v< UIPlugIn, T >, T * > getLoaded() const
Definition UILoader.h:76
bool requiresReaderManager() const
Definition UILoader.cpp:72
Q_INVOKABLE void shutdown()
Definition UILoader.cpp:194
bool load()
Definition UILoader.cpp:87
UILoader()
Definition UILoader.cpp:21
std::enable_if_t< std::is_base_of_v< UIPlugIn, T >, bool > load()
Definition UILoader.h:69
static QString getDefault()
Definition UILoader.cpp:172
bool initialize() const
Definition UILoader.cpp:56
static void setUserRequest(const QStringList &pRequest)
Definition UILoader.cpp:182
#define T(v)
Definition http_parser.cpp:237
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:16