Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPreviewFileDialog.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Halla Rempt <halla@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KISPREVIEWFILEDIALOG_H
7#define KISPREVIEWFILEDIALOG_H
8
9#include <QFileDialog>
10#include <QFileIconProvider>
11
12#include <kritawidgetutils_export.h>
13
14class QLabel;
15class QToolButton;
16
17class KisFileIconProvider : public QFileIconProvider
18{
19public:
21 KisFileIconProvider(qreal devicePixelRatioF);
22 QIcon icon(const QFileIconProvider::IconType type) const override;
23 QIcon icon(const QFileInfo &fi) const override;
24private:
25
27
28};
29
30class KRITAWIDGETUTILS_EXPORT KisAbstractFileIconCreator
31{
32public:
33
36
37 virtual bool createFileIcon(QString path, QIcon &icon, qreal devicePixelRatioF, QSize iconSize) = 0;
38
39};
40
41class KRITAWIDGETUTILS_EXPORT KisPreviewFileDialog : public QFileDialog
42{
43 Q_OBJECT
44
45public:
46 KisPreviewFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString());
47
48 // QFileDialog drops the icon provider when the model is created,
49 // so we cannot set this before the options are set
50 void resetIconProvider();
51
52 static KisAbstractFileIconCreator *s_iconCreator;
53
54public Q_SLOTS:
55
56 void onCurrentChanged(const QString &path);
57 void previewToggled(bool showPreview);
58
59private:
60
61 KisFileIconProvider *m_iconProvider {0};
62 QLabel *m_preview {0};
63 QToolButton *m_previewToggle {0};
64};
65
66#endif // KISPREVIEWFILEDIALOG_H
int iconSize(qreal width, qreal height)
virtual bool createFileIcon(QString path, QIcon &icon, qreal devicePixelRatioF, QSize iconSize)=0
KisFileIconProvider(qreal devicePixelRatioF)
QIcon icon(const QFileIconProvider::IconType type) const override