From 34aa9e00837d6953fb9e6290c53e756d19348fa2 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Tue, 17 Oct 2017 19:49:48 +0800 Subject: [PATCH] use empty title by default when inserting new image --- src/dialog/vinsertimagedialog.cpp | 31 ++++++++++++++++++++----------- src/dialog/vinsertimagedialog.h | 2 +- src/utils/vutils.cpp | 10 ++++++---- src/vmdeditoperations.cpp | 2 +- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/dialog/vinsertimagedialog.cpp b/src/dialog/vinsertimagedialog.cpp index ff0a724f..214d8258 100644 --- a/src/dialog/vinsertimagedialog.cpp +++ b/src/dialog/vinsertimagedialog.cpp @@ -13,13 +13,13 @@ VInsertImageDialog::VInsertImageDialog(const QString &title, const QString &defa setupUI(); connect(m_imageTitleEdit, &QLineEdit::textChanged, - this, &VInsertImageDialog::enableOkButton); + this, &VInsertImageDialog::handleInputChanged); connect(pathEdit, &QLineEdit::textChanged, - this, &VInsertImageDialog::enableOkButton); + this, &VInsertImageDialog::handleInputChanged); connect(browseBtn, &QPushButton::clicked, this, &VInsertImageDialog::handleBrowseBtnClicked); - enableOkButton(); + handleInputChanged(); } VInsertImageDialog::~VInsertImageDialog() @@ -74,17 +74,23 @@ void VInsertImageDialog::setupUI() m_imageTitleEdit->setFocus(); } -void VInsertImageDialog::enableOkButton() +void VInsertImageDialog::handleInputChanged() { - QString title = m_imageTitleEdit->getEvaluatedText(); - bool titleOk = !title.isEmpty(); - if (titleOk) { - QRegExp reg(VUtils::c_imageTitleRegExp); - titleOk = reg.exactMatch(title); + bool pathOk = true; + if (pathEdit->isVisible() && !pathEdit->isReadOnly()) { + QString path = pathEdit->text(); + if (path.isEmpty() + || !VUtils::checkPathLegal(path)) { + pathOk = false; + } } + QString title = m_imageTitleEdit->getEvaluatedText(); + QRegExp reg(VUtils::c_imageTitleRegExp); + bool titleOk = reg.exactMatch(title); + QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok); - okBtn->setEnabled(titleOk); + okBtn->setEnabled(pathOk && titleOk); } QString VInsertImageDialog::getImageTitleInput() const @@ -137,7 +143,8 @@ void VInsertImageDialog::setImage(const QImage &image) imagePreviewLabel->setPixmap(pixmap); imagePreviewLabel->setVisible(true); - enableOkButton(); + + handleInputChanged(); } void VInsertImageDialog::setBrowseable(bool browseable, bool visible) @@ -148,6 +155,8 @@ void VInsertImageDialog::setBrowseable(bool browseable, bool visible) pathLabel->setVisible(visible); pathEdit->setVisible(visible); browseBtn->setVisible(visible); + + handleInputChanged(); } void VInsertImageDialog::imageDownloaded(const QByteArray &data) diff --git a/src/dialog/vinsertimagedialog.h b/src/dialog/vinsertimagedialog.h index 670f50d1..65855af0 100644 --- a/src/dialog/vinsertimagedialog.h +++ b/src/dialog/vinsertimagedialog.h @@ -31,7 +31,7 @@ public slots: void imageDownloaded(const QByteArray &data); private slots: - void enableOkButton(); + void handleInputChanged(); void handleBrowseBtnClicked(); private: diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index 95f11136..fc69cb66 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -33,7 +33,7 @@ QVector> VUtils::s_availableLanguages; const QString VUtils::c_imageLinkRegExp = QString("\\!\\[([^\\]]*)\\]\\(([^\\)\"]+)\\s*(\"(\\\\.|[^\"\\)])*\")?\\s*\\)"); -const QString VUtils::c_imageTitleRegExp = QString("[\\w\\(\\)@#%\\*\\-\\+=\\?<>\\,\\.\\s]+"); +const QString VUtils::c_imageTitleRegExp = QString("[\\w\\(\\)@#%\\*\\-\\+=\\?<>\\,\\.\\s]*"); const QString VUtils::c_fileNameRegExp = QString("[^\\\\/:\\*\\?\"<>\\|]*"); @@ -106,10 +106,10 @@ QRgb VUtils::QRgbFromString(const QString &str) return QRgb(); } -QString VUtils::generateImageFileName(const QString &path, const QString &title, +QString VUtils::generateImageFileName(const QString &path, + const QString &title, const QString &format) { - Q_ASSERT(!title.isEmpty()); QRegExp regExp("\\W"); QString baseName(title.toLower()); @@ -119,7 +119,9 @@ QString VUtils::generateImageFileName(const QString &path, const QString &title, // Constrain the length of the name. baseName.truncate(10); - baseName.prepend('_'); + if (!baseName.isEmpty()) { + baseName.prepend('_'); + } // Add current time and random number to make the name be most likely unique baseName = baseName + '_' + QString::number(QDateTime::currentDateTime().toTime_t()); diff --git a/src/vmdeditoperations.cpp b/src/vmdeditoperations.cpp index 9dbd0079..4b2ec903 100644 --- a/src/vmdeditoperations.cpp +++ b/src/vmdeditoperations.cpp @@ -26,7 +26,7 @@ extern VConfigManager *g_config; -const QString VMdEditOperations::c_defaultImageTitle = "image"; +const QString VMdEditOperations::c_defaultImageTitle = ""; VMdEditOperations::VMdEditOperations(VEdit *p_editor, VFile *p_file) : VEditOperations(p_editor, p_file), m_autoIndentPos(-1)