summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp
new file mode 100644
index 0000000..19727fe
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp
@@ -0,0 +1,94 @@
+#include "bugreportlogindialog.h"
+#include "ui_bugreportlogindialog.h"
+#include "uiutils.h"
+#include "services/bugreporter.h"
+#include "iconmanager.h"
+#include "common/widgetcover.h"
+#include <QPushButton>
+
+BugReportLoginDialog::BugReportLoginDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::BugReportLoginDialog)
+{
+ init();
+}
+
+BugReportLoginDialog::~BugReportLoginDialog()
+{
+ delete ui;
+}
+
+bool BugReportLoginDialog::isValid() const
+{
+ return validCredentials;
+}
+
+QString BugReportLoginDialog::getLogin() const
+{
+ return ui->loginEdit->text();
+}
+
+QString BugReportLoginDialog::getPassword() const
+{
+ return ui->passwordEdit->text();
+}
+
+void BugReportLoginDialog::init()
+{
+ ui->setupUi(this);
+ connect(ui->loginEdit, SIGNAL(textChanged(QString)), this, SLOT(credentialsChanged()));
+ connect(ui->passwordEdit, SIGNAL(textChanged(QString)), this, SLOT(credentialsChanged()));
+ connect(ui->validationButton, SIGNAL(clicked()), this, SLOT(remoteValidation()));
+ connect(BUGS, SIGNAL(credentialsValidationResult(bool,QString)), this, SLOT(remoteValidationResult(bool,QString)));
+
+ widgetCover = new WidgetCover(this);
+ widgetCover->initWithInterruptContainer(tr("Abort"));
+ connect(widgetCover, SIGNAL(cancelClicked()), this, SLOT(abortRemoteValidation()));
+
+ validate();
+}
+
+void BugReportLoginDialog::credentialsChanged()
+{
+ validCredentials = false;
+ validate();
+}
+
+void BugReportLoginDialog::validate()
+{
+ QString login = ui->loginEdit->text();
+ QString pass = ui->passwordEdit->text();
+
+ bool loginOk = login.size() >= 2;
+ bool passOk = pass.size() >= 5;
+
+ setValidState(ui->loginEdit, loginOk, tr("A login must be at least 2 characters long."));
+ setValidState(ui->passwordEdit, passOk, tr("A password must be at least 5 characters long."));
+
+ bool credentialsOk = loginOk && passOk;
+ ui->validationButton->setEnabled(credentialsOk);
+ ui->validationLabel->setEnabled(credentialsOk);
+
+ bool valid = credentialsOk && validCredentials;
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(valid);
+}
+
+void BugReportLoginDialog::abortRemoteValidation()
+{
+ BUGS->abortCredentialsValidation();
+}
+
+void BugReportLoginDialog::remoteValidation()
+{
+ widgetCover->show();
+ BUGS->validateBugReportCredentials(ui->loginEdit->text(), ui->passwordEdit->text());
+}
+
+void BugReportLoginDialog::remoteValidationResult(bool success, const QString& errorMessage)
+{
+ validCredentials = success;
+ ui->validationButton->setIcon(success ? ICONS.TEST_CONN_OK : ICONS.TEST_CONN_ERROR);
+ ui->validationLabel->setText(success ? tr("Valid") : errorMessage);
+ validate();
+ widgetCover->hide();
+}