AusweisApp
 
Lade ...
Suche ...
Keine Treffer
WorkflowModel.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
7#include "CardReturnCode.h"
9#include "UiPlugin.h"
11
12#include <QObject>
13#include <QSharedPointer>
14#include <QString>
15
16class test_WorkflowModel;
17
18namespace governikus
19{
20
22 NONE,
23 PIN_ERROR,
24 CAN_ERROR,
25 PUK_ERROR,
26 PUK_BLOCKED,
27 CARD_ERROR,
28 NETWORK_ERROR,
29 CHANGEPIN_SUCCESS,
30 STATUS_OK,
31 STATUS_ERROR
32 )
33
34class WorkflowModel
35 : public QObject
36{
37 Q_OBJECT
38 friend class Env;
39
40 Q_PROPERTY(QString currentState READ getCurrentState NOTIFY fireCurrentStateChanged)
41 Q_PROPERTY(QString resultString READ getResultString NOTIFY fireResultChanged)
42 Q_PROPERTY(bool error READ isError NOTIFY fireResultChanged)
43 Q_PROPERTY(bool errorIsMasked READ isMaskedError NOTIFY fireResultChanged)
44 Q_PROPERTY(bool pukInoperative READ isPukInoperative NOTIFY fireResultChanged)
45 Q_PROPERTY(governikus::EnumReaderManagerPluginType::ReaderManagerPluginType readerPluginType READ getReaderPluginType WRITE setReaderPluginType NOTIFY fireReaderPluginTypeChanged)
46 Q_PROPERTY(QList<ReaderManagerPluginType> supportedPluginTypes READ getSupportedReaderPluginTypes NOTIFY fireSupportedPluginTypesChanged)
47 Q_PROPERTY(bool isBasicReader READ isBasicReader NOTIFY fireSelectedReaderChanged)
48 Q_PROPERTY(bool isRemoteReader READ isRemoteReader NOTIFY fireSelectedReaderChanged)
49 Q_PROPERTY(bool isCurrentSmartCardAllowed READ isCurrentSmartCardAllowed NOTIFY fireIsCurrentSmartCardAllowedChanged)
50 Q_PROPERTY(QString eidTypeMismatchError READ eidTypeMismatchError NOTIFY fireEidTypeMismatchErrorChanged)
51 Q_PROPERTY(bool hasNextWorkflowPending READ getNextWorkflowPending NOTIFY fireNextWorkflowPendingChanged)
52 Q_PROPERTY(governikus::EnumGlobalStatusCode::GlobalStatusCode statusCode READ getStatusCode NOTIFY fireResultChanged)
53 Q_PROPERTY(QString statusCodeDisplayString READ getStatusCodeDisplayString NOTIFY fireResultChanged)
54 Q_PROPERTY(QString statusHintText READ getStatusHintText NOTIFY fireResultChanged)
55 Q_PROPERTY(QString statusHintTitle READ getStatusHintTitle NOTIFY fireResultChanged)
56 Q_PROPERTY(QString statusHintActionText READ getStatusHintActionText NOTIFY fireResultChanged)
57 Q_PROPERTY(governikus::EnumGAnimation::GAnimation statusCodeAnimation READ getStatusCodeAnimation NOTIFY fireResultChanged)
58 Q_PROPERTY(bool showRemoveCardFeedback READ showRemoveCardFeedback WRITE setRemoveCardFeedback NOTIFY fireRemoveCardFeedbackChanged)
59 Q_PROPERTY(bool cardInitiallyAppeared READ getCardInitiallyAppeared NOTIFY fireHasCardChanged)
60 Q_PROPERTY(bool hasCard READ hasCard NOTIFY fireHasCardChanged)
61 Q_PROPERTY(governikus::EnumCardReturnCode::CardReturnCode lastReturnCode READ getLastReturnCode NOTIFY fireLastReturnCodeChanged)
62 friend class ::test_WorkflowModel;
63
64 private:
65 QSharedPointer<WorkflowContext> mContext;
66#if defined(Q_OS_IOS)
67 bool mRemoteScanWasRunning;
68#endif
69 void insertCard(ReaderManagerPluginType pType) const;
70
71 protected:
72 WorkflowModel();
73 ~WorkflowModel() override = default;
74
75 public:
76 void resetWorkflowContext(const QSharedPointer<WorkflowContext>& pContext = QSharedPointer<WorkflowContext>());
77
78 [[nodiscard]] QString getCurrentState() const;
79 [[nodiscard]] virtual QString getResultString() const;
80 [[nodiscard]] bool isError() const;
81 [[nodiscard]] bool isMaskedError() const;
82 [[nodiscard]] bool isPukInoperative() const;
83 [[nodiscard]] CardReturnCode getLastReturnCode() const;
84
85 [[nodiscard]] ReaderManagerPluginType getReaderPluginType() const;
86 void setReaderPluginType(ReaderManagerPluginType pReaderPluginType);
87
88 [[nodiscard]] bool isBasicReader() const;
89 [[nodiscard]] bool isRemoteReader() const;
90 [[nodiscard]] bool getCardInitiallyAppeared() const;
91 [[nodiscard]] bool hasCard() const;
92
93 [[nodiscard]] bool isCurrentSmartCardAllowed() const;
94
95 [[nodiscard]] virtual QList<ReaderManagerPluginType> getSupportedReaderPluginTypes() const;
96
97 [[nodiscard]] bool getNextWorkflowPending() const;
98
99 [[nodiscard]] GlobalStatus::Code getStatusCode() const;
100 [[nodiscard]] QString getStatusCodeDisplayString() const;
101 [[nodiscard]] virtual GAnimation getStatusCodeAnimation() const;
102
103 [[nodiscard]] QString getStatusHintText() const;
104 [[nodiscard]] QString getStatusHintTitle() const;
105 [[nodiscard]] QString getStatusHintActionText() const;
106 [[nodiscard]] Q_INVOKABLE bool invokeStatusHintAction();
107
108 [[nodiscard]] bool showRemoveCardFeedback() const;
109 void setRemoveCardFeedback(bool pEnabled);
110
111 Q_INVOKABLE void insertSmartCard() const;
112 Q_INVOKABLE void insertSimulator() const;
113 Q_INVOKABLE void cancelWorkflow();
114 Q_INVOKABLE void startScanExplicitly();
115 Q_INVOKABLE void continueWorkflow();
116 Q_INVOKABLE void setInitialPluginType();
117 [[nodiscard]] Q_INVOKABLE bool shouldSkipResultView() const;
118 [[nodiscard]] Q_INVOKABLE bool isCancellationByUser() const;
119 [[nodiscard]] Q_INVOKABLE QString getEmailHeader() const;
120 [[nodiscard]] Q_INVOKABLE QString getEmailBody(bool pPercentEncoding = false, bool pAddLogNotice = false) const;
121 Q_INVOKABLE void sendResultMail() const;
122
123 [[nodiscard]] QString eidTypeMismatchError() const;
124
125 private Q_SLOTS:
126 void onApplicationStateChanged(bool pIsAppInForeground);
127 void onPaceResultUpdated();
128
129 Q_SIGNALS:
130 void fireWorkflowStarted();
131 void fireCurrentStateChanged(const QString& pState);
132 void fireStateEntered(const QString& pState);
133 void fireResultChanged();
134 void fireReaderPluginTypeChanged(bool pExplicitStart = false);
135 void fireSelectedReaderChanged();
136 void fireIsCurrentSmartCardAllowedChanged();
137 void fireReaderImageChanged();
138 void fireNextWorkflowPendingChanged();
139 void fireSupportedPluginTypesChanged();
140 void fireRemoveCardFeedbackChanged();
141 void fireHasCardChanged();
142 void fireEidTypeMismatchErrorChanged();
143 void fireShowUiRequest(UiModule pModule);
144 void fireWorkflowFinished(bool pSuccess);
145 void fireOnPinUnlocked();
146 void fireOnPasswordUsed();
147 void fireOnCanSuccess();
148 void fireLastReturnCodeChanged();
149};
150
151
152} // namespace governikus
#define defineEnumTypeQmlExposed(enumName,...)
Definition EnumHelper.h:88
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17