summaryrefslogtreecommitdiffstats
path: root/src/gui/platform/wasm/qlocalfileapi_p.h
blob: 1398d674d8baefd1b8c7f99be2dd19b70821dc18 (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright (C) 2022 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 QLOCALFILEAPI_P_H
#define QLOCALFILEAPI_P_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 <private/qglobal_p.h>
#include <qstringview.h>
#include <emscripten/val.h>
#include <cstdint>
#include <functional>

QT_BEGIN_NAMESPACE

namespace LocalFileApi {
class Q_AUTOTEST_EXPORT Type
{
public:
    class Accept {
    public:
        class MimeType {
        public:
            class Extension {
            public:
                static std::optional<Extension> fromQt(QStringView extension);

                ~Extension();

                const QStringView &value() const { return m_value; }

            private:
                explicit Extension(QStringView extension);

                QStringView m_value;
            };

            MimeType();
            ~MimeType();

            void addExtension(Extension type);

            const std::vector<Extension> &extensions() const { return m_extensions; }

        private:
            std::vector<Extension> m_extensions;
        };

        static std::optional<Accept> fromQt(QStringView type);

        ~Accept();

        void setMimeType(MimeType mimeType);

        const MimeType &mimeType() const { return m_mimeType; }

    private:
        Accept();
        MimeType m_mimeType;
    };

    Type(QStringView description, std::optional<Accept> accept);
    ~Type();

    static std::optional<Type> fromQt(QStringView type);
    const QStringView &description() const { return m_description; }
    const std::optional<Accept> &accept() const { return m_accept; }

private:
    QStringView m_description;
    std::optional<Accept> m_accept;
};

Q_AUTOTEST_EXPORT emscripten::val makeOpenFileOptions(const QStringList &filterList,
                                                      bool acceptMultiple);
Q_AUTOTEST_EXPORT emscripten::val makeSaveFileOptions(const QStringList &filterList,
                                                      const std::string &suggestedName);

Q_AUTOTEST_EXPORT std::string makeFileInputAccept(const QStringList &filterList);

}  // namespace LocalFileApi
QT_END_NAMESPACE

#endif // QLOCALFILEAPI_P_H