summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmbase64iconstore.cpp
blob: 8f05f082ea6bcd31f41fb687bcf49c26f3e4edf9 (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
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#include "qwasmbase64iconstore.h"

#include <QtCore/qfile.h>

QT_BEGIN_NAMESPACE

Q_GLOBAL_STATIC(Base64IconStore, globalWasmWindowIconStore);

Base64IconStore::Base64IconStore()
{
    QString iconSources[static_cast<size_t>(IconType::Size)] = {
        QStringLiteral(":/wasm-window/maximize.svg"), QStringLiteral(":/wasm-window/qtlogo.svg"),
        QStringLiteral(":/wasm-window/restore.svg"), QStringLiteral(":/wasm-window/x.svg")
    };

    for (size_t iconType = static_cast<size_t>(IconType::First);
         iconType < static_cast<size_t>(IconType::Size); ++iconType) {
        QFile svgFile(iconSources[static_cast<size_t>(iconType)]);
        if (!svgFile.open(QIODevice::ReadOnly))
            Q_ASSERT(false); // A resource should always be opened.
        m_storage[static_cast<size_t>(iconType)] = svgFile.readAll().toBase64();
    }
}

Base64IconStore::~Base64IconStore() = default;

Base64IconStore *Base64IconStore::get()
{
    return globalWasmWindowIconStore();
}

std::string_view Base64IconStore::getIcon(IconType type) const
{
    return m_storage[static_cast<size_t>(type)];
}

QT_END_NAMESPACE