AusweisApp2
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 
17 class test_UILoader;
18 
19 namespace governikus
20 {
21 
22 class UILoader
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
std::enable_if_t< std::is_base_of_v< UIPlugIn, T >, T * > getLoaded() const
Definition: UILoader.h:74
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 >, bool > load()
Definition: UILoader.h:67
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
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