1 #include "inputdialog.h"
2 #include "ui_inputdialog.h"
3 
InputDialog(QString prompt,QString title,const std::function<bool (QString)> & _validation,QWidget * parent)4 InputDialog::InputDialog(QString prompt, QString title, const std::function<bool (QString)> &_validation, QWidget *parent) :
5     QDialog(parent),
6     ui(new Ui::InputDialog),
7     validation(_validation)
8 {
9     ui->setupUi(this);
10     setWindowTitle(title);
11     ui->messageLabel->setText(prompt);
12 
13     connect(ui->okButton, SIGNAL(clicked()),
14             this, SLOT(accept()));
15     connect(ui->cancelButton, SIGNAL(clicked()),
16             this, SLOT(reject()));
17     connect(ui->inputLineEdit, SIGNAL(textChanged(QString)),
18             this, SLOT(validate(QString)));
19 }
20 
~InputDialog()21 InputDialog::~InputDialog()
22 {
23     delete ui;
24 }
25 
getInput(QString prompt,QString title,const std::function<bool (QString)> & validation,QWidget * parent)26 QString InputDialog::getInput(QString prompt, QString title, const std::function<bool (QString)> &validation, QWidget *parent)
27 {
28     InputDialog dialog(prompt, title, validation, parent);
29     if(dialog.exec() == QDialog::Accepted)
30         return dialog.ui->inputLineEdit->text();
31     else
32         return "";
33 }
34 
validate(QString input)35 void InputDialog::validate(QString input)
36 {
37     ui->okButton->setEnabled(input != "" && validation(input));
38 }
39