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