diff options
Diffstat (limited to 'src/plugins/qmldesigner/utils')
-rw-r--r-- | src/plugins/qmldesigner/utils/asset.cpp | 26 | ||||
-rw-r--r-- | src/plugins/qmldesigner/utils/asset.h | 6 | ||||
-rw-r--r-- | src/plugins/qmldesigner/utils/imageutils.cpp | 12 | ||||
-rw-r--r-- | src/plugins/qmldesigner/utils/imageutils.h | 5 |
4 files changed, 42 insertions, 7 deletions
diff --git a/src/plugins/qmldesigner/utils/asset.cpp b/src/plugins/qmldesigner/utils/asset.cpp index 2984a4d890..ec1e4312e4 100644 --- a/src/plugins/qmldesigner/utils/asset.cpp +++ b/src/plugins/qmldesigner/utils/asset.cpp @@ -1,15 +1,19 @@ // Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include <QImageReader> - #include "asset.h" +#include "hdrimage.h" + +#include <QImageReader> +#include <QPixmap> + namespace QmlDesigner { Asset::Asset(const QString &filePath) : m_filePath(filePath) { + m_fileName = filePath.split('/').last(); const QStringList split = filePath.split('.'); if (split.size() > 1) m_suffix = "*." + split.last().toLower(); @@ -105,6 +109,19 @@ bool Asset::isSupported(const QString &path) return supportedSuffixes().contains(path); } +QPixmap Asset::pixmap(const QSize &size) const +{ + if (!isImage() && !isHdrFile()) + return {}; + + QPixmap icon = isHdrFile() ? HdrImage{m_filePath}.toPixmap() : QPixmap{m_filePath}; + + if (size.isValid()) + icon = icon.scaled(size, Qt::KeepAspectRatio); + + return icon; +} + Asset::Type Asset::type() const { return m_type; @@ -175,6 +192,11 @@ const QString Asset::id() const return m_filePath; } +const QString Asset::fileName() const +{ + return m_fileName; +} + bool Asset::isSupported() const { return m_type != Asset::Type::Unknown; diff --git a/src/plugins/qmldesigner/utils/asset.h b/src/plugins/qmldesigner/utils/asset.h index cb09f3a5ee..a5c5899f34 100644 --- a/src/plugins/qmldesigner/utils/asset.h +++ b/src/plugins/qmldesigner/utils/asset.h @@ -3,8 +3,11 @@ #pragma once +#include <QSize> #include <QString> +QT_FORWARD_DECLARE_CLASS(QPixmap) + namespace QmlDesigner { class Asset @@ -37,7 +40,9 @@ public: const QString suffix() const; const QString id() const; + const QString fileName() const; bool hasSuffix() const; + QPixmap pixmap(const QSize &size = {}) const; Type type() const; bool isImage() const; @@ -58,6 +63,7 @@ private: void resolveType(); QString m_filePath; + QString m_fileName; QString m_suffix; Type m_type = Unknown; }; diff --git a/src/plugins/qmldesigner/utils/imageutils.cpp b/src/plugins/qmldesigner/utils/imageutils.cpp index 8fa3131cd3..42df6184b9 100644 --- a/src/plugins/qmldesigner/utils/imageutils.cpp +++ b/src/plugins/qmldesigner/utils/imageutils.cpp @@ -11,7 +11,7 @@ namespace QmlDesigner { -QString ImageUtils::imageInfo(const QSize &dimensions, qint64 sizeInBytes) +QString ImageUtils::imageInfoString(const QSize &dimensions, qint64 sizeInBytes) { return QLatin1String("%1 x %2\n%3") .arg(QString::number(dimensions.width()), @@ -20,7 +20,7 @@ QString ImageUtils::imageInfo(const QSize &dimensions, qint64 sizeInBytes) sizeInBytes, 2, QLocale::DataSizeTraditionalFormat)); } -QString QmlDesigner::ImageUtils::imageInfo(const QString &path) +QPair<QSize, qint64> QmlDesigner::ImageUtils::imageInfo(const QString &path) { QFileInfo info(path); if (!info.exists()) @@ -52,7 +52,13 @@ QString QmlDesigner::ImageUtils::imageInfo(const QString &path) if (width <= 0 || height <= 0) return {}; - return imageInfo(QSize(width, height), info.size()); + return {QSize(width, height), info.size()}; +} + +QString ImageUtils::imageInfoString(const QString &path) +{ + QPair<QSize, qint64> info = imageInfo(path); + return imageInfoString(info.first, info.second); } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/utils/imageutils.h b/src/plugins/qmldesigner/utils/imageutils.h index a4036614a3..dae64423bb 100644 --- a/src/plugins/qmldesigner/utils/imageutils.h +++ b/src/plugins/qmldesigner/utils/imageutils.h @@ -12,8 +12,9 @@ class ImageUtils public: ImageUtils(); - static QString imageInfo(const QSize &dimensions, qint64 sizeInBytes); - static QString imageInfo(const QString &path); + static QPair<QSize, qint64> imageInfo(const QString &path); + static QString imageInfoString(const QString &path); + static QString imageInfoString(const QSize &dimensions, qint64 sizeInBytes); }; } // namespace QmlDesigner |