diff options
| author | JMC47 <JMC4789@gmail.com> | 2019-03-26 20:30:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-26 20:30:30 -0400 |
| commit | a1f53716dc96fa5eccf1702b4f6e91861bdb407d (patch) | |
| tree | 1edf7c7bcff9e2b3edf1dddd06d6da36044c834a /Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp | |
| parent | e222b9195380a6967a101806bbac451a6cb2454f (diff) | |
| parent | 9cb17b062c763e3e00425c9d324874509bbaf8c6 (diff) | |
Merge pull request #7893 from jordan-woyak/mapping-ui-cleanup
DolphinQ: Mapping UI cleanups.
Diffstat (limited to 'Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp index a068397d09..5c66f9ec94 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp @@ -9,7 +9,6 @@ #include <QMouseEvent> #include <QRegExp> #include <QString> -#include <QTimer> #include "Common/Thread.h" #include "Core/Core.h" @@ -42,8 +41,8 @@ bool MappingButton::IsInput() const return m_reference->IsInput(); } -MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref, bool indicator) - : ElidedButton(ToDisplayString(QString::fromStdString(ref->GetExpression()))), m_parent(widget), +MappingButton::MappingButton(MappingWidget* parent, ControlReference* ref, bool indicator) + : ElidedButton(ToDisplayString(QString::fromStdString(ref->GetExpression()))), m_parent(parent), m_reference(ref) { // Force all mapping buttons to stay at a minimal height. @@ -54,50 +53,30 @@ MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref, bool setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); - Connect(); setToolTip( tr("Left-click to detect input.\nMiddle-click to clear.\nRight-click for more options.")); - if (!m_reference->IsInput() || !indicator) - return; - - m_timer = new QTimer(this); - connect(m_timer, &QTimer::timeout, this, [this] { - if (!isActiveWindow()) - return; - - Settings::Instance().SetControllerStateNeeded(true); - - if (Core::GetState() == Core::State::Uninitialized || Core::GetState() == Core::State::Paused) - g_controller_interface.UpdateInput(); - auto state = m_reference->State(); - - QFont f = m_parent->font(); - QPalette p = m_parent->palette(); - - if (state > ControllerEmu::Buttons::ACTIVATION_THRESHOLD) - { - f.setBold(true); - p.setColor(QPalette::ButtonText, Qt::red); - } - - setFont(f); - setPalette(p); + connect(this, &MappingButton::pressed, this, &MappingButton::Detect); - Settings::Instance().SetControllerStateNeeded(false); - }); + if (indicator) + connect(parent, &MappingWidget::Update, this, &MappingButton::UpdateIndicator); - m_timer->start(1000 / 30); + connect(parent, &MappingWidget::ConfigChanged, this, &MappingButton::ConfigChanged); } -void MappingButton::Connect() +void MappingButton::AdvancedPressed() { - connect(this, &MappingButton::pressed, this, &MappingButton::Detect); + IOWindow io(this, m_parent->GetController(), m_reference, + m_reference->IsInput() ? IOWindow::Type::Input : IOWindow::Type::Output); + io.exec(); + + ConfigChanged(); + m_parent->SaveSettings(); } void MappingButton::Detect() { - if (m_parent->GetDevice() == nullptr || !m_reference->IsInput()) + if (!m_reference->IsInput()) return; const auto default_device_qualifier = m_parent->GetController()->GetDefaultDevice(); @@ -121,27 +100,48 @@ void MappingButton::Detect() return; m_reference->SetExpression(expression.toStdString()); - m_parent->SaveSettings(); - Update(); m_parent->GetController()->UpdateReferences(g_controller_interface); + ConfigChanged(); + m_parent->SaveSettings(); + if (m_parent->IsIterativeInput()) m_parent->NextButton(this); } void MappingButton::Clear() { - m_reference->SetExpression(""); m_reference->range = 100.0 / SLIDER_TICK_COUNT; + + m_reference->SetExpression(""); + m_parent->GetController()->UpdateReferences(g_controller_interface); + m_parent->SaveSettings(); - Update(); + ConfigChanged(); +} + +void MappingButton::UpdateIndicator() +{ + if (!isActiveWindow()) + return; + + const auto state = m_reference->State(); + + QFont f = m_parent->font(); + QPalette p = m_parent->palette(); + + if (state > ControllerEmu::Buttons::ACTIVATION_THRESHOLD) + { + f.setBold(true); + p.setColor(QPalette::ButtonText, Qt::red); + } + + setFont(f); + setPalette(p); } -void MappingButton::Update() +void MappingButton::ConfigChanged() { - const auto lock = ControllerEmu::EmulatedController::GetStateLock(); - m_reference->UpdateReference(g_controller_interface, - m_parent->GetController()->GetDefaultDevice()); setText(ToDisplayString(QString::fromStdString(m_reference->GetExpression()))); } @@ -153,13 +153,13 @@ void MappingButton::mouseReleaseEvent(QMouseEvent* event) if (m_reference->IsInput()) QPushButton::mouseReleaseEvent(event); else - emit AdvancedPressed(); + AdvancedPressed(); return; case Qt::MouseButton::MidButton: Clear(); return; case Qt::MouseButton::RightButton: - emit AdvancedPressed(); + AdvancedPressed(); return; default: return; |
