Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPreviewFileDialog Class Reference

#include <KisPreviewFileDialog.h>

+ Inheritance diagram for KisPreviewFileDialog:

Public Slots

void onCurrentChanged (const QString &path)
 
void previewToggled (bool showPreview)
 

Public Member Functions

 KisPreviewFileDialog (QWidget *parent=nullptr, const QString &caption=QString(), const QString &directory=QString(), const QString &filter=QString())
 
void resetIconProvider ()
 

Static Public Attributes

static KisAbstractFileIconCreators_iconCreator {0}
 

Private Attributes

KisFileIconProviderm_iconProvider {0}
 
QLabel * m_preview {0}
 
QToolButton * m_previewToggle {0}
 

Detailed Description

Definition at line 41 of file KisPreviewFileDialog.h.

Constructor & Destructor Documentation

◆ KisPreviewFileDialog()

KisPreviewFileDialog::KisPreviewFileDialog ( QWidget * parent = nullptr,
const QString & caption = QString(),
const QString & directory = QString(),
const QString & filter = QString() )

Definition at line 42 of file KisPreviewFileDialog.cpp.

43 : QFileDialog(parent, caption, directory, filter)
44{
45 KConfigGroup group = KSharedConfig::openConfig()->group("KisPreviewFileDialog");
46 if (group.readEntry("show_thumbnails", false)) {
47 m_iconProvider = new KisFileIconProvider(devicePixelRatioF());
48 }
49
50 m_preview = new QLabel(i18n("Preview"), this);
51 m_preview->setAlignment(Qt::AlignCenter);
52 m_preview->setMinimumWidth(256);
53
54 m_previewToggle = new QToolButton(this);
55 m_previewToggle->setCheckable(true);
56 m_previewToggle->setChecked(group.readEntry("show_preview", true));
57 m_previewToggle->setIcon(KisIconUtils::loadIcon("preview"));
58 m_previewToggle->setToolTip(i18n("Toggle Preview"));
59 connect(m_previewToggle, SIGNAL(toggled(bool)), SLOT(previewToggled(bool)));
60
61 connect(this, SIGNAL(currentChanged(const QString&)), this, SLOT(onCurrentChanged(const QString&)));
62}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void previewToggled(bool showPreview)
void onCurrentChanged(const QString &path)
KisFileIconProvider * m_iconProvider
QIcon loadIcon(const QString &name)

References connect(), KisIconUtils::loadIcon(), m_iconProvider, m_preview, m_previewToggle, onCurrentChanged(), and previewToggled().

Member Function Documentation

◆ onCurrentChanged

void KisPreviewFileDialog::onCurrentChanged ( const QString & path)
slot

Definition at line 83 of file KisPreviewFileDialog.cpp.

84{
85 // Generate the preview only if we're not using the native dialog.
86 // In AppImages, the platform plugins are inaccessible,
87 // so we check the existence of a widget layout instead.
88 if ((testOption(QFileDialog::DontUseNativeDialog) || layout()) && m_preview) {
89 QIcon icon;
90 if (s_iconCreator && s_iconCreator->createFileIcon(path, icon, devicePixelRatioF(), QSize(512, 512))) {
91 auto pixmap = icon.pixmap(m_preview->width(), m_preview->height());
92 pixmap.setDevicePixelRatio(devicePixelRatioF());
93 m_preview->setPixmap(pixmap);
94 }
95 else {
96 m_preview->setText(i18n("No Preview"));
97 }
98 }
99}
virtual bool createFileIcon(QString path, QIcon &icon, qreal devicePixelRatioF, QSize iconSize)=0
static KisAbstractFileIconCreator * s_iconCreator

References KisAbstractFileIconCreator::createFileIcon(), m_preview, and s_iconCreator.

◆ previewToggled

void KisPreviewFileDialog::previewToggled ( bool showPreview)
slot

Definition at line 101 of file KisPreviewFileDialog.cpp.

102{
103 KConfigGroup group = KSharedConfig::openConfig()->group("KisPreviewFileDialog");
104 group.writeEntry("show_preview", showPreview);
105 m_preview->setVisible(showPreview);
106}

References m_preview.

◆ resetIconProvider()

void KisPreviewFileDialog::resetIconProvider ( )

Definition at line 64 of file KisPreviewFileDialog.cpp.

65{
66 QSplitter *splitter = findChild<QSplitter *>();
67 if (splitter) {
68 splitter->addWidget(m_preview);
69 resize(width() + m_preview->width(), height());
70 }
71
72 QHBoxLayout *layout = findChild<QHBoxLayout *>();
73 if (layout) {
74 layout->addWidget(m_previewToggle);
75 }
76
77 KConfigGroup group = KSharedConfig::openConfig()->group("File Dialogs");
78 if (group.readEntry("show_thumbnails", false)) {
79 setIconProvider(m_iconProvider);
80 }
81}

References m_iconProvider, m_preview, and m_previewToggle.

Member Data Documentation

◆ m_iconProvider

KisFileIconProvider* KisPreviewFileDialog::m_iconProvider {0}
private

Definition at line 61 of file KisPreviewFileDialog.h.

61{0};

◆ m_preview

QLabel* KisPreviewFileDialog::m_preview {0}
private

Definition at line 62 of file KisPreviewFileDialog.h.

62{0};

◆ m_previewToggle

QToolButton* KisPreviewFileDialog::m_previewToggle {0}
private

Definition at line 63 of file KisPreviewFileDialog.h.

63{0};

◆ s_iconCreator

KisAbstractFileIconCreator * KisPreviewFileDialog::s_iconCreator {0}
static

Definition at line 20 of file KisPreviewFileDialog.h.


The documentation for this class was generated from the following files: