File size: 1,600 Bytes
034d0a2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | // Copyright 2018 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <QDialog>
#include <QValidator>
#include "core/frontend/applets/swkbd.h"
class QDialogButtonBox;
class QLabel;
class QLineEdit;
class QVBoxLayout;
class QtKeyboard;
class QtKeyboardValidator final : public QValidator {
public:
explicit QtKeyboardValidator(QtKeyboard* keyboard);
State validate(QString& input, int& pos) const override;
private:
QtKeyboard* keyboard;
};
class QtKeyboardDialog final : public QDialog {
Q_OBJECT
public:
QtKeyboardDialog(QWidget* parent, QtKeyboard* keyboard);
void Submit();
private:
void HandleValidationError(Frontend::ValidationError error);
QDialogButtonBox* buttons;
QLabel* label;
QLineEdit* line_edit;
QVBoxLayout* layout;
QtKeyboard* keyboard;
QString text;
u8 button;
friend class QtKeyboard;
};
class QtKeyboard final : public QObject, public Frontend::SoftwareKeyboard {
Q_OBJECT
public:
explicit QtKeyboard(QWidget& parent);
void Execute(const Frontend::KeyboardConfig& config) override;
void ShowError(const std::string& error) override;
private:
Q_INVOKABLE void OpenInputDialog();
Q_INVOKABLE void ShowErrorDialog(QString message);
/// Index of the buttons
u8 ok_id;
static constexpr u8 forgot_id = 1;
static constexpr u8 cancel_id = 0;
QWidget& parent;
std::string result_text;
int result_button;
friend class QtKeyboardDialog;
friend class QtKeyboardValidator;
};
|