mirror of https://github.com/OpenMW/openmw.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.9 KiB
C++
71 lines
1.9 KiB
C++
#include "textinputdialog.hpp"
|
|
|
|
#include <QApplication>
|
|
#include <QDialogButtonBox>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
#include <QVBoxLayout>
|
|
#include <QValidator>
|
|
|
|
Launcher::TextInputDialog::TextInputDialog(const QString& title, const QString& text, QWidget* parent)
|
|
: QDialog(parent)
|
|
{
|
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
mButtonBox = new QDialogButtonBox(this);
|
|
mButtonBox->addButton(QDialogButtonBox::Ok);
|
|
mButtonBox->addButton(QDialogButtonBox::Cancel);
|
|
mButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
|
|
auto* label = new QLabel(this);
|
|
label->setText(text);
|
|
|
|
// Line edit
|
|
QValidator* validator = new QRegularExpressionValidator(QRegularExpression("^[a-zA-Z0-9_]*$"), this);
|
|
mLineEdit = new LineEdit(this);
|
|
mLineEdit->setValidator(validator);
|
|
mLineEdit->setCompleter(nullptr);
|
|
|
|
auto* dialogLayout = new QVBoxLayout(this);
|
|
dialogLayout->addWidget(label);
|
|
dialogLayout->addWidget(mLineEdit);
|
|
dialogLayout->addWidget(mButtonBox);
|
|
|
|
// Messageboxes on mac have no title
|
|
#ifndef Q_OS_MAC
|
|
setWindowTitle(title);
|
|
#else
|
|
Q_UNUSED(title);
|
|
#endif
|
|
|
|
setModal(true);
|
|
|
|
connect(mButtonBox, &QDialogButtonBox::accepted, this, &TextInputDialog::accept);
|
|
connect(mButtonBox, &QDialogButtonBox::rejected, this, &TextInputDialog::reject);
|
|
}
|
|
|
|
int Launcher::TextInputDialog::exec()
|
|
{
|
|
mLineEdit->clear();
|
|
mLineEdit->setFocus();
|
|
return QDialog::exec();
|
|
}
|
|
|
|
void Launcher::TextInputDialog::setOkButtonEnabled(bool enabled)
|
|
{
|
|
QPushButton* okButton = mButtonBox->button(QDialogButtonBox::Ok);
|
|
okButton->setEnabled(enabled);
|
|
|
|
QPalette palette;
|
|
palette.setColor(QPalette::Text, Qt::red);
|
|
|
|
if (enabled)
|
|
{
|
|
mLineEdit->setPalette(QApplication::palette());
|
|
}
|
|
else
|
|
{
|
|
// Existing profile name, make the text red
|
|
mLineEdit->setPalette(palette);
|
|
}
|
|
}
|