From b6b73c3f82c745ae3c1be7e207e184ac98fa17ea Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 12 Nov 2018 20:12:07 +0800 Subject: [PATCH] editor: guess the image title from image path when inserting an image --- src/dialog/vinsertimagedialog.cpp | 19 +++++++++++++++++++ src/dialog/vinsertimagedialog.h | 2 ++ src/utils/vutils.cpp | 7 ++++++- src/vmdeditoperations.cpp | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/dialog/vinsertimagedialog.cpp b/src/dialog/vinsertimagedialog.cpp index aec80ba6..770699cf 100644 --- a/src/dialog/vinsertimagedialog.cpp +++ b/src/dialog/vinsertimagedialog.cpp @@ -31,6 +31,8 @@ VInsertImageDialog::VInsertImageDialog(const QString &p_title, fetchImageFromClipboard(); } + autoCompleteTitleFromPath(); + handleInputChanged(); } @@ -178,6 +180,8 @@ void VInsertImageDialog::handleBrowseBtnClicked() setPath(filePath); + autoCompleteTitleFromPath(); + m_imageTitleEdit->setFocus(); } @@ -341,3 +345,18 @@ int VInsertImageDialog::getOverridenWidth() const return 0; } + +void VInsertImageDialog::autoCompleteTitleFromPath() +{ + if (!m_imageTitleEdit->text().isEmpty()) { + return; + } + + QString imgPath = m_pathEdit->text(); + if (imgPath.isEmpty()) { + return; + } + + m_imageTitleEdit->setText(QFileInfo(imgPath).baseName()); + m_imageTitleEdit->selectAll(); +} diff --git a/src/dialog/vinsertimagedialog.h b/src/dialog/vinsertimagedialog.h index 8ab9f32c..8d4e7786 100644 --- a/src/dialog/vinsertimagedialog.h +++ b/src/dialog/vinsertimagedialog.h @@ -67,6 +67,8 @@ private: void setImageControlsVisible(bool p_visible); + void autoCompleteTitleFromPath(); + VMetaWordLineEdit *m_imageTitleEdit; VLineEdit *m_pathEdit; QPushButton *browseBtn; diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index 3c5b0c74..a54e44c8 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -1580,7 +1580,12 @@ QStringList VUtils::parseCombinedArgString(const QString &p_program) QImage VUtils::imageFromFile(const QString &p_filePath) { - QImage img; + QImage img(p_filePath); + if (!img.isNull()) { + return img; + } + + // @p_filePath may has a wrong suffix which indicates a wrong image format. QFile file(p_filePath); if (!file.open(QIODevice::ReadOnly)) { qWarning() << "fail to open image file" << p_filePath; diff --git a/src/vmdeditoperations.cpp b/src/vmdeditoperations.cpp index c83b6ee8..a2dccf0a 100644 --- a/src/vmdeditoperations.cpp +++ b/src/vmdeditoperations.cpp @@ -158,7 +158,7 @@ void VMdEditOperations::insertImageFromPath(const QString &p_title, p_urlInLink.clear(); // Make sure src image is valid. - if (QImage(p_srcImagePath).isNull()) { + if (VUtils::imageFromFile(p_srcImagePath).isNull()) { qWarning() << "fail to insert invalid source image" << p_srcImagePath; return; }