diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-10-10 15:39:33 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-10-10 20:47:18 +0200 |
| commit | 7a7d9dc216ecf0bf7200666b479fb08c0edec834 (patch) | |
| tree | 30957e51979a26f5baaf54e0c3f193d9689fe92c /src/widgets/querydialog.cpp | |
| parent | 8cb79ee6711b3db3f138db6367752053f45efc17 (diff) | |
Replace QInputDialog with custom dialog for queriesquery-dialog
Recent commits allowed multi-line input while reusing the QInputDialog
object already defined by Kristall. However, QInputDialog lacks a way to
access its QPlainTextEdit directly, and therefore set the wrap mode.
Since QInputDialog does no wrapping, it is inconvenient for writing a
long text (think of social media sites such as BBS or Station).
Therefore, a custom QDialog-derived class, namely QueryDialog, has been
provided.
Diffstat (limited to 'src/widgets/querydialog.cpp')
| -rw-r--r-- | src/widgets/querydialog.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/widgets/querydialog.cpp b/src/widgets/querydialog.cpp new file mode 100644 index 0000000..467c4c2 --- /dev/null +++ b/src/widgets/querydialog.cpp @@ -0,0 +1,30 @@ +#include "widgets/querydialog.hpp" + +QueryDialog::QueryDialog(QWidget *parent) : + QDialog(parent), + mode(QLineEdit::Normal) +{ + ui.setupUi(this); + ui.lineEdit->setVisible(false); +} + +void QueryDialog::setLabelText(const QString &text) +{ + ui.query->setText(text); +} + +void QueryDialog::setTextEchoMode(QLineEdit::EchoMode mode) +{ + ui.text->setVisible(mode == QLineEdit::Normal); + ui.lineEdit->setVisible(mode != QLineEdit::Normal); + ui.lineEdit->setEchoMode(mode); + this->mode = mode; +} + +QString QueryDialog::textValue() +{ + if (mode == QLineEdit::Normal) + return ui.text->toPlainText(); + + return ui.lineEdit->text(); +} |
