From 1ed324fd20b9466feaf8d8670d0c146d7a383154 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Sun, 20 Nov 2016 23:16:10 +0800 Subject: [PATCH] regexp to validate image title and image name Signed-off-by: Le Tan --- src/dialog/vinsertimagedialog.cpp | 5 +++++ src/utils/vutils.cpp | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/dialog/vinsertimagedialog.cpp b/src/dialog/vinsertimagedialog.cpp index 111a4cd0..398ccc2d 100644 --- a/src/dialog/vinsertimagedialog.cpp +++ b/src/dialog/vinsertimagedialog.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include "vinsertimagedialog.h" VInsertImageDialog::VInsertImageDialog(const QString &title, const QString &defaultImageTitle, @@ -39,6 +41,9 @@ void VInsertImageDialog::setupUI() imageTitleEdit = new QLineEdit(defaultImageTitle); imageTitleEdit->selectAll(); imageTitleLabel->setBuddy(imageTitleEdit); + QRegExp regExp("[\\w\\(\\)@#%\\*\\-\\+=\\?<>\\,\\.]+"); + QValidator *validator = new QRegExpValidator(regExp, this); + imageTitleEdit->setValidator(validator); okBtn = new QPushButton(tr("&OK")); okBtn->setDefault(true); diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index ffb03ae8..f6d5a509 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include @@ -68,13 +67,15 @@ QString VUtils::generateImageFileName(const QString &path, const QString &title, const QString &format) { Q_ASSERT(!title.isEmpty()); - QRegularExpression regExp("[^a-zA-Z0-9_]+"); + QRegExp regExp("\\W"); QString baseName(title.toLower()); - baseName.replace(regExp, "_"); + baseName.remove(regExp); baseName.prepend('_'); - // Add current time to make the name be most likely unique + // Add current time and random number to make the name be most likely unique baseName = baseName + '_' + QString::number(QDateTime::currentDateTime().toTime_t()); + baseName = baseName + '_' + QString::number(qrand()); + QString imageName = baseName + "." + format.toLower(); QString filePath = QDir(path).filePath(imageName); int index = 1;