aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils')
-rw-r--r--src/libs/utils/ipaddresslineedit.cpp51
-rw-r--r--src/libs/utils/ipaddresslineedit.h14
2 files changed, 24 insertions, 41 deletions
diff --git a/src/libs/utils/ipaddresslineedit.cpp b/src/libs/utils/ipaddresslineedit.cpp
index ebc255b9cbb..e85d59d9e2a 100644
--- a/src/libs/utils/ipaddresslineedit.cpp
+++ b/src/libs/utils/ipaddresslineedit.cpp
@@ -54,20 +54,16 @@ public:
QValidator *m_ipAddressValidator;
QColor m_validColor;
- bool m_addressIsValid;
};
-IpAddressLineEditPrivate::IpAddressLineEditPrivate() :
- m_addressIsValid(true)
+IpAddressLineEditPrivate::IpAddressLineEditPrivate()
{
}
IpAddressLineEdit::IpAddressLineEdit(QWidget* parent) :
- QLineEdit(parent),
+ BaseValidatingLineEdit(parent),
m_d(new IpAddressLineEditPrivate())
{
- m_d->m_validColor = palette().color(QPalette::Text);
-
const char * ipAddressRegExpPattern = "^\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
@@ -76,8 +72,6 @@ IpAddressLineEdit::IpAddressLineEdit(QWidget* parent) :
QRegExp ipAddressRegExp(ipAddressRegExpPattern);
m_d->m_ipAddressValidator = new QRegExpValidator(ipAddressRegExp, this);
-
- connect(this, SIGNAL(textChanged(QString)), this, SLOT(validateAddress(QString)));
}
IpAddressLineEdit::~IpAddressLineEdit()
@@ -85,36 +79,25 @@ IpAddressLineEdit::~IpAddressLineEdit()
delete m_d;
}
-bool IpAddressLineEdit::isValid() const
-{
- return m_d->m_addressIsValid;
-}
-
-void IpAddressLineEdit::validateAddress(const QString &string)
+bool IpAddressLineEdit::validate(const QString &value, QString *errorMessage) const
{
- QString copy = string;
+ QString copy = value;
int offset = 0;
bool isValid = m_d->m_ipAddressValidator->validate(copy, offset) == QValidator::Acceptable;
-
- if (isValid != m_d->m_addressIsValid) {
- if (isValid) {
- QPalette pal(palette());
- pal.setColor(QPalette::Text, m_d->m_validColor);
- setPalette(pal);
- emit validAddressChanged(copy);
- } else {
- QPalette pal(palette());
- pal.setColor(QPalette::Text, Qt::red);
- setPalette(pal);
- setToolTip(tr("The IP address is not valid."));
- }
- m_d->m_addressIsValid = isValid;
- } else {
- if (isValid)
- emit validAddressChanged(copy);
- else
- emit invalidAddressChanged();
+ if (!isValid) {
+ *errorMessage = tr("The IP address is not valid.");
+ return false;
}
+ return true;
+}
+
+void IpAddressLineEdit::slotChanged(const QString &t)
+{
+ Utils::BaseValidatingLineEdit::slotChanged(t);
+ if (isValid())
+ emit validAddressChanged(t);
+ else
+ emit invalidAddressChanged();
}
} // namespace Utils
diff --git a/src/libs/utils/ipaddresslineedit.h b/src/libs/utils/ipaddresslineedit.h
index 00decc74922..97119da9a95 100644
--- a/src/libs/utils/ipaddresslineedit.h
+++ b/src/libs/utils/ipaddresslineedit.h
@@ -35,28 +35,28 @@
#define IPADDRESSLINEEDIT_H
#include "utils_global.h"
-
-#include <QtGui/QLineEdit>
+#include "basevalidatinglineedit.h"
namespace Utils {
class IpAddressLineEditPrivate;
-class QTCREATOR_UTILS_EXPORT IpAddressLineEdit : public QLineEdit
+class QTCREATOR_UTILS_EXPORT IpAddressLineEdit : public Utils::BaseValidatingLineEdit
{
+ Q_DISABLE_COPY(IpAddressLineEdit)
Q_OBJECT
+
public:
explicit IpAddressLineEdit(QWidget* parent = 0);
virtual ~IpAddressLineEdit();
- bool isValid() const;
-
signals:
void validAddressChanged(const QString& address);
void invalidAddressChanged();
-private slots:
- void validateAddress(const QString &string);
+protected:
+ virtual bool validate(const QString &value, QString *errorMessage) const;
+ virtual void slotChanged(const QString &t);
private:
IpAddressLineEditPrivate *m_d;