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; }