#include #include "input_field.hpp" #include "qt_window.hpp" InputDialog::InputDialog(QString prompt_text, QWidget *parent): QDialog(parent) { layout = new QVBoxLayout(); layout->setContentsMargins(50, 50, 50, 50); layout->setSpacing(20); // build header QHBoxLayout *header_layout = new QHBoxLayout(); label = new QLabel(prompt_text, this); label->setStyleSheet(R"(font-size: 75px; font-weight: 500;)"); header_layout->addWidget(label, 1, Qt::AlignLeft); QPushButton* cancel_btn = new QPushButton("Cancel"); cancel_btn->setStyleSheet(R"( padding: 30px; padding-right: 45px; padding-left: 45px; border-radius: 7px; font-size: 45px; background-color: #444444; )"); header_layout->addWidget(cancel_btn, 0, Qt::AlignRight); QObject::connect(cancel_btn, SIGNAL(released()), this, SLOT(reject())); layout->addLayout(header_layout); // text box layout->addSpacing(20); line = new QLineEdit(); line->setStyleSheet(R"( border: none; background-color: #444444; font-size: 80px; font-weight: 500; padding: 10px; )"); layout->addWidget(line, 1, Qt::AlignTop); k = new Keyboard(this); QObject::connect(k, SIGNAL(emitButton(QString)), this, SLOT(handleInput(QString))); layout->addWidget(k, 2, Qt::AlignBottom); setStyleSheet(R"( * { color: white; background-color: black; } )"); setLayout(layout); } QString InputDialog::getText(const QString prompt) { InputDialog d = InputDialog(prompt); const int ret = d.exec(); if (ret) { return d.text(); } else { return QString(); } } QString InputDialog::text() { return line->text(); } int InputDialog::exec() { setMainWindow(this); return QDialog::exec(); } void InputDialog::handleInput(QString s) { if (!QString::compare(s,"⌫")) { line->backspace(); } if (!QString::compare(s,"⏎")) { done(QDialog::Accepted); } QVector control_buttons {"⇧", "↑", "ABC", "⏎", "#+=", "⌫", "123"}; for(QString c : control_buttons) { if (!QString::compare(s, c)) { return; } } line->insert(s.left(1)); }