Merge pull request #8044 from jordan-woyak/indicators-on-top

DolphinQt: Move mapping indicators to top of UI.
This commit is contained in:
spycrab 2019-04-29 02:48:23 +02:00 committed by GitHub
commit 6e6f833bb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 59 deletions

View File

@ -23,15 +23,14 @@ void GCPadEmu::CreateMainLayout()
auto* layout = new QGridLayout;
layout->addWidget(CreateGroupBox(tr("Buttons"), Pad::GetGroup(GetPort(), PadGroup::Buttons)), 0,
0, -1, 1);
0);
layout->addWidget(CreateGroupBox(tr("D-Pad"), Pad::GetGroup(GetPort(), PadGroup::DPad)), 1, 0, -1,
1);
layout->addWidget(
CreateGroupBox(tr("Control Stick"), Pad::GetGroup(GetPort(), PadGroup::MainStick)), 0, 1, -1,
1);
layout->addWidget(CreateGroupBox(tr("C Stick"), Pad::GetGroup(GetPort(), PadGroup::CStick)), 0, 2,
-1, 1);
layout->addWidget(CreateGroupBox(tr("D-Pad"), Pad::GetGroup(GetPort(), PadGroup::DPad)), 0, 3, -1,
1);
layout->addWidget(CreateGroupBox(tr("Triggers"), Pad::GetGroup(GetPort(), PadGroup::Triggers)), 0,
4);
layout->addWidget(CreateGroupBox(tr("Rumble"), Pad::GetGroup(GetPort(), PadGroup::Rumble)), 1, 4);

View File

@ -97,7 +97,18 @@ QColor MappingIndicator::GetGateColor() const
MappingIndicator::MappingIndicator(ControllerEmu::ControlGroup* group) : m_group(group)
{
setMinimumHeight(128);
// TODO: Make these magic numbers less ugly.
int required_height = 106;
if (ControllerEmu::GroupType::MixedTriggers == group->type)
required_height = 64 + 1;
setFixedHeight(required_height);
}
double MappingIndicator::GetScale() const
{
return height() / 2 - 2;
}
namespace
@ -178,7 +189,7 @@ void MappingIndicator::DrawCursor(ControllerEmu::Cursor& cursor)
UpdateCalibrationWidget({raw_coord.x, raw_coord.y});
// Bounding box size:
const double scale = height() / 2.5;
const double scale = GetScale();
QPainter p(this);
p.translate(width() / 2, height() / 2);
@ -291,7 +302,7 @@ void MappingIndicator::DrawReshapableInput(ControllerEmu::ReshapableInput& stick
UpdateCalibrationWidget(raw_coord);
// Bounding box size:
const double scale = height() / 2.5;
const double scale = GetScale();
QPainter p(this);
p.translate(width() / 2, height() / 2);
@ -453,7 +464,7 @@ void MappingIndicator::DrawForce(ControllerEmu::Force& force)
UpdateCalibrationWidget({raw_coord.x, raw_coord.y});
// Bounding box size:
const double scale = height() / 2.5;
const double scale = GetScale();
QPainter p(this);
p.translate(width() / 2, height() / 2);
@ -592,7 +603,7 @@ void ShakeMappingIndicator::DrawShake()
m_position_samples.pop_back();
// Bounding box size:
const double scale = height() / 2.5;
const double scale = GetScale();
QPainter p(this);
p.translate(width() / 2, height() / 2);
@ -657,8 +668,8 @@ void ShakeMappingIndicator::DrawShake()
void MappingIndicator::DrawCalibration(QPainter& p, Common::DVec2 point)
{
// TODO: Ugly magic number used in a few places in this file.
const double scale = height() / 2.5;
// Bounding box size:
const double scale = GetScale();
// Input shape.
p.setPen(GetInputShapePen());

View File

@ -48,6 +48,8 @@ protected:
QColor GetAltTextColor() const;
QColor GetGateColor() const;
double GetScale() const;
private:
void DrawCursor(ControllerEmu::Cursor& cursor);
void DrawReshapableInput(ControllerEmu::ReshapableInput& stick);

View File

@ -70,6 +70,34 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
group->type == ControllerEmu::GroupType::Tilt ||
group->type == ControllerEmu::GroupType::Force;
if (need_indicator)
{
MappingIndicator* indicator;
switch (group->type)
{
case ControllerEmu::GroupType::Shake:
indicator = new ShakeMappingIndicator(static_cast<ControllerEmu::Shake*>(group));
break;
default:
indicator = new MappingIndicator(group);
break;
}
form_layout->addRow(indicator);
connect(this, &MappingWidget::Update, indicator, QOverload<>::of(&MappingIndicator::update));
if (need_calibration)
{
const auto calibrate =
new CalibrationWidget(*static_cast<ControllerEmu::ReshapableInput*>(group), *indicator);
form_layout->addRow(calibrate);
}
}
for (auto& control : group->controls)
{
auto* button = new MappingButton(this, control->control_ref.get(), !need_indicator);
@ -105,34 +133,6 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
form_layout->addRow(tr(setting->GetUIName()), setting_widget);
}
if (need_indicator)
{
MappingIndicator* indicator;
switch (group->type)
{
case ControllerEmu::GroupType::Shake:
indicator = new ShakeMappingIndicator(static_cast<ControllerEmu::Shake*>(group));
break;
default:
indicator = new MappingIndicator(group);
break;
}
connect(this, &MappingWidget::Update, indicator, QOverload<>::of(&MappingIndicator::update));
if (need_calibration)
{
const auto calibrate =
new CalibrationWidget(*static_cast<ControllerEmu::ReshapableInput*>(group), *indicator);
form_layout->addRow(calibrate);
}
form_layout->addRow(indicator);
}
return group_box;
}

View File

@ -40,7 +40,10 @@ void WiimoteEmuExtension::CreateClassicLayout()
layout->addWidget(
CreateGroupBox(tr("Buttons"),
Wiimote::GetClassicGroup(GetPort(), WiimoteEmu::ClassicGroup::Buttons)),
0, 0, -1, 1);
0, 0);
layout->addWidget(CreateGroupBox(tr("D-Pad"), Wiimote::GetClassicGroup(
GetPort(), WiimoteEmu::ClassicGroup::DPad)),
1, 0);
layout->addWidget(
CreateGroupBox(tr("Left Stick"),
Wiimote::GetClassicGroup(GetPort(), WiimoteEmu::ClassicGroup::LeftStick)),
@ -49,14 +52,10 @@ void WiimoteEmuExtension::CreateClassicLayout()
CreateGroupBox(tr("Right Stick"),
Wiimote::GetClassicGroup(GetPort(), WiimoteEmu::ClassicGroup::RightStick)),
0, 2, -1, 1);
layout->addWidget(CreateGroupBox(tr("D-Pad"), Wiimote::GetClassicGroup(
GetPort(), WiimoteEmu::ClassicGroup::DPad)),
0, 3);
layout->addWidget(
CreateGroupBox(tr("Triggers"),
Wiimote::GetClassicGroup(GetPort(), WiimoteEmu::ClassicGroup::Triggers)),
1, 3);
0, 3, -1, 1);
m_classic_box->setLayout(layout);
}
@ -97,23 +96,22 @@ void WiimoteEmuExtension::CreateNunchukLayout()
auto* layout = new QGridLayout();
m_nunchuk_box = new QGroupBox(tr("Nunchuk"), this);
layout->addWidget(CreateGroupBox(tr("Stick"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Stick)),
0, 0, -1, 1);
layout->addWidget(CreateGroupBox(tr("Tilt"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Tilt)),
0, 1, -1, 1);
layout->addWidget(CreateGroupBox(tr("Swing"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Swing)),
0, 2, -1, 1);
layout->addWidget(CreateGroupBox(tr("Shake"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Shake)),
0, 0);
layout->addWidget(
CreateGroupBox(tr("Buttons"),
Wiimote::GetNunchukGroup(GetPort(), WiimoteEmu::NunchukGroup::Buttons)),
0, 3);
layout->addWidget(CreateGroupBox(tr("Shake"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Shake)),
1, 3);
1, 0);
layout->addWidget(CreateGroupBox(tr("Stick"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Stick)),
0, 1, -1, 1);
layout->addWidget(CreateGroupBox(tr("Tilt"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Tilt)),
0, 2, -1, 1);
layout->addWidget(CreateGroupBox(tr("Swing"), Wiimote::GetNunchukGroup(
GetPort(), WiimoteEmu::NunchukGroup::Swing)),
0, 3, -1, 1);
m_nunchuk_box->setLayout(layout);
}