citra-qt: Add base support for hotkey reconfiguration + UI (whole of PR citra-emu/citra#3786)

* Adds a new Hotkeys tab in the Controls group.
* Right click to reconfigure.
* See the original PR for more details & screenshots.
This commit is contained in:
Adityarup Laha 2018-05-22 21:30:36 +02:00
parent 95a57a2fe3
commit 5fa25fcf13
No known key found for this signature in database
GPG key ID: 1B24048A1F78845F
22 changed files with 559 additions and 306 deletions

View file

@ -13,15 +13,25 @@
ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry)
: QDialog(parent), ui(new Ui::ConfigureDialog) {
ui->setupUi(this);
ui->generalTab->PopulateHotkeyList(registry);
ui->hotkeysTab->Populate(registry);
this->PopulateSelectionList();
connect(ui->uiTab, &ConfigureUi::languageChanged, this, &ConfigureDialog::onLanguageChanged);
connect(ui->selectorList, &QListWidget::itemSelectionChanged, this,
&ConfigureDialog::UpdateVisibleTabs);
adjustSize();
ui->selectorList->setCurrentRow(0);
connect(ui->inputTab, &ConfigureInput::InputKeysChanged, ui->hotkeysTab,
&ConfigureHotkeys::OnInputKeysChanged);
connect(ui->hotkeysTab, &ConfigureHotkeys::HotkeysChanged, ui->inputTab,
&ConfigureInput::OnHotkeysChanged);
connect(ui->hotkeysTab, &ConfigureHotkeys::HotkeysChanged, this,
[this]() { emit UpdateHotkeys(); });
// Synchronise lists upon initialisation
ui->inputTab->EmitInputKeysChanged();
ui->hotkeysTab->EmitHotkeysChanged();
}
ConfigureDialog::~ConfigureDialog() = default;
@ -38,11 +48,12 @@ void ConfigureDialog::setConfiguration() {
ui->uiTab->setConfiguration();
}
void ConfigureDialog::applyConfiguration() {
void ConfigureDialog::applyConfiguration(HotkeyRegistry& registry) {
ui->generalTab->applyConfiguration();
ui->systemTab->applyConfiguration();
ui->inputTab->applyConfiguration();
ui->inputTab->ApplyProfile();
ui->hotkeysTab->applyConfiguration(registry);
ui->graphicsTab->applyConfiguration();
ui->audioTab->applyConfiguration();
ui->cameraTab->applyConfiguration();
@ -61,7 +72,7 @@ void ConfigureDialog::PopulateSelectionList() {
{QT_TR_NOOP("General"), QT_TR_NOOP("Web"), QT_TR_NOOP("Debug"), QT_TR_NOOP("UI")}},
{tr("System"), {QT_TR_NOOP("System"), QT_TR_NOOP("Audio"), QT_TR_NOOP("Camera")}},
{tr("Graphics"), {QT_TR_NOOP("Graphics")}},
{tr("Controls"), {QT_TR_NOOP("Input")}}}};
{tr("Controls"), {QT_TR_NOOP("Input"), QT_TR_NOOP("Hotkeys")}}}};
for (const auto& entry : items) {
auto* item = new QListWidgetItem(entry.first);
@ -91,6 +102,7 @@ void ConfigureDialog::retranslateUi() {
ui->generalTab->retranslateUi();
ui->systemTab->retranslateUi();
ui->inputTab->retranslateUi();
ui->hotkeysTab->retranslateUi();
ui->graphicsTab->retranslateUi();
ui->audioTab->retranslateUi();
ui->cameraTab->retranslateUi();
@ -105,9 +117,11 @@ void ConfigureDialog::UpdateVisibleTabs() {
return;
const QHash<QString, QWidget*> widgets = {
{"General", ui->generalTab}, {"System", ui->systemTab}, {"Input", ui->inputTab},
{"Graphics", ui->graphicsTab}, {"Audio", ui->audioTab}, {"Camera", ui->cameraTab},
{"Debug", ui->debugTab}, {"Web", ui->webTab}, {"UI", ui->uiTab}};
{tr("General"), ui->generalTab}, {tr("System"), ui->systemTab},
{tr("Input"), ui->inputTab}, {tr("Hotkeys"), ui->hotkeysTab},
{tr("Graphics"), ui->graphicsTab}, {tr("Audio"), ui->audioTab},
{tr("Camera"), ui->cameraTab}, {tr("Debug"), ui->debugTab},
{tr("Web"), ui->webTab}, {tr("UI"), ui->uiTab}};
ui->tabWidget->clear();