summaryrefslogtreecommitdiffstats
path: root/src/network/networktest.h
blob: fc24e0611ce003e50a8635152a37e2d7aa968748 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#ifndef NETWORKTEST_H
#define NETWORKTEST_H

//
//  W A R N I N G
//  -------------
//
// This file is not part of the Qt API.  It exists purely as an
// implementation detail.  This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//

#include <QtCore>
#include <QJsonParseError>
#include <QJsonArray>
#include <QVersionNumber>

class QDnsLookup;
class NetworkTest
{
    Q_GADGET
public:
    enum class Verbosity {
        Silent = 0,
        Summary = 1,
        Error = 2,
        All = 3,
    };
    Q_ENUM(Verbosity)
    static constexpr int verbosityCount = 4;

    NetworkTest(const QString &fileName, bool warnOnly, bool showProgress, int timeout, Verbosity verbosity);
    bool test();
    static Verbosity toVerbosity(int verbosity, bool *ok);
    static QString verbosityString(Verbosity verbosity);
    static QStringList verbosityStrings();
    static QVersionNumber version() { return m_version; }
    static QString versionString();
    static QString packageName(const QString &extension = "tgz");
    static QString applicationName();
    static void printNetworkConfig();

private:
    QJsonArray m_array;
    const bool m_warnOnly;
    const bool m_showProgress;
    const int m_timeout;
    const Verbosity m_verbosity;
    const QString m_fileName;
    static const QVersionNumber m_version;
    QStringList formatReply(const QDnsLookup *lookup) const;
    inline bool verbosityCheck(Verbosity verbosity) const;
};

#endif // NETWORKTEST_H