Skip to content
Permalink
Browse files
Merge pull request #6362 from spycrab/qt_indicators
Qt/Mapping: Implement indicators
  • Loading branch information
Helios747 committed Feb 18, 2018
2 parents 6a609e6 + ec54b42 commit 4876b9d
Show file tree
Hide file tree
Showing 11 changed files with 423 additions and 8 deletions.
@@ -292,9 +292,6 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), ir_sin(0), ir_cos(1
m_extension->attachments.emplace_back(new WiimoteEmu::Drums(m_reg_ext));
m_extension->attachments.emplace_back(new WiimoteEmu::Turntable(m_reg_ext));

m_extension->boolean_settings.emplace_back(
m_motion_plus_setting = new ControllerEmu::BooleanSetting(_trans("Motion Plus"), false));

// rumble
groups.emplace_back(m_rumble = new ControllerEmu::ControlGroup(_trans("Rumble")));
m_rumble->controls.emplace_back(m_motor = new ControllerEmu::Output(_trans("Motor")));
@@ -65,6 +65,7 @@ set(SRCS
Config/Mapping/MappingBool.cpp
Config/Mapping/MappingButton.cpp
Config/Mapping/MappingCommon.cpp
Config/Mapping/MappingIndicator.cpp
Config/Mapping/MappingNumeric.cpp
Config/Mapping/MappingWidget.cpp
Config/Mapping/MappingWindow.cpp
@@ -7,6 +7,9 @@
#include <QMouseEvent>
#include <QRegExp>
#include <QString>
#include <QTimer>

#include <iostream>

#include "DolphinQt2/Config/Mapping/MappingButton.h"

@@ -16,6 +19,7 @@
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
#include "DolphinQt2/Config/Mapping/MappingWindow.h"
#include "DolphinQt2/QtUtils/BlockUserInputFilter.h"
#include "DolphinQt2/Settings.h"
#include "InputCommon/ControlReference/ControlReference.h"
#include "InputCommon/ControllerEmu/ControllerEmu.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
@@ -26,11 +30,41 @@ static QString EscapeAmpersand(QString&& string)
return string.replace(QStringLiteral("&"), QStringLiteral("&&"));
}

MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref)
MappingButton::MappingButton(MappingWidget* widget, ControlReference* ref, bool indicator)
: ElidedButton(EscapeAmpersand(QString::fromStdString(ref->GetExpression()))), m_parent(widget),
m_reference(ref)
{
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);

auto state = m_reference->State();

QFont f = m_parent->font();
QPalette p = m_parent->palette();

if (state != 0)
{
f.setBold(true);
p.setColor(QPalette::ButtonText, Qt::red);
}

setFont(f);
setPalette(p);

Settings::Instance().SetControllerStateNeeded(false);
});

m_timer->start(1000 / 30);
}

void MappingButton::Connect()
@@ -85,6 +119,7 @@ void MappingButton::Clear()
{
m_reference->SetExpression("");
m_parent->SaveSettings();
Update();
}

void MappingButton::Update()
@@ -105,7 +140,7 @@ void MappingButton::mouseReleaseEvent(QMouseEvent* event)
else
emit AdvancedPressed();
return;
case Qt::MouseButton::MiddleButton:
case Qt::MouseButton::MidButton:
Clear();
return;
case Qt::MouseButton::RightButton:
@@ -11,12 +11,13 @@ class ControlReference;
class MappingWidget;
class QEvent;
class QMouseEvent;
class QTimer;

class MappingButton : public ElidedButton
{
Q_OBJECT
public:
MappingButton(MappingWidget* widget, ControlReference* ref);
MappingButton(MappingWidget* widget, ControlReference* ref, bool indicator);

void Clear();
void Update();
@@ -33,4 +34,5 @@ class MappingButton : public ElidedButton

MappingWidget* m_parent;
ControlReference* m_reference;
QTimer* m_timer;
};

0 comments on commit 4876b9d

Please sign in to comment.