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 
111 
113 
119  };
120 
121  enum class Origin
122  {
123  Server, Client
124  };
125 
127  {
129  LAST_URL,
131  REDIRECT_URL,
133  URL_SCHEME,
135  };
136 
137  using ExternalInfoMap = QMap<ExternalInformation, QString>;
138 
139  Q_ENUM(Code)
140  Q_ENUM(Origin)
141  Q_ENUM(ExternalInformation)
142 
143  private:
144  class InternalStatus
145  : public QSharedData
146  {
147  public:
148  const Code mStatusCode;
149  const ExternalInfoMap mExternalInformation;
150  const Origin mOrigin;
151 
152  InternalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin)
153  : mStatusCode(pStatusCode)
154  , mExternalInformation(pExternalInformation)
155  , mOrigin(pOrigin)
156  {
157  }
158 
159 
160  InternalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin)
161  : mStatusCode(pStatusCode)
162  , mExternalInformation({
163  {pExternalInformation.first, pExternalInformation.second}
164  })
165  , mOrigin(pOrigin)
166  {
167  }
168 
169 
170  bool operator ==(const InternalStatus& pOther) const
171  {
172  return mStatusCode == pOther.mStatusCode &&
173  mExternalInformation == pOther.mExternalInformation &&
174  mOrigin == pOther.mOrigin;
175  }
176 
177 
178  };
179 
180  QSharedDataPointer<InternalStatus> d;
181  [[nodiscard]] QString getExternalInfo(ExternalInformation pType) const;
182 
183  [[nodiscard]] QString toErrorDescriptionInternal() const;
184 
185  public:
186  GlobalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin = Origin::Client)
187  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
188  {
189  }
190 
191 
192  GlobalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin = Origin::Client)
193  : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
194  {
195  }
196 
197 
199  : d(new InternalStatus(pStatusCode, ExternalInfoMap(), pOrigin))
200  {
201  }
202 
203 
204  bool operator ==(const GlobalStatus& pOther) const;
205  [[nodiscard]] bool is(const Code pStatusCode) const;
206 
207  [[nodiscard]] Code getStatusCode() const;
208 
209  [[nodiscard]] QString toErrorDescription(const bool pSimplifiedVersion = false) const;
210  [[nodiscard]] QString getExternalInfo(const QString& pToken = QStringLiteral("; ")) const;
211 
212  [[nodiscard]] Origin getOrigin() const;
213  [[nodiscard]] bool isOriginServer() const;
214 
215  [[nodiscard]] bool isNoError() const;
216  [[nodiscard]] bool isError() const;
217  [[nodiscard]] bool isCancellationByUser() const;
218  [[nodiscard]] bool isMessageMasked() const;
219 };
220 
222 
224 
225 } // namespace governikus
226 
227 
228 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:186
GlobalStatus(Code pStatusCode=Code::Unknown_Error, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:198
QString getExternalInfo(const QString &pToken=QStringLiteral("; ")) const
Origin
Definition: GlobalStatus.h:122
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:137
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:192
ExternalInformation
Definition: GlobalStatus.h:127
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15