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 
90 
92 
94 
101 
119 
121 
127  };
128 
129  enum class Origin
130  {
131  Server, Client
132  };
133 
135  {
138  LAST_URL,
140  REDIRECT_URL,
142  URL_SCHEME,
144  };
145 
146  using ExternalInfoMap = QMap<ExternalInformation, QString>;
147 
148  Q_ENUM(Code)
149  Q_ENUM(Origin)
150  Q_ENUM(ExternalInformation)
151 
152  private:
153  class InternalStatus
154  : public QSharedData
155  {
156  public:
157  const Code mStatusCode;
158  const ExternalInfoMap mExternalInformation;
159  const Origin mOrigin;
160 
161  InternalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin)
162  : mStatusCode(pStatusCode)
163  , mExternalInformation(pExternalInformation)
164  , mOrigin(pOrigin)
165  {
166  }
167 
168 
169  InternalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin)
170  : mStatusCode(pStatusCode)
171  , mExternalInformation({
172  {pExternalInformation.first, pExternalInformation.second}
173  })
174  , mOrigin(pOrigin)
175  {
176  }
177 
178 
179  bool operator ==(const InternalStatus& pOther) const
180  {
181  return mStatusCode == pOther.mStatusCode &&
182  mExternalInformation == pOther.mExternalInformation &&
183  mOrigin == pOther.mOrigin;
184  }
185 
186 
187  };
188 
189  QSharedDataPointer<InternalStatus> d;
190  [[nodiscard]] QString getExternalInfo(ExternalInformation pType) const;
191 
192  [[nodiscard]] QString toErrorDescriptionInternal() const;
193 
194  public:
195  GlobalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin = Origin::Client)
196  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
197  {
198  }
199 
200 
201  GlobalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin = Origin::Client)
202  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
203  {
204  }
205 
206 
208  : d(new InternalStatus(pStatusCode, ExternalInfoMap(), pOrigin))
209  {
210  }
211 
212 
213  bool operator ==(const GlobalStatus& pOther) const;
214  [[nodiscard]] bool is(const Code pStatusCode) const;
215 
216  [[nodiscard]] Code getStatusCode() const;
217 
218  [[nodiscard]] QString toErrorDescription(const bool pSimplifiedVersion = false) const;
219  [[nodiscard]] QString getExternalInfo(const QString& pToken = QStringLiteral("; ")) const;
220 
221  [[nodiscard]] Origin getOrigin() const;
222  [[nodiscard]] bool isOriginServer() const;
223 
224  [[nodiscard]] bool isNoError() const;
225  [[nodiscard]] bool isError() const;
226  [[nodiscard]] bool isCancellationByUser() const;
227  [[nodiscard]] bool isMessageMasked() const;
228 };
229 
231 
233 
234 } // namespace governikus
235 
236 
237 QDebug operator <<(QDebug pDbg, const governikus::GlobalStatus& pStatus);
#define defineEnumOperators(enumName)
Definition: EnumHelper.h:31
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:195
GlobalStatus(Code pStatusCode=Code::Unknown_Error, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:207
QString getExternalInfo(const QString &pToken=QStringLiteral("; ")) const
Origin
Definition: GlobalStatus.h:130
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:146
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_TrustedChannel_Ssl_Connection_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:201
ExternalInformation
Definition: GlobalStatus.h:135
A simple template renderer.
Definition: ActivationContext.h:15