diff options
author | Zephyron <zephyron@citron-emu.org> | 2024-12-31 16:19:25 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2024-12-31 16:19:25 +1000 |
commit | 9427e27e24a7135880ee2881c3c44988e174b41a (patch) | |
tree | 83f0062a35be144f6b162eaa823c5b3c7620146e /src/citron/util/limitable_input_dialog.h | |
parent | b35ae725d20960411e8588b11c12a2d55f86c9d0 (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.h | 40 |
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; +}; |