AusweisApp2
DiagnosisModel.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \copyright Copyright (c) 2018-2020 Governikus GmbH & Co. KG, Germany
3  */
4 
5 #pragma once
6 
11 #include "DiagnosisItem.h"
12 
13 #include <QAbstractListModel>
14 #include <QPair>
15 #include <QSharedPointer>
16 #include <QVector>
17 
18 class test_DiagnosisModel;
19 
20 namespace governikus
21 {
22 
23 class SectionModel;
25 {
26  ContentItem(const QString& pTitle, const QString& pContent)
27  : mTitle(pTitle)
28  , mContent(pContent)
29  {
30  }
31 
32 
33  QString mTitle;
34  QString mContent;
35  QSharedPointer<SectionModel> mSection;
36 };
37 
38 
40  : public QAbstractListModel
41  , public QEnableSharedFromThis<SectionModel>
42 {
43  Q_OBJECT
44 
45  enum ContentRoles
46  {
47  TitleRole = Qt::UserRole + 1,
48  ContentRole
49  };
50 
51  private:
52  friend class ::test_DiagnosisModel;
53  QVector<QSharedPointer<ContentItem>> mContentItems;
54 
55  public:
56  explicit SectionModel(QObject* pParent = nullptr);
57 
58  QVariant data(const QModelIndex& pIndex, int pRole = Qt::DisplayRole) const override;
59  int rowCount(const QModelIndex& pParent = QModelIndex()) const override;
60  QHash<int, QByteArray> roleNames() const override;
61 
62  void addItem(const QString& pTitle, const QString& pContent);
63  void addItem(const QSharedPointer<ContentItem>& pContentItem);
64  void addItemWithoutTitle(const QString& pContent);
65  void addTitleWithoutContent(const QString& pTitle);
66  void removeAllItems();
67  void emitDataChangedForItem(const QSharedPointer<ContentItem>& pItem);
68  void replaceWithSections(QVector<QSharedPointer<SectionModel>> pSections);
69  QStringList getAsPlaintext(const QString& pPrependString = QString()) const;
70 };
71 
72 
74  : public QAbstractListModel
75 {
76  Q_OBJECT
77 
78  private:
79  friend class ::test_DiagnosisModel;
80  QVector<QPair<QString, QSharedPointer<SectionModel>>> mSections;
81  QSharedPointer<DiagnosisContext> mContext;
82  DiagnosisAntivirusDetection mAntivirusDetection;
83  DiagnosisFirewallDetection mFirewallDetection;
84  DiagnosisConnectionTest mConnectionTest;
85  QSharedPointer<ContentItem> mTimestampItem;
86  QSharedPointer<SectionModel> mNetworkInterfaceSection;
87  QSharedPointer<SectionModel> mNetworkConnectionSection;
88  QSharedPointer<SectionModel> mCombinedNetworkSection;
89  QSharedPointer<SectionModel> mCombinedAntivirusFirewallSection;
90  QSharedPointer<SectionModel> mAntivirusSection;
91  bool mAntivirusSectionRunning;
92  QSharedPointer<SectionModel> mFirewallSection;
93  bool mFirewallSectionRunning;
94  QSharedPointer<SectionModel> mCombinedReaderSection;
95  QSharedPointer<SectionModel> mCardReaderSection;
96  bool mCardReaderSectionRunning;
97  QSharedPointer<SectionModel> mPcscSection;
98  bool mPcscSectionRunning;
99  QSharedPointer<SectionModel> mRemoteDeviceSection;
100  bool mRemoteDeviceSectionRunning;
101 
102  QSharedPointer<SectionModel> createAusweisApp2Section();
103  void createNetworkSection();
104  void createCardReaderSection();
105  void createAntiVirusAndFirewallSection();
106  void emitDataChangedForSection(const QSharedPointer<ContentItem>& pItem) const;
107  void connectSignals();
108  void disconnectSignals();
109 
110  public:
111  explicit DiagnosisModel(const QSharedPointer<DiagnosisContext>& pContext);
112  ~DiagnosisModel() override;
113 
114  QVariant data(const QModelIndex& pIndex, int pRole = Qt::DisplayRole) const override;
115  int rowCount(const QModelIndex& pParent = QModelIndex()) const override;
116 
117  QString getFirstSectionName() const;
118  QAbstractListModel* getSectionContent(const QString& pSection);
119  QDateTime getCreationTime() const;
120  Q_INVOKABLE QString getCreationTimeString() const;
121  QString getAsPlaintext() const;
122  QString boolToString(bool pBoolean);
123  bool isRunning() const;
124 
125  Q_SIGNALS:
126  void fireRunningChanged();
127 
128  private Q_SLOTS:
129  void onTimestampChanged();
130  void onNetworkInfoChanged();
131  void onConnectionTestDone();
132  void onAntivirusInformationChanged();
133  void onAntivirusDetectionFailed();
134  void onFirewallInformationReady();
135  void onFirewallInformationFailed();
136  void onPcscInfoChanged();
137  void onRemoteInfosChanged();
138  void onReaderInfosChanged();
139  void reloadContent();
140 };
141 
142 } // namespace governikus
QVariant data(const QModelIndex &pIndex, int pRole=Qt::DisplayRole) const override
Definition: DiagnosisModel.cpp:155
Definition: DiagnosisAntivirusDetection.h:50
QString getAsPlaintext() const
Definition: DiagnosisModel.cpp:209
ContentItem(const QString &pTitle, const QString &pContent)
Definition: DiagnosisModel.h:26
QStringList getAsPlaintext(const QString &pPrependString=QString()) const
Definition: DiagnosisModel.cpp:733
Definition: DiagnosisModel.h:73
void replaceWithSections(QVector< QSharedPointer< SectionModel >> pSections)
Definition: DiagnosisModel.cpp:715
void addItem(const QString &pTitle, const QString &pContent)
Definition: DiagnosisModel.cpp:670
QSharedPointer< SectionModel > mSection
Definition: DiagnosisModel.h:35
Q_INVOKABLE QString getCreationTimeString() const
Definition: DiagnosisModel.cpp:203
QString boolToString(bool pBoolean)
Definition: DiagnosisModel.cpp:230
bool isRunning() const
Definition: DiagnosisModel.cpp:236
Definition: DiagnosisFirewallDetection.h:72
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
SectionModel(QObject *pParent=nullptr)
Definition: DiagnosisModel.cpp:611
Definition: DiagnosisModel.h:24
void removeAllItems()
Definition: DiagnosisModel.cpp:697
DiagnosisModel(const QSharedPointer< DiagnosisContext > &pContext)
Definition: DiagnosisModel.cpp:20
QString getFirstSectionName() const
Definition: DiagnosisModel.cpp:176
void emitDataChangedForItem(const QSharedPointer< ContentItem > &pItem)
Definition: DiagnosisModel.cpp:708
Definition: DiagnosisModel.h:39
QString mContent
Definition: DiagnosisModel.h:34
QDateTime getCreationTime() const
Definition: DiagnosisModel.cpp:197
QAbstractListModel * getSectionContent(const QString &pSection)
Definition: DiagnosisModel.cpp:182
~DiagnosisModel() override
Definition: DiagnosisModel.cpp:32
void addItemWithoutTitle(const QString &pContent)
Definition: DiagnosisModel.cpp:685
Definition: DiagnosisConnectionTest.h:22
QString mTitle
Definition: DiagnosisModel.h:33
int rowCount(const QModelIndex &pParent=QModelIndex()) const override
Definition: DiagnosisModel.cpp:653
void addTitleWithoutContent(const QString &pTitle)
Definition: DiagnosisModel.cpp:691
int rowCount(const QModelIndex &pParent=QModelIndex()) const override
Definition: DiagnosisModel.cpp:169
QVariant data(const QModelIndex &pIndex, int pRole=Qt::DisplayRole) const override
Definition: DiagnosisModel.cpp:618
QHash< int, QByteArray > roleNames() const override
Definition: DiagnosisModel.cpp:660