summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-10-29 00:53:19 +0200
committerGitHub <noreply@github.com>2022-10-29 00:53:19 +0200
commit8efd7833e58092cb3074d477beef5803b62bc044 (patch)
treefa6384e161b427a84ce7a568eaa9bd21134d2e5b /Source
parent8001535d12fabbd5188b25e7505e3c2044f69bef (diff)
parentc3ceee8967b30419b522b765036aa523998c61e1 (diff)
Merge pull request #11150 from jordan-woyak/all-devices-less-confusing
DolphinQt: Make "All Devices" mapping hopefully less confusing.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp33
-rw-r--r--Source/Core/DolphinQt/Config/Mapping/MappingWindow.h3
2 files changed, 22 insertions, 14 deletions
diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp
index 60f645d124..c04d41280d 100644
--- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp
+++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp
@@ -3,6 +3,7 @@
#include "DolphinQt/Config/Mapping/MappingWindow.h"
+#include <QAction>
#include <QCheckBox>
#include <QComboBox>
#include <QDialogButtonBox>
@@ -11,6 +12,7 @@
#include <QPushButton>
#include <QTabWidget>
#include <QTimer>
+#include <QToolButton>
#include <QVBoxLayout>
#include "Core/Core.h"
@@ -95,13 +97,26 @@ void MappingWindow::CreateDevicesLayout()
m_devices_layout = new QHBoxLayout();
m_devices_box = new QGroupBox(tr("Device"));
m_devices_combo = new QComboBox();
- m_devices_refresh = new NonDefaultQPushButton(tr("Refresh"));
+
+ auto* const options = new QToolButton();
+ // Make it more apparent that this is a menu with more options.
+ options->setPopupMode(QToolButton::ToolButtonPopupMode::MenuButtonPopup);
+
+ const auto refresh_action = new QAction(tr("Refresh"), options);
+ connect(refresh_action, &QAction::triggered, this, &MappingWindow::RefreshDevices);
+
+ m_all_devices_action = new QAction(tr("Create mappings for other devices"), options);
+ m_all_devices_action->setCheckable(true);
+
+ options->addAction(refresh_action);
+ options->addAction(m_all_devices_action);
+ options->setDefaultAction(refresh_action);
m_devices_combo->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
- m_devices_refresh->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ options->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
m_devices_layout->addWidget(m_devices_combo);
- m_devices_layout->addWidget(m_devices_refresh);
+ m_devices_layout->addWidget(options);
m_devices_box->setLayout(m_devices_layout);
}
@@ -171,8 +186,6 @@ void MappingWindow::ConnectWidgets()
connect(m_devices_combo, qOverload<int>(&QComboBox::currentIndexChanged), this,
&MappingWindow::OnSelectDevice);
- connect(m_devices_refresh, &QPushButton::clicked, this, &MappingWindow::RefreshDevices);
-
connect(m_reset_clear, &QPushButton::clicked, this, &MappingWindow::OnClearFieldsPressed);
connect(m_reset_default, &QPushButton::clicked, this, &MappingWindow::OnDefaultFieldsPressed);
connect(m_profiles_save, &QPushButton::clicked, this, &MappingWindow::OnSaveProfilePressed);
@@ -323,9 +336,6 @@ void MappingWindow::OnSaveProfilePressed()
void MappingWindow::OnSelectDevice(int)
{
- if (IsMappingAllDevices())
- return;
-
// Original string is stored in the "user-data".
const auto device = m_devices_combo->currentData().toString().toStdString();
@@ -335,7 +345,7 @@ void MappingWindow::OnSelectDevice(int)
bool MappingWindow::IsMappingAllDevices() const
{
- return m_devices_combo->currentIndex() == m_devices_combo->count() - 1;
+ return m_all_devices_action->isChecked();
}
void MappingWindow::RefreshDevices()
@@ -355,8 +365,6 @@ void MappingWindow::OnGlobalDevicesChanged()
m_devices_combo->addItem(qname, qname);
}
- m_devices_combo->insertSeparator(m_devices_combo->count());
-
const auto default_device = m_controller->GetDefaultDevice().ToString();
if (!default_device.empty())
@@ -371,14 +379,13 @@ void MappingWindow::OnGlobalDevicesChanged()
else
{
// Selected device is not currently attached.
+ m_devices_combo->insertSeparator(m_devices_combo->count());
const auto qname = QString::fromStdString(default_device);
m_devices_combo->addItem(QLatin1Char{'['} + tr("disconnected") + QStringLiteral("] ") + qname,
qname);
m_devices_combo->setCurrentIndex(m_devices_combo->count() - 1);
}
}
-
- m_devices_combo->addItem(tr("All devices"));
}
void MappingWindow::SetMappingType(MappingWindow::Type type)
diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h
index 493c07f72d..8a0c4198aa 100644
--- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h
+++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h
@@ -23,6 +23,7 @@ class QGroupBox;
class QVBoxLayout;
class QPushButton;
class QTabWidget;
+class QToolButton;
class QWidget;
class MappingWindow final : public QDialog
@@ -98,7 +99,7 @@ private:
QGroupBox* m_devices_box;
QHBoxLayout* m_devices_layout;
QComboBox* m_devices_combo;
- QPushButton* m_devices_refresh;
+ QAction* m_all_devices_action;
// Profiles
QGroupBox* m_profiles_box;