summaryrefslogtreecommitdiff
path: root/src/citron/util/limitable_input_dialog.h
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
committerZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
commit9427e27e24a7135880ee2881c3c44988e174b41a (patch)
tree83f0062a35be144f6b162eaa823c5b3c7620146e /src/citron/util/limitable_input_dialog.h
parentb35ae725d20960411e8588b11c12a2d55f86c9d0 (diff)
chore: update project branding to citron
Diffstat (limited to 'src/citron/util/limitable_input_dialog.h')
-rw-r--r--src/citron/util/limitable_input_dialog.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/citron/util/limitable_input_dialog.h b/src/citron/util/limitable_input_dialog.h
new file mode 100644
index 000000000..f261f1a0f
--- /dev/null
+++ b/src/citron/util/limitable_input_dialog.h
@@ -0,0 +1,40 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <QDialog>
+
+class QDialogButtonBox;
+class QLabel;
+class QLineEdit;
+
+/// A QDialog that functions similarly to QInputDialog, however, it allows
+/// restricting the minimum and total number of characters that can be entered.
+class LimitableInputDialog final : public QDialog {
+ Q_OBJECT
+public:
+ explicit LimitableInputDialog(QWidget* parent = nullptr);
+ ~LimitableInputDialog() override;
+
+ enum class InputLimiter {
+ None,
+ Filesystem,
+ };
+
+ static QString GetText(QWidget* parent, const QString& title, const QString& text,
+ int min_character_limit, int max_character_limit,
+ InputLimiter limit_type = InputLimiter::None);
+
+private:
+ void CreateUI();
+ void ConnectEvents();
+
+ void RemoveInvalidCharacters();
+ QString invalid_characters;
+
+ QLabel* text_label;
+ QLineEdit* text_entry;
+ QLabel* text_label_invalid;
+ QDialogButtonBox* buttons;
+};