Browse Source
Merge pull request #1615 from lioncash/input
Merge pull request #1615 from lioncash/input
configure_system: Contrain profile usernames to 32 characterspull/15/merge
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 113 additions and 25 deletions
-
3src/core/hle/service/acc/profile_manager.h
-
2src/yuzu/CMakeLists.txt
-
43src/yuzu/configuration/configure_system.cpp
-
59src/yuzu/util/limitable_input_dialog.cpp
-
31src/yuzu/util/limitable_input_dialog.h
@ -0,0 +1,59 @@ |
|||
// Copyright 2018 yuzu Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include <QDialogButtonBox>
|
|||
#include <QLabel>
|
|||
#include <QLineEdit>
|
|||
#include <QPushButton>
|
|||
#include <QVBoxLayout>
|
|||
#include "yuzu/util/limitable_input_dialog.h"
|
|||
|
|||
LimitableInputDialog::LimitableInputDialog(QWidget* parent) : QDialog{parent} { |
|||
CreateUI(); |
|||
ConnectEvents(); |
|||
} |
|||
|
|||
LimitableInputDialog::~LimitableInputDialog() = default; |
|||
|
|||
void LimitableInputDialog::CreateUI() { |
|||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); |
|||
|
|||
text_label = new QLabel(this); |
|||
text_entry = new QLineEdit(this); |
|||
buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); |
|||
|
|||
auto* const layout = new QVBoxLayout; |
|||
layout->addWidget(text_label); |
|||
layout->addWidget(text_entry); |
|||
layout->addWidget(buttons); |
|||
|
|||
setLayout(layout); |
|||
} |
|||
|
|||
void LimitableInputDialog::ConnectEvents() { |
|||
connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept); |
|||
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); |
|||
} |
|||
|
|||
QString LimitableInputDialog::GetText(QWidget* parent, const QString& title, const QString& text, |
|||
int min_character_limit, int max_character_limit) { |
|||
Q_ASSERT(min_character_limit <= max_character_limit); |
|||
|
|||
LimitableInputDialog dialog{parent}; |
|||
dialog.setWindowTitle(title); |
|||
dialog.text_label->setText(text); |
|||
dialog.text_entry->setMaxLength(max_character_limit); |
|||
|
|||
auto* const ok_button = dialog.buttons->button(QDialogButtonBox::Ok); |
|||
ok_button->setEnabled(false); |
|||
connect(dialog.text_entry, &QLineEdit::textEdited, [&](const QString& new_text) { |
|||
ok_button->setEnabled(new_text.length() >= min_character_limit); |
|||
}); |
|||
|
|||
if (dialog.exec() != QDialog::Accepted) { |
|||
return {}; |
|||
} |
|||
|
|||
return dialog.text_entry->text(); |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
// Copyright 2018 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#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; |
|||
|
|||
static QString GetText(QWidget* parent, const QString& title, const QString& text, |
|||
int min_character_limit, int max_character_limit); |
|||
|
|||
private: |
|||
void CreateUI(); |
|||
void ConnectEvents(); |
|||
|
|||
QLabel* text_label; |
|||
QLineEdit* text_entry; |
|||
QDialogButtonBox* buttons; |
|||
}; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue