Skip to content

Commit

Permalink
Implement presets in JoySensorEditDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
mmmaisel committed Apr 24, 2022
1 parent eda8fc8 commit 976616c
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 76 deletions.
45 changes: 25 additions & 20 deletions src/gui/joysensoreditdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,36 @@ JoySensorEditDialog::JoySensorEditDialog(JoySensor *sensor, QWidget *parent)
: QDialog(parent, Qt::Window),
m_ui(new Ui::JoySensorEditDialog),
m_sensor(sensor),
m_helper(sensor)
m_preset(sensor)
{
m_ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
m_helper.moveToThread(m_sensor->thread());

PadderCommon::inputDaemonMutex.lock();

updateWindowTitleSensorName();

auto min_width = m_ui->xCoordinateValue->fontMetrics().
boundingRect(QString("X.XXXXXXXXX")).width();
m_ui->xCoordinateValue->setMinimumWidth(min_width);
m_ui->xCoordinateValue->setAlignment(Qt::AlignLeft);

int index = 0;
int current_preset_index = 0;
JoySensorPreset::Preset current_preset = m_preset.currentPreset();

QList<JoySensorPreset::Preset> presets = m_preset.getAvailablePresets();
for(auto iter = presets.cbegin(); iter != presets.cend(); ++iter, ++index)
{
m_ui->presetsComboBox->insertItem(index, m_preset.getPresetName(*iter), *iter);
if (*iter == current_preset)
current_preset_index = index;
}
m_ui->presetsComboBox->setCurrentIndex(current_preset_index);

PadderCommon::inputDaemonMutex.lock();

updateWindowTitleSensorName();
if (m_sensor->getType() == JoySensor::ACCELEROMETER)
{
float value;
m_ui->gravityValue->setText(QString::number(m_sensor->calculateDistance()));
m_ui->accelerationValue->setText(QString::number(m_sensor->calculateDistance()));
value = m_sensor->calculatePitch() * 180.0 / M_PI;
m_ui->pitchValue->setText(QString::number(value));
value = m_sensor->calculateRoll() * 180.0 / M_PI;
Expand All @@ -68,8 +79,8 @@ JoySensorEditDialog::JoySensorEditDialog(JoySensor *sensor, QWidget *parent)
m_ui->xCoordinateLabel->setText(tr("Roll (°/s)"));
m_ui->yCoordinateLabel->setText(tr("Pitch (°/s)"));
m_ui->zCoordinateLabel->setText(tr("Yaw (°/s)"));
m_ui->gravityLabel->setVisible(false);
m_ui->gravityValue->setVisible(false);
m_ui->accelerationLabel->setVisible(false);
m_ui->accelerationValue->setVisible(false);
m_ui->pitchLabel->setVisible(false);
m_ui->pitchValue->setVisible(false);
m_ui->rollLabel->setVisible(false);
Expand Down Expand Up @@ -98,8 +109,6 @@ JoySensorEditDialog::JoySensorEditDialog(JoySensor *sensor, QWidget *parent)

m_ui->sensorStatusBoxWidget->setSensor(m_sensor);

selectCurrentPreset();

m_ui->sensorNameLineEdit->setText(m_sensor->getSensorName());
double validDistance = m_sensor->getDistanceFromDeadZone() * 100.0;
m_ui->fromSafeZoneValueLabel->setText(QString::number(validDistance));
Expand All @@ -123,8 +132,8 @@ JoySensorEditDialog::JoySensorEditDialog(JoySensor *sensor, QWidget *parent)
m_ui->maxZoneSpinBox, &QDoubleSpinBox::setValue);
connect(m_ui->diagonalRangeSlider, &QSlider::valueChanged,
m_ui->diagonalRangeSpinBox, &QSpinBox::setValue);
connect(m_ui->sensorDelaySlider, &QSlider::valueChanged, &m_helper,
&JoySensorIoThreadHelper::updateSensorDelay);
connect(m_ui->sensorDelaySlider, &QSlider::valueChanged, this,
[this](unsigned int value) { m_preset.getHelper().updateSensorDelay(value); });

connect(m_ui->deadZoneSpinBox,
static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
Expand Down Expand Up @@ -165,7 +174,8 @@ JoySensorEditDialog::~JoySensorEditDialog() { delete m_ui; }

void JoySensorEditDialog::implementPresets(int index)
{
// XXX: implement
auto preset = static_cast<JoySensorPreset::Preset>(m_ui->presetsComboBox->itemData(index).toInt());
m_preset.setSensorPreset(preset);
}

void JoySensorEditDialog::refreshSensorStats(float x, float y, float z)
Expand Down Expand Up @@ -194,7 +204,7 @@ void JoySensorEditDialog::refreshSensorStats(float x, float y, float z)

if (m_sensor->getType() == JoySensor::ACCELEROMETER)
{
m_ui->gravityValue->setText(QString::number(m_sensor->calculateDistance()));
m_ui->accelerationValue->setText(QString::number(m_sensor->calculateDistance()));
value = m_sensor->calculatePitch() * 180.0 / M_PI;
m_ui->pitchValue->setText(QString::number(value));
value = m_sensor->calculateRoll() * 180.0 / M_PI;
Expand All @@ -213,11 +223,6 @@ void JoySensorEditDialog::checkMaxZone(float value)
QMetaObject::invokeMethod(m_sensor, "setMaxZone", Q_ARG(float, value));
}

void JoySensorEditDialog::selectCurrentPreset()
{
// XXX: implement
}

void JoySensorEditDialog::openMouseSettingsDialog()
{
m_ui->mouseSettingsPushButton->setEnabled(false);
Expand Down
7 changes: 2 additions & 5 deletions src/gui/joysensoreditdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/
#pragma once

#include "uihelpers/joysensoriothreadhelper.h"
#include "joysensorpreset.h"

#include <QDialog>

Expand All @@ -35,15 +35,12 @@ class JoySensorEditDialog : public QDialog
explicit JoySensorEditDialog(JoySensor *sensor, QWidget *parent = nullptr);
~JoySensorEditDialog();

protected:
void selectCurrentPreset();

private:
Ui::JoySensorEditDialog *m_ui;
bool m_keypad_unlocked;

JoySensor *m_sensor;
JoySensorIoThreadHelper m_helper;
JoySensorPreset m_preset;

private slots:
void implementPresets(int index);
Expand Down
51 changes: 3 additions & 48 deletions src/gui/joysensoreditdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -161,20 +161,20 @@
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="gravityLabel">
<widget class="QLabel" name="accelerationLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Gravity (m/s^2):</string>
<string>Acceleration (m/s^2):</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="gravityValue">
<widget class="QLabel" name="accelerationValue">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
Expand Down Expand Up @@ -327,51 +327,6 @@
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string/>
</property>
</item>
<item>
<property name="text">
<string>Mouse (Normal)</string>
</property>
</item>
<item>
<property name="text">
<string>Mouse (Inverted Horizontal)</string>
</property>
</item>
<item>
<property name="text">
<string>Mouse (Inverted Vertical)</string>
</property>
</item>
<item>
<property name="text">
<string>Mouse (Inverted Horizontal + Vertical)</string>
</property>
</item>
<item>
<property name="text">
<string>Arrows</string>
</property>
</item>
<item>
<property name="text">
<string>Keys: W | A | S | D</string>
</property>
</item>
<item>
<property name="text">
<string>NumPad</string>
</property>
</item>
<item>
<property name="text">
<string>None</string>
</property>
</item>
</widget>
</item>
</layout>
Expand Down
2 changes: 1 addition & 1 deletion src/joysensorcontextmenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ void JoySensorContextMenu::buildMenu()
{
QAction *action;
QActionGroup *presetGroup = new QActionGroup(this);
JoySensorPreset::Preset currentPreset = m_preset.getIndex();
JoySensorPreset::Preset currentPreset = m_preset.currentPreset();
QList<JoySensorPreset::Preset> presets = m_preset.getAvailablePresets();

for (auto iter = presets.cbegin(); iter != presets.cend(); ++iter)
Expand Down
7 changes: 6 additions & 1 deletion src/joysensorpreset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ QList<JoySensorPreset::Preset> JoySensorPreset::getAvailablePresets()
return result;
}

JoySensorPreset::Preset JoySensorPreset::getIndex()
JoySensorPreset::Preset JoySensorPreset::currentPreset()
{
Preset result = PRESET_NONE;
QList<JoyButtonSlot *> *upslots, *downslots, *leftslots, *rightslots, *fwdslots, *bwdslots;
Expand Down Expand Up @@ -346,3 +346,8 @@ void JoySensorPreset::setSensorPreset(Preset preset)
m_helper.setPendingSlots(&tempHash);
QMetaObject::invokeMethod(&m_helper, "setFromPendingSlots", Qt::BlockingQueuedConnection);
}

JoySensorIoThreadHelper &JoySensorPreset::getHelper()
{
return m_helper;
}
3 changes: 2 additions & 1 deletion src/joysensorpreset.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ class JoySensorPreset : public QObject
explicit JoySensorPreset(JoySensor *sensor, QObject *parent = nullptr);

QList<Preset> getAvailablePresets();
Preset getIndex();
Preset currentPreset();
QString getPresetName(Preset);
void setSensorPreset(Preset);
JoySensorIoThreadHelper &getHelper();

private:
JoySensor* m_sensor;
Expand Down

0 comments on commit 976616c

Please sign in to comment.