AusweisApp2
ApplicationModel.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
10 #include "Env.h"
11 #include "ReaderInfo.h"
13 #include "WifiInfo.h"
14 
15 #include <QObject>
16 #include <QQmlEngine>
17 #include <QSharedPointer>
18 #include <QStringList>
19 #include <QTimer>
20 
21 #ifdef Q_OS_IOS
22 Q_FORWARD_DECLARE_OBJC_CLASS(VoiceOverObserver);
23 #endif
24 
25 namespace governikus
26 {
27 
29  : public QObject
30 {
31  Q_OBJECT
32  friend class Env;
33 
34  Q_PROPERTY(QString storeUrl READ getStoreUrl NOTIFY fireStoreUrlChanged)
35  Q_PROPERTY(QUrl releaseNotesUrl READ getReleaseNotesUrl CONSTANT)
36 
37  Q_PROPERTY(QmlNfcState nfcState READ getNfcState NOTIFY fireNfcStateChanged)
39 
40  Q_PROPERTY(qreal scaleFactor READ getScaleFactor WRITE setScaleFactor NOTIFY fireScaleFactorChanged)
41  Q_PROPERTY(bool wifiEnabled READ isWifiEnabled NOTIFY fireWifiEnabledChanged)
42 
43  Q_PROPERTY(QString currentWorkflow READ getCurrentWorkflow NOTIFY fireCurrentWorkflowChanged)
45 
46  Q_PROPERTY(QString feedback READ getFeedback NOTIFY fireFeedbackChanged)
47 
48  QSharedPointer<WorkflowContext> mContext;
49 
51  ~ApplicationModel() override = default;
52  void onStatusChanged(const ReaderManagerPlugInInfo& pInfo);
53  ReaderManagerPlugInInfo getFirstPlugInInfo(ReaderManagerPlugInType pType) const;
54 
55  private:
56  constexpr static qreal DEFAULT_SCALE_FACTOR = 0.6;
57  qreal mScaleFactor;
58  WifiInfo mWifiInfo;
59  bool mWifiEnabled;
60  QStringList mFeedback;
61  QTimer mFeedbackTimer;
62  const int mFeedbackDisplayLength;
63 #ifdef Q_OS_IOS
64  struct Private
65  {
66  Private();
67  ~Private();
68  VoiceOverObserver* const mObserver;
69  };
70  const QScopedPointer<Private> mPrivate;
71 #endif
72 
73  private Q_SLOTS:
74  void onWifiEnabledChanged();
75 
76  public:
77  enum class Settings
78  {
83  };
84  Q_ENUM(Settings)
85 
86  enum class QmlNfcState
87  {
88  NFC_UNAVAILABLE,
89  NFC_DISABLED,
90  NFC_INACTIVE,
91  NFC_READY
92  };
93  Q_ENUM(QmlNfcState)
94 
95  void resetContext(const QSharedPointer<WorkflowContext>& pContext = QSharedPointer<WorkflowContext>());
96 
97  QString getStoreUrl() const;
98  QUrl getReleaseNotesUrl() const;
99 
100  QmlNfcState getNfcState() const;
102 
103  bool isWifiEnabled() const;
104  qreal getScaleFactor() const;
105  void setScaleFactor(qreal pScaleFactor);
106 
107  QString getCurrentWorkflow() const;
108  int getAvailableReader() const;
109 
110  QString getFeedback() const;
111 
112  Q_INVOKABLE bool isScreenReaderRunning() const;
113 
114  Q_INVOKABLE bool isReaderTypeAvailable(ReaderManagerPlugInType pPlugInType) const;
115 
116  Q_INVOKABLE void enableWifi();
117 
118  Q_INVOKABLE void showSettings(const Settings& pAction);
119  Q_INVOKABLE void showFeedback(const QString& pMessage, bool pReplaceExisting = false);
120  Q_INVOKABLE void keepScreenOn(bool pActive);
121  Q_INVOKABLE QStringList getLicenseText() const;
122 #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
123  Q_INVOKABLE QString onlineHelpUrl(const QString& pHelpSectionName);
124  Q_INVOKABLE void openOnlineHelp(const QString& pHelpSectionName);
125 #endif
126  Q_INVOKABLE QString stripHtmlTags(QString pString) const;
127 #ifdef Q_OS_IOS
128  Q_INVOKABLE void showAppStoreRatingDialog();
129 #endif
130 
131  public Q_SLOTS:
132  Q_INVOKABLE void onShowNextFeedback();
133 
134  Q_SIGNALS:
136 
139 
142 
145  void fireCertificateRemoved(const QString& pDeviceName);
146 
148 };
149 
150 
151 } // namespace governikus
Q_FORWARD_DECLARE_OBJC_CLASS(IosReaderDelegate)
Implementation of Reader for iOS.
Definition: ApplicationModel.h:30
QString currentWorkflow
Definition: ApplicationModel.h:43
Q_INVOKABLE void showFeedback(const QString &pMessage, bool pReplaceExisting=false)
Definition: ApplicationModel.cpp:296
Q_INVOKABLE void openOnlineHelp(const QString &pHelpSectionName)
Definition: ApplicationModel.cpp:404
QString storeUrl
Definition: ApplicationModel.h:34
Q_INVOKABLE QStringList getLicenseText() const
Definition: ApplicationModel.cpp:371
qreal getScaleFactor() const
Definition: ApplicationModel.cpp:198
bool isWifiEnabled() const
Definition: ApplicationModel.cpp:192
Q_INVOKABLE QString stripHtmlTags(QString pString) const
Definition: ApplicationModel.cpp:428
Q_INVOKABLE bool isReaderTypeAvailable(ReaderManagerPlugInType pPlugInType) const
Definition: ApplicationModel.cpp:245
Settings
Definition: ApplicationModel.h:78
QString feedback
Definition: ApplicationModel.h:46
qreal scaleFactor
Definition: ApplicationModel.h:40
QmlNfcState
Definition: ApplicationModel.h:87
QmlNfcState nfcState
Definition: ApplicationModel.h:37
Q_INVOKABLE void keepScreenOn(bool pActive)
Definition: ApplicationModel.cpp:349
bool wifiEnabled
Definition: ApplicationModel.h:41
void resetContext(const QSharedPointer< WorkflowContext > &pContext=QSharedPointer< WorkflowContext >())
Definition: ApplicationModel.cpp:83
QUrl getReleaseNotesUrl() const
Definition: ApplicationModel.cpp:122
QUrl releaseNotesUrl
Definition: ApplicationModel.h:35
Q_INVOKABLE void enableWifi()
Definition: ApplicationModel.cpp:420
Q_INVOKABLE QString onlineHelpUrl(const QString &pHelpSectionName)
Definition: ApplicationModel.cpp:398
int availableReader
Definition: ApplicationModel.h:44
Q_INVOKABLE void showSettings(const Settings &pAction)
Definition: ApplicationModel_android.cpp:40
Q_INVOKABLE void onShowNextFeedback()
Definition: ApplicationModel.cpp:284
int getAvailableReader() const
Definition: ApplicationModel.cpp:234
bool isExtendedLengthApdusUnsupported() const
Definition: ApplicationModel.cpp:173
bool extendedLengthApdusUnsupported
Definition: ApplicationModel.h:38
void setScaleFactor(qreal pScaleFactor)
Definition: ApplicationModel.cpp:204
QmlNfcState getNfcState() const
Definition: ApplicationModel.cpp:144
void fireCertificateRemoved(const QString &pDeviceName)
QString getStoreUrl() const
Definition: ApplicationModel.cpp:101
Q_INVOKABLE bool isScreenReaderRunning() const
Definition: ApplicationModel.cpp:262
QString getCurrentWorkflow() const
Definition: ApplicationModel.cpp:216
QString getFeedback() const
Definition: ApplicationModel.cpp:278
Definition: Env.h:44
Definition: WifiInfo.h:20
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15