forked from qt-creator/qt-creator
Add extension property to FileNameValidatingLineEdit
Does nothing if extension is empty. The extension check is case sensitive. Change-Id: I58f89eb57d53146dae95e58d77cd8b47826b8f42 Reviewed-on: http://codereview.qt-project.org/5163 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
This commit is contained in:
committed by
Alessandro Portale
parent
71cbd765b2
commit
dfbdf28703
@@ -68,8 +68,7 @@ static const QRegExp &windowsDeviceSubDirPattern()
|
|||||||
// ----------- FileNameValidatingLineEdit
|
// ----------- FileNameValidatingLineEdit
|
||||||
FileNameValidatingLineEdit::FileNameValidatingLineEdit(QWidget *parent) :
|
FileNameValidatingLineEdit::FileNameValidatingLineEdit(QWidget *parent) :
|
||||||
BaseValidatingLineEdit(parent),
|
BaseValidatingLineEdit(parent),
|
||||||
m_allowDirectories(false),
|
m_allowDirectories(false)
|
||||||
m_unused(0)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +142,46 @@ bool FileNameValidatingLineEdit::validateFileName(const QString &name,
|
|||||||
|
|
||||||
bool FileNameValidatingLineEdit::validate(const QString &value, QString *errorMessage) const
|
bool FileNameValidatingLineEdit::validate(const QString &value, QString *errorMessage) const
|
||||||
{
|
{
|
||||||
return validateFileName(value, m_allowDirectories, errorMessage);
|
return validateFileNameExtension(value, requiredExtensions(), errorMessage)
|
||||||
|
&& validateFileName(value, allowDirectories(), errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool FileNameValidatingLineEdit::validateFileNameExtension(const QString &fileName,
|
||||||
|
const QStringList &requiredExtensions,
|
||||||
|
QString *errorMessage)
|
||||||
|
{
|
||||||
|
// file extension
|
||||||
|
if (!requiredExtensions.isEmpty()) {
|
||||||
|
foreach (const QString &requiredExtension, requiredExtensions) {
|
||||||
|
QString extension = QLatin1String(".") + requiredExtension;
|
||||||
|
if (fileName.endsWith(extension, Qt::CaseSensitive) && extension.count() < fileName.count()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorMessage) {
|
||||||
|
if (requiredExtensions.count() == 1) {
|
||||||
|
*errorMessage = tr("File extension %1 is required:").arg(requiredExtensions.first());
|
||||||
|
} else {
|
||||||
|
*errorMessage = tr("File extensions %1 are required:").arg(requiredExtensions.join(", "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList FileNameValidatingLineEdit::requiredExtensions() const
|
||||||
|
{
|
||||||
|
return m_requiredExtensionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileNameValidatingLineEdit::setRequiredExtensions(const QStringList &extensions)
|
||||||
|
{
|
||||||
|
m_requiredExtensionList = extensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class QTCREATOR_UTILS_EXPORT FileNameValidatingLineEdit : public BaseValidatingL
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(bool allowDirectories READ allowDirectories WRITE setAllowDirectories)
|
Q_PROPERTY(bool allowDirectories READ allowDirectories WRITE setAllowDirectories)
|
||||||
|
Q_PROPERTY(QStringList requiredExtensions READ requiredExtensions WRITE setRequiredExtensions)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FileNameValidatingLineEdit(QWidget *parent = 0);
|
explicit FileNameValidatingLineEdit(QWidget *parent = 0);
|
||||||
@@ -49,6 +50,10 @@ public:
|
|||||||
bool allowDirectories = false,
|
bool allowDirectories = false,
|
||||||
QString *errorMessage = 0);
|
QString *errorMessage = 0);
|
||||||
|
|
||||||
|
static bool validateFileNameExtension(const QString &name,
|
||||||
|
const QStringList &requiredExtensions = QStringList(),
|
||||||
|
QString *errorMessage = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether entering directories is allowed. This will enable the user
|
* Sets whether entering directories is allowed. This will enable the user
|
||||||
* to enter slashes in the filename. Default is off.
|
* to enter slashes in the filename. Default is off.
|
||||||
@@ -56,12 +61,19 @@ public:
|
|||||||
bool allowDirectories() const;
|
bool allowDirectories() const;
|
||||||
void setAllowDirectories(bool v);
|
void setAllowDirectories(bool v);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a requred extension. If the extension is empty no extension is required.
|
||||||
|
* Default is empty.
|
||||||
|
*/
|
||||||
|
QStringList requiredExtensions() const;
|
||||||
|
void setRequiredExtensions(const QStringList &extensionList);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool validate(const QString &value, QString *errorMessage) const;
|
virtual bool validate(const QString &value, QString *errorMessage) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_allowDirectories;
|
bool m_allowDirectories;
|
||||||
void *m_unused;
|
QStringList m_requiredExtensionList;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
|||||||
Reference in New Issue
Block a user