diff options
Diffstat (limited to 'src/designer/src/lib/shared/iconloader.cpp')
-rw-r--r-- | src/designer/src/lib/shared/iconloader.cpp | 77 |
1 files changed, 38 insertions, 39 deletions
diff --git a/src/designer/src/lib/shared/iconloader.cpp b/src/designer/src/lib/shared/iconloader.cpp index 13c9ad4f7..ecb97ba2b 100644 --- a/src/designer/src/lib/shared/iconloader.cpp +++ b/src/designer/src/lib/shared/iconloader.cpp @@ -1,63 +1,62 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Designer of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "iconloader_p.h" #include <QtCore/qfile.h> +#include <QtCore/qoperatingsystemversion.h> #include <QtGui/qicon.h> #include <QtGui/qpixmap.h> QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + namespace qdesigner_internal { -QDESIGNER_SHARED_EXPORT QIcon createIconSet(const QString &name) +QDESIGNER_SHARED_EXPORT QIcon createIconSet(QIcon::ThemeIcon themeIcon, + QLatin1StringView name) { - const QStringList candidates = QStringList() - << (QString::fromUtf8(":/qt-project.org/formeditor/images/") + name) + return QOperatingSystemVersion::currentType() != QOperatingSystemVersion::MacOS + && QIcon::hasThemeIcon(themeIcon) + ? QIcon::fromTheme(themeIcon) : createIconSet(name); +} + +template <class StringView> +static inline QIcon createIconSetHelper(StringView name) +{ + constexpr QLatin1StringView prefixes[] = { + ":/qt-project.org/formeditor/images/"_L1, #ifdef Q_OS_MACOS - << (QString::fromUtf8(":/qt-project.org/formeditor/images/mac/") + name) + ":/qt-project.org/formeditor/images/mac/"_L1, #else - << (QString::fromUtf8(":/qt-project.org/formeditor/images/win/") + name) + ":/qt-project.org/formeditor/images/win/"_L1, #endif - << (QString::fromUtf8(":/qt-project.org/formeditor/images/designer_") + name); + ":/qt-project.org/formeditor/images/designer_"_L1 + }; - for (const QString &f : candidates) { + for (QLatin1StringView prefix : prefixes) { + const QString f = prefix + name; if (QFile::exists(f)) return QIcon(f); } - return QIcon(); + return {}; +} + +QDESIGNER_SHARED_EXPORT QIcon createIconSet(QStringView name) +{ + return createIconSetHelper(name); +} + +QDESIGNER_SHARED_EXPORT QIcon createIconSet(QLatin1StringView name) +{ + return createIconSetHelper(name); } QDESIGNER_SHARED_EXPORT QIcon emptyIcon() { - return QIcon(QStringLiteral(":/qt-project.org/formeditor/images/emptyicon.png")); + return QIcon(u":/qt-project.org/formeditor/images/emptyicon.png"_s); } static QIcon buildIcon(const QString &prefix, const int *sizes, size_t sizeCount) @@ -65,7 +64,7 @@ static QIcon buildIcon(const QString &prefix, const int *sizes, size_t sizeCount QIcon result; for (size_t i = 0; i < sizeCount; ++i) { const QString size = QString::number(sizes[i]); - const QPixmap pixmap(prefix + size + QLatin1Char('x') + size + QStringLiteral(".png")); + const QPixmap pixmap(prefix + size + 'x'_L1 + size + ".png"_L1); Q_ASSERT(!pixmap.size().isEmpty()); result.addPixmap(pixmap); } @@ -74,9 +73,9 @@ static QIcon buildIcon(const QString &prefix, const int *sizes, size_t sizeCount QDESIGNER_SHARED_EXPORT QIcon qtLogoIcon() { - static const int sizes[] = {16, 24, 32, 64}; + static const int sizes[] = {16, 24, 32, 64, 128}; static const QIcon result = - buildIcon(QStringLiteral(":/qt-project.org/formeditor/images/qtlogo"), + buildIcon(u":/qt-project.org/formeditor/images/qtlogo"_s, sizes, sizeof(sizes) / sizeof(sizes[0])); return result; } |