mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-26 16:52:46 +01:00
Merge pull request #6392 from german77/controller-widget
settings: Disable controller preview if controller is not active
This commit is contained in:
commit
c8b3d92836
3 changed files with 25 additions and 2 deletions
|
@ -85,6 +85,8 @@ void PlayerControlPreview::SetConnectedStatus(bool checked) {
|
|||
led_color[1] = led_pattern.position2 ? colors.led_on : colors.led_off;
|
||||
led_color[2] = led_pattern.position3 ? colors.led_on : colors.led_off;
|
||||
led_color[3] = led_pattern.position4 ? colors.led_on : colors.led_off;
|
||||
is_enabled = checked;
|
||||
ResetInputs();
|
||||
}
|
||||
|
||||
void PlayerControlPreview::SetControllerType(const Settings::ControllerType type) {
|
||||
|
@ -108,6 +110,7 @@ void PlayerControlPreview::EndMapping() {
|
|||
analog_mapping_index = Settings::NativeAnalog::NumAnalogs;
|
||||
mapping_active = false;
|
||||
blink_counter = 0;
|
||||
ResetInputs();
|
||||
}
|
||||
|
||||
void PlayerControlPreview::UpdateColors() {
|
||||
|
@ -156,7 +159,23 @@ void PlayerControlPreview::UpdateColors() {
|
|||
// colors.right = QColor(Settings::values.players.GetValue()[player_index].body_color_right);
|
||||
}
|
||||
|
||||
void PlayerControlPreview::ResetInputs() {
|
||||
for (std::size_t index = 0; index < button_values.size(); ++index) {
|
||||
button_values[index] = false;
|
||||
}
|
||||
|
||||
for (std::size_t index = 0; index < axis_values.size(); ++index) {
|
||||
axis_values[index].properties = {0, 1, 0};
|
||||
axis_values[index].value = {0, 0};
|
||||
axis_values[index].raw_value = {0, 0};
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
void PlayerControlPreview::UpdateInput() {
|
||||
if (!is_enabled && !mapping_active) {
|
||||
return;
|
||||
}
|
||||
bool input_changed = false;
|
||||
const auto& button_state = buttons;
|
||||
for (std::size_t index = 0; index < button_values.size(); ++index) {
|
||||
|
|
|
@ -100,6 +100,7 @@ private:
|
|||
|
||||
static LedPattern GetColorPattern(std::size_t index, bool player_on);
|
||||
void UpdateColors();
|
||||
void ResetInputs();
|
||||
|
||||
// Draw controller functions
|
||||
void DrawHandheldController(QPainter& p, QPointF center);
|
||||
|
@ -176,6 +177,7 @@ private:
|
|||
using StickArray =
|
||||
std::array<std::unique_ptr<Input::AnalogDevice>, Settings::NativeAnalog::NUM_STICKS_HID>;
|
||||
|
||||
bool is_enabled{};
|
||||
bool mapping_active{};
|
||||
int blink_counter{};
|
||||
QColor button_color{};
|
||||
|
|
|
@ -28,6 +28,7 @@ ControllerDialog::ControllerDialog(QWidget* parent) : QWidget(parent, Qt::Dialog
|
|||
// Configure focus so that widget is focusable and the dialog automatically forwards focus to
|
||||
// it.
|
||||
setFocusProxy(widget);
|
||||
widget->SetConnectedStatus(false);
|
||||
widget->setFocusPolicy(Qt::StrongFocus);
|
||||
widget->setFocus();
|
||||
}
|
||||
|
@ -36,9 +37,8 @@ void ControllerDialog::refreshConfiguration() {
|
|||
const auto& players = Settings::values.players.GetValue();
|
||||
constexpr std::size_t player = 0;
|
||||
widget->SetPlayerInputRaw(player, players[player].buttons, players[player].analogs);
|
||||
widget->SetConnectedStatus(players[player].connected);
|
||||
widget->SetControllerType(players[player].controller_type);
|
||||
widget->repaint();
|
||||
widget->SetConnectedStatus(players[player].connected);
|
||||
}
|
||||
|
||||
QAction* ControllerDialog::toggleViewAction() {
|
||||
|
@ -56,6 +56,7 @@ void ControllerDialog::showEvent(QShowEvent* ev) {
|
|||
if (toggle_view_action) {
|
||||
toggle_view_action->setChecked(isVisible());
|
||||
}
|
||||
refreshConfiguration();
|
||||
QWidget::showEvent(ev);
|
||||
}
|
||||
|
||||
|
@ -63,5 +64,6 @@ void ControllerDialog::hideEvent(QHideEvent* ev) {
|
|||
if (toggle_view_action) {
|
||||
toggle_view_action->setChecked(isVisible());
|
||||
}
|
||||
widget->SetConnectedStatus(false);
|
||||
QWidget::hideEvent(ev);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue