summaryrefslogtreecommitdiff
path: root/src/yuzu/applets/software_keyboard.h
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-11-09 20:13:15 -0500
committerZach Hilman <zachhilman@gmail.com>2018-11-18 10:53:47 -0500
commit5454494adbfad3148e75b45653a255004ca989b3 (patch)
tree6767a10a20d2ade594354c9d6918cf4948d3f5a8 /src/yuzu/applets/software_keyboard.h
parentde16c1e45326a5bb587a2c270b9b39042b245f7c (diff)
qt/applets: Provide Qt frontend implementation of software keyboard
Implements all of the features of the keyboard, including length, default text, character validation, and UTF-16 character support.
Diffstat (limited to 'src/yuzu/applets/software_keyboard.h')
-rw-r--r--src/yuzu/applets/software_keyboard.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/yuzu/applets/software_keyboard.h b/src/yuzu/applets/software_keyboard.h
new file mode 100644
index 0000000000..2a18419db4
--- /dev/null
+++ b/src/yuzu/applets/software_keyboard.h
@@ -0,0 +1,62 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+#include <QDialog>
+#include <QValidator>
+#include "common/assert.h"
+#include "core/frontend/applets/software_keyboard.h"
+
+class QDialogButtonBox;
+class QLabel;
+class QLineEdit;
+class QVBoxLayout;
+class QtSoftwareKeyboard;
+
+class QtSoftwareKeyboardValidator final : public QValidator {
+public:
+ explicit QtSoftwareKeyboardValidator(Frontend::SoftwareKeyboardApplet::Parameters parameters);
+ State validate(QString&, int&) const override;
+
+private:
+ Frontend::SoftwareKeyboardApplet::Parameters parameters;
+};
+
+class QtSoftwareKeyboardDialog final : public QDialog {
+ Q_OBJECT
+
+public:
+ QtSoftwareKeyboardDialog(QWidget* parent,
+ Frontend::SoftwareKeyboardApplet::Parameters parameters);
+ void Submit();
+ void Reject();
+
+private:
+ bool ok = false;
+ std::u16string text;
+
+ QDialogButtonBox* buttons;
+ QLabel* header_label;
+ QLabel* sub_label;
+ QLabel* guide_label;
+ QLineEdit* line_edit;
+ QVBoxLayout* layout;
+
+ Frontend::SoftwareKeyboardApplet::Parameters parameters;
+
+ friend class QtSoftwareKeyboard;
+};
+
+class QtSoftwareKeyboard final : public QObject, public Frontend::SoftwareKeyboardApplet {
+public:
+ explicit QtSoftwareKeyboard(QWidget& parent);
+ bool GetText(Parameters parameters, std::u16string& text) override;
+
+ ~QtSoftwareKeyboard() {
+ UNREACHABLE();
+ }
+
+private:
+ QWidget& parent;
+};