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