File indexing completed on 2024-05-12 16:02:29
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Halla Rempt <halla@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef KISPREVIEWFILEDIALOG_H 0007 #define KISPREVIEWFILEDIALOG_H 0008 0009 #include <QFileDialog> 0010 #include <QFileIconProvider> 0011 0012 #include <kritawidgetutils_export.h> 0013 0014 class QLabel; 0015 class QToolButton; 0016 0017 class KisFileIconProvider : public QFileIconProvider 0018 { 0019 public: 0020 0021 KisFileIconProvider(qreal devicePixelRatioF); 0022 QIcon icon(const QFileIconProvider::IconType type) const override; 0023 QIcon icon(const QFileInfo &fi) const override; 0024 private: 0025 0026 qreal m_devicePixelRatioF; 0027 0028 }; 0029 0030 class KRITAWIDGETUTILS_EXPORT KisAbstractFileIconCreator 0031 { 0032 public: 0033 0034 KisAbstractFileIconCreator(); 0035 virtual ~KisAbstractFileIconCreator(); 0036 0037 virtual bool createFileIcon(QString path, QIcon &icon, qreal devicePixelRatioF, QSize iconSize) = 0; 0038 0039 }; 0040 0041 class KRITAWIDGETUTILS_EXPORT KisPreviewFileDialog : public QFileDialog 0042 { 0043 Q_OBJECT 0044 0045 public: 0046 KisPreviewFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()); 0047 0048 // QFileDialog drops the icon provider when the model is created, 0049 // so we cannot set this before the options are set 0050 void resetIconProvider(); 0051 0052 static KisAbstractFileIconCreator *s_iconCreator; 0053 0054 public Q_SLOTS: 0055 0056 void onCurrentChanged(const QString &path); 0057 void previewToggled(bool showPreview); 0058 0059 private: 0060 0061 KisFileIconProvider *m_iconProvider {0}; 0062 QLabel *m_preview {0}; 0063 QToolButton *m_previewToggle {0}; 0064 }; 0065 0066 #endif // KISPREVIEWFILEDIALOG_H