aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/querydialog.cpp
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-10 15:39:33 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-10 20:47:18 +0200
commit7a7d9dc216ecf0bf7200666b479fb08c0edec834 (patch)
tree30957e51979a26f5baaf54e0c3f193d9689fe92c /src/widgets/querydialog.cpp
parent8cb79ee6711b3db3f138db6367752053f45efc17 (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.cpp30
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();
+}