From f9080db71c471f50cb874a1a3805ec1062c3b8a0 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Fri, 29 Sep 2017 19:57:52 +0800 Subject: [PATCH] minor-fix: scale images keeping aspect ration when previewing images in dialogs --- src/dialog/vconfirmdeletiondialog.cpp | 23 ++++++++++++++++++++++- src/dialog/vinsertimagedialog.cpp | 10 +++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/dialog/vconfirmdeletiondialog.cpp b/src/dialog/vconfirmdeletiondialog.cpp index adeccd06..49fd22c3 100644 --- a/src/dialog/vconfirmdeletiondialog.cpp +++ b/src/dialog/vconfirmdeletiondialog.cpp @@ -95,6 +95,22 @@ void VConfirmDeletionDialog::setupUI(const QString &p_title, m_listWidget = new QListWidget(); connect(m_listWidget, &QListWidget::currentRowChanged, this, &VConfirmDeletionDialog::currentFileChanged); + connect(m_listWidget, &QListWidget::itemActivated, + this, [this](QListWidgetItem *p_item) { + // Open it using resource manager. + if (!p_item) { + return; + } + + ConfirmItemWidget *widget = getItemWidget(p_item); + Q_ASSERT(widget); + QString filePath = m_items[widget->getIndex()].m_path; + + if (!filePath.isEmpty()) { + QUrl url = QUrl::fromLocalFile(filePath); + QDesktopServices::openUrl(url); + } + }); m_previewer = new QLabel(); @@ -195,7 +211,12 @@ void VConfirmDeletionDialog::currentFileChanged(int p_row) if (!image.isNull()) { int width = 512 * VUtils::calculateScaleFactor(); QSize previewSize(width, width); - m_previewer->setPixmap(image.scaled(previewSize)); + if (image.width() > width || image.height() > width) { + m_previewer->setPixmap(image.scaled(previewSize, Qt::KeepAspectRatio)); + } else { + m_previewer->setPixmap(image); + } + succeed = true; } } diff --git a/src/dialog/vinsertimagedialog.cpp b/src/dialog/vinsertimagedialog.cpp index 71803465..9b0b090e 100644 --- a/src/dialog/vinsertimagedialog.cpp +++ b/src/dialog/vinsertimagedialog.cpp @@ -120,7 +120,15 @@ void VInsertImageDialog::setImage(const QImage &image) } else { *(this->image) = image; } - imagePreviewLabel->setPixmap(QPixmap::fromImage(this->image->scaled(previewSize))); + + QPixmap pixmap; + if (image.width() > width || image.height() > width) { + pixmap = QPixmap::fromImage(this->image->scaled(previewSize, Qt::KeepAspectRatio)); + } else { + pixmap = QPixmap::fromImage(*(this->image)); + } + + imagePreviewLabel->setPixmap(pixmap); imagePreviewLabel->setVisible(true); enableOkButton(); }