AusweisApp2
GlobalStatus.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "EnumHelper.h"
10 
11 #include <QCoreApplication>
12 #include <QMap>
13 #include <QPair>
14 #include <QSharedData>
15 
16 namespace governikus
17 {
18 
20 {
21  Q_GADGET
22  Q_DECLARE_TR_FUNCTIONS(governikus::GlobalStatus)
23 
24  public:
25  enum class Code
26  {
28  No_Error,
29 
35 
41 
43 
83 
85 
87 
94 
110 
112 
118  };
119 
120  enum class Origin
121  {
122  Server, Client
123  };
124 
126  {
128  LAST_URL,
130  REDIRECT_URL,
132  URL_SCHEME,
134  };
135 
136  using ExternalInfoMap = QMap<ExternalInformation, QString>;
137 
138  Q_ENUM(Code)
139  Q_ENUM(Origin)
140  Q_ENUM(ExternalInformation)
141 
142  private:
143  class InternalStatus
144  : public QSharedData
145  {
146  public:
147  const Code mStatusCode;
148  const ExternalInfoMap mExternalInformation;
149  const Origin mOrigin;
150 
151  InternalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin)
152  : mStatusCode(pStatusCode)
153  , mExternalInformation(pExternalInformation)
154  , mOrigin(pOrigin)
155  {
156  }
157 
158 
159  InternalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin)
160  : mStatusCode(pStatusCode)
161  , mExternalInformation({
162  {pExternalInformation.first, pExternalInformation.second}
163  })
164  , mOrigin(pOrigin)
165  {
166  }
167 
168 
169  bool operator ==(const InternalStatus& pOther) const
170  {
171  return mStatusCode == pOther.mStatusCode &&
172  mExternalInformation == pOther.mExternalInformation &&
173  mOrigin == pOther.mOrigin;
174  }
175 
176 
177  };
178 
179  QSharedDataPointer<InternalStatus> d;
180  [[nodiscard]] QString getExternalInfo(ExternalInformation pType) const;
181 
182  [[nodiscard]] QString toErrorDescriptionInternal() const;
183 
184  public:
185  GlobalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin = Origin::Client)
186  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
187  {
188  }
189 
190 
191  GlobalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin = Origin::Client)
192  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
193  {
194  }
195 
196 
198  : d(new InternalStatus(pStatusCode, ExternalInfoMap(), pOrigin))
199  {
200  }
201 
202 
203  bool operator ==(const GlobalStatus& pOther) const;
204  [[nodiscard]] bool is(const Code pStatusCode) const;
205 
206  [[nodiscard]] Code getStatusCode() const;
207 
208  [[nodiscard]] QString toErrorDescription(const bool pSimplifiedVersion = false) const;
209  [[nodiscard]] QString getExternalInfo(const QString& pToken = QStringLiteral("; ")) const;
210 
211  [[nodiscard]] Origin getOrigin() const;
212  [[nodiscard]] bool isOriginServer() const;
213 
214  [[nodiscard]] bool isNoError() const;
215  [[nodiscard]] bool isError() const;
216  [[nodiscard]] bool isCancellationByUser() const;
217  [[nodiscard]] bool isMessageMasked() const;
218 };
219 
221 
223 
224 } // namespace governikus
225 
226 
227 QDebug operator <<(QDebug pDbg, const governikus::GlobalStatus& pStatus);
#define defineEnumOperators(enumName)
Definition: EnumHelper.h:30
QDebug operator<<(QDebug pDbg, const governikus::GlobalStatus &pStatus)
Definition: GlobalStatus.h:20
Code getStatusCode() const
bool operator==(const GlobalStatus &pOther) const
GlobalStatus(Code pStatusCode, const ExternalInfoMap &pExternalInformation, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:185
GlobalStatus(Code pStatusCode=Code::Unknown_Error, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:197
QString getExternalInfo(const QString &pToken=QStringLiteral("; ")) const
Origin
Definition: GlobalStatus.h:121
bool is(const Code pStatusCode) const
QString toErrorDescription(const bool pSimplifiedVersion=false) const
bool isMessageMasked() const
bool isCancellationByUser() const
bool isOriginServer() const
QMap< ExternalInformation, QString > ExternalInfoMap
Definition: GlobalStatus.h:136
Origin getOrigin() const
Code
Definition: GlobalStatus.h:26
@ Workflow_Network_Ssl_Certificate_Unsupported_Algorithm_Or_Length
@ Workflow_TrustedChannel_Ssl_Certificate_Unsupported_Algorithm_Or_Length
@ Workflow_Network_Ssl_Connection_Unsupported_Algorithm_Or_Length
GlobalStatus(Code pStatusCode, const QPair< ExternalInformation, QString > &pExternalInformation, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:191
ExternalInformation
Definition: GlobalStatus.h:126
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15