diff --git a/include/InputValidator.h b/include/InputValidator.h index feeaf70a..347ded9b 100644 --- a/include/InputValidator.h +++ b/include/InputValidator.h @@ -15,8 +15,8 @@ * along with this program. If not, see . */ -#ifndef MATRIXIDVALIDATOR_H -#define MATRIXIDVALIDATOR_H +#ifndef MATRIX_INPUT_VALIDATOR_H +#define MATRIX_INPUT_VALIDATOR_H #include #include @@ -24,26 +24,11 @@ class InputValidator { public: - InputValidator(QObject *parent = 0); - // Validators for the different types of input. - QRegExpValidator *id_; - QRegExpValidator *localpart_; - QRegExpValidator *password_; - QRegExpValidator *domain_; - -private: - // Regular expression used to validate the whole matrix id. - const QRegExp matrix_id_; - - // Regular expressino to validate the matrix localpart. - const QRegExp matrix_localpart_; - - // Regular expression to validate a password for a matrix account. - const QRegExp matrix_password_; - - // Regular expression to validate a domain name. - const QRegExp server_domain_; + static QRegExpValidator Id; + static QRegExpValidator Localpart; + static QRegExpValidator Password; + static QRegExpValidator Domain; }; -#endif // MATRIXIDVALIDATOR_H +#endif // MATRIX_INPUT_VALIDATOR_H diff --git a/include/LoginPage.h b/include/LoginPage.h index 8a44ef7a..ccd40072 100644 --- a/include/LoginPage.h +++ b/include/LoginPage.h @@ -25,7 +25,6 @@ #include #include "FlatButton.h" -#include "InputValidator.h" #include "LoginSettings.h" #include "MatrixClient.h" #include "OverlayModal.h" @@ -84,8 +83,6 @@ private: LoginSettings *login_settings_; QString custom_domain_; - InputValidator *matrix_id_validator_; - // Matrix client API provider. QSharedPointer client_; }; diff --git a/include/RegisterPage.h b/include/RegisterPage.h index 578ff902..9ac550bf 100644 --- a/include/RegisterPage.h +++ b/include/RegisterPage.h @@ -26,7 +26,6 @@ #include "Avatar.h" #include "FlatButton.h" -#include "InputValidator.h" #include "MatrixClient.h" #include "RaisedButton.h" #include "TextField.h" @@ -71,8 +70,6 @@ private: TextField *password_confirmation_; TextField *server_input_; - InputValidator *validator_; - // Matrix client API provider. QSharedPointer client_; }; diff --git a/src/InputValidator.cc b/src/InputValidator.cc index 6ef8f6e5..2f24b3d9 100644 --- a/src/InputValidator.cc +++ b/src/InputValidator.cc @@ -17,14 +17,12 @@ #include "InputValidator.h" -InputValidator::InputValidator(QObject *parent) - : matrix_id_("@[A-Za-z0-9._%+-]+:[A-Za-z0-9.-]{1,126}\\.[A-Za-z]{1,63}") - , matrix_localpart_("[A-za-z0-9._%+-]{3,}") - , matrix_password_(".{8,}") - , server_domain_("(?!\\-)(?:[a-zA-Z\\d\\-]{0,62}[a-zA-Z\\d]\\.){1,126}(?!\\d+)[a-zA-Z\\d]{1,63}") -{ - id_ = new QRegExpValidator(matrix_id_, parent); - localpart_ = new QRegExpValidator(matrix_localpart_, parent); - password_ = new QRegExpValidator(matrix_password_, parent); - domain_ = new QRegExpValidator(server_domain_, parent); -} +const QRegExp MXID_REGEX("@[A-Za-z0-9._%+-]+:[A-Za-z0-9.-]{1,126}\\.[A-Za-z]{1,63}"); +const QRegExp LOCALPART_REGEX("[A-za-z0-9._%+-]{3,}"); +const QRegExp PASSWORD_REGEX(".{8,}"); +const QRegExp DOMAIN_REGEX("(?!\\-)(?:[a-zA-Z\\d\\-]{0,62}[a-zA-Z\\d]\\.){1,126}(?!\\d+)[a-zA-Z\\d]{1,63}"); + +QRegExpValidator InputValidator::Id(MXID_REGEX); +QRegExpValidator InputValidator::Localpart(LOCALPART_REGEX); +QRegExpValidator InputValidator::Password(PASSWORD_REGEX); +QRegExpValidator InputValidator::Domain(DOMAIN_REGEX); diff --git a/src/LoginPage.cc b/src/LoginPage.cc index 09cfb82c..4c63820c 100644 --- a/src/LoginPage.cc +++ b/src/LoginPage.cc @@ -17,6 +17,7 @@ #include +#include "InputValidator.h" #include "LoginPage.h" LoginPage::LoginPage(QSharedPointer client, QWidget *parent) @@ -25,8 +26,6 @@ LoginPage::LoginPage(QSharedPointer client, QWidget *parent) , login_settings_{nullptr} , client_{client} { - matrix_id_validator_ = new InputValidator(this); - top_layout_ = new QVBoxLayout(); top_bar_layout_ = new QHBoxLayout(); @@ -133,7 +132,7 @@ LoginPage::LoginPage(QSharedPointer client, QWidget *parent) connect(client_.data(), SIGNAL(loginError(QString)), this, SLOT(loginError(QString))); connect(advanced_settings_button_, SIGNAL(clicked()), this, SLOT(showSettingsModal())); - matrixid_input_->setValidator(matrix_id_validator_->id_); + matrixid_input_->setValidator(&InputValidator::Id); } void LoginPage::loginError(QString error) diff --git a/src/RegisterPage.cc b/src/RegisterPage.cc index b7a12f4a..f4c35f2e 100644 --- a/src/RegisterPage.cc +++ b/src/RegisterPage.cc @@ -18,11 +18,11 @@ #include #include +#include "InputValidator.h" #include "RegisterPage.h" RegisterPage::RegisterPage(QSharedPointer client, QWidget *parent) : QWidget(parent) - , validator_(new InputValidator(parent)) , client_(client) { top_layout_ = new QVBoxLayout(); @@ -132,9 +132,9 @@ RegisterPage::RegisterPage(QSharedPointer client, QWidget *parent) connect(server_input_, SIGNAL(returnPressed()), register_button_, SLOT(click())); connect(client_.data(), SIGNAL(registerError(const QString &)), this, SLOT(registerError(const QString &))); - username_input_->setValidator(validator_->localpart_); - password_input_->setValidator(validator_->password_); - server_input_->setValidator(validator_->domain_); + username_input_->setValidator(&InputValidator::Localpart); + password_input_->setValidator(&InputValidator::Password); + server_input_->setValidator(&InputValidator::Domain); setLayout(top_layout_); }