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