limitable_input_dialog.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <QDialog>
  5. class QDialogButtonBox;
  6. class QLabel;
  7. class QLineEdit;
  8. /// A QDialog that functions similarly to QInputDialog, however, it allows
  9. /// restricting the minimum and total number of characters that can be entered.
  10. class LimitableInputDialog final : public QDialog {
  11. Q_OBJECT
  12. public:
  13. explicit LimitableInputDialog(QWidget* parent = nullptr);
  14. ~LimitableInputDialog() override;
  15. enum class InputLimiter {
  16. None,
  17. Filesystem,
  18. };
  19. static QString GetText(QWidget* parent, const QString& title, const QString& text,
  20. int min_character_limit, int max_character_limit,
  21. InputLimiter limit_type = InputLimiter::None);
  22. private:
  23. void CreateUI();
  24. void ConnectEvents();
  25. void RemoveInvalidCharacters();
  26. QString invalid_characters;
  27. QLabel* text_label;
  28. QLineEdit* text_entry;
  29. QLabel* text_label_invalid;
  30. QDialogButtonBox* buttons;
  31. };