AusweisApp
Lade ...
Suche ...
Keine Treffer
WorkflowModel.h
gehe zur Dokumentation dieser Datei
1
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(QString statusHintText READ getStatusHintText NOTIFY fireResultChanged)
53 Q_PROPERTY(QString statusHintTitle READ getStatusHintTitle NOTIFY fireResultChanged)
54 Q_PROPERTY(QString statusHintActionText READ getStatusHintActionText NOTIFY fireResultChanged)
55 Q_PROPERTY(governikus::EnumGAnimation::GAnimation statusCodeAnimation READ getStatusCodeAnimation NOTIFY fireResultChanged)
56 Q_PROPERTY(bool showRemoveCardFeedback READ showRemoveCardFeedback WRITE setRemoveCardFeedback NOTIFY fireRemoveCardFeedbackChanged)
57 Q_PROPERTY(bool cardInitiallyAppeared READ getCardInitiallyAppeared NOTIFY fireHasCardChanged)
58 Q_PROPERTY(bool hasCard READ hasCard NOTIFY fireHasCardChanged)
59 Q_PROPERTY(governikus::EnumCardReturnCode::CardReturnCode lastReturnCode READ getLastReturnCode NOTIFY fireLastReturnCodeChanged)
60 friend class ::test_WorkflowModel;
61
62 private:
63 QSharedPointer<WorkflowContext> mContext;
64#if defined(Q_OS_IOS)
65 bool mRemoteScanWasRunning;
66#endif
67 void insertCard(ReaderManagerPluginType pType) const;
68
69 protected:
70 WorkflowModel();
71 ~WorkflowModel() override = default;
72
73 public:
74 void resetWorkflowContext(const QSharedPointer<WorkflowContext>& pContext = QSharedPointer<WorkflowContext>());
75
76 [[nodiscard]] QString getCurrentState() const;
77 [[nodiscard]] virtual QString getResultString() const;
78 [[nodiscard]] bool isError() const;
79 [[nodiscard]] bool isMaskedError() const;
80 [[nodiscard]] bool isPukInoperative() const;
81 [[nodiscard]] CardReturnCode getLastReturnCode() const;
82
83 [[nodiscard]] ReaderManagerPluginType getReaderPluginType() const;
84 void setReaderPluginType(ReaderManagerPluginType pReaderPluginType);
85
86 [[nodiscard]] bool isBasicReader() const;
87 [[nodiscard]] bool isRemoteReader() const;
88 [[nodiscard]] bool getCardInitiallyAppeared() const;
89 [[nodiscard]] bool hasCard() const;
90
91 [[nodiscard]] bool isCurrentSmartCardAllowed() const;
92
93 [[nodiscard]] virtual QList<ReaderManagerPluginType> getSupportedReaderPluginTypes() const;
94
95 [[nodiscard]] bool getNextWorkflowPending() const;
96
97 [[nodiscard]] GlobalStatus::Code getStatusCode() const;
98 [[nodiscard]] virtual GAnimation getStatusCodeAnimation() const;
99
100 [[nodiscard]] QString getStatusHintText() const;
101 [[nodiscard]] QString getStatusHintTitle() const;
102 [[nodiscard]] QString getStatusHintActionText() const;
103 [[nodiscard]] Q_INVOKABLE bool invokeStatusHintAction();
104
105 [[nodiscard]] bool showRemoveCardFeedback() const;
106 void setRemoveCardFeedback(bool pEnabled);
107
108 Q_INVOKABLE void insertSmartCard() const;
109 Q_INVOKABLE void insertSimulator() const;
110 Q_INVOKABLE void cancelWorkflow();
111 Q_INVOKABLE void startScanExplicitly();
112 Q_INVOKABLE void continueWorkflow();
113 Q_INVOKABLE void setInitialPluginType();
114 [[nodiscard]] Q_INVOKABLE bool shouldSkipResultView() const;
115 [[nodiscard]] Q_INVOKABLE bool isCancellationByUser() const;
116 [[nodiscard]] Q_INVOKABLE QString getEmailHeader() const;
117 [[nodiscard]] Q_INVOKABLE QString getEmailBody(bool pPercentEncoding = false, bool pAddLogNotice = false) const;
118 Q_INVOKABLE void sendResultMail() const;
119
120 [[nodiscard]] QString eidTypeMismatchError() const;
121
122 private Q_SLOTS:
123 void onApplicationStateChanged(bool pIsAppInForeground);
124 void onPaceResultUpdated();
125
126 Q_SIGNALS:
127 void fireWorkflowStarted();
128 void fireCurrentStateChanged(const QString& pState);
129 void fireStateEntered(const QString& pState);
130 void fireResultChanged();
131 void fireReaderPluginTypeChanged(bool pExplicitStart = false);
132 void fireSelectedReaderChanged();
133 void fireIsCurrentSmartCardAllowedChanged();
134 void fireReaderImageChanged();
135 void fireNextWorkflowPendingChanged();
136 void fireSupportedPluginTypesChanged();
137 void fireRemoveCardFeedbackChanged();
138 void fireHasCardChanged();
139 void fireEidTypeMismatchErrorChanged();
140 void fireShowUiRequest(UiModule pModule);
141 void fireWorkflowFinished(bool pSuccess);
142 void fireOnPinUnlocked();
143 void fireOnPasswordUsed();
144 void fireOnCanSuccess();
145 void fireLastReturnCodeChanged();
146};
147
148
149} // namespace governikus
#define defineEnumTypeQmlExposed(enumName,...)
Definition EnumHelper.h:88
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17