File: previewfiledialog.cpp

package info (click to toggle)
psi-plugins 1.5-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 4,368 kB
  • sloc: cpp: 42,063; xml: 714; ansic: 84; makefile: 61; sh: 12
file content (38 lines) | stat: -rw-r--r-- 1,299 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "previewfiledialog.h"
#include <QGridLayout>

PreviewFileDialog::PreviewFileDialog(QWidget* parent, const QString & caption, const QString & directory,
		const QString & filter, int previewWidth) :
		QFileDialog(parent, caption, directory, filter) {
	QGridLayout *layout = (QGridLayout*) this->layout();
	if (!layout) {
		// this QFileDialog is a native one (Windows/KDE/...) and doesn't need to be extended with preview
		return;
	}
	setObjectName("PreviewFileDialog");
	QVBoxLayout* box = new QVBoxLayout();

	mpPreview = new QLabel(tr("Preview"), this);
	mpPreview->setAlignment(Qt::AlignCenter);
	mpPreview->setObjectName("labelPreview");
	mpPreview->setMinimumWidth(previewWidth);
	mpPreview->setMinimumHeight(height());
	setMinimumWidth(width() + previewWidth);
	box->addWidget(mpPreview);

	box->addStretch();

	// add to QFileDialog layout
	layout->addLayout(box, 1, 3, 3, 1);
	connect(this, SIGNAL(currentChanged(const QString&)), this, SLOT(onCurrentChanged(const QString&)));
}

void PreviewFileDialog::onCurrentChanged(const QString & path) {
	QPixmap pixmap = QPixmap(path);
	if (pixmap.isNull()) {
		mpPreview->setText(tr("Not an image"));
	} else {
		mpPreview->setPixmap(
				pixmap.scaled(mpPreview->width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
	}
}