m2-ar-projet/src/settings_pane.cc

48 lines
1.5 KiB
C++
Raw Normal View History

2021-01-02 01:10:54 +01:00
#include "settings_pane.hh"
#include <QCheckBox>
#include <QDoubleSpinBox>
#include <QFormLayout>
SettingsPane::SettingsPane(QWidget *parent)
:QWidget(parent) {
QDoubleSpinBox *sphere_radius = new QDoubleSpinBox();
QCheckBox *show_trajectories = new QCheckBox();
QCheckBox *show_support_lines = new QCheckBox();
collisions = new QListWidget();
connect(sphere_radius, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
this, &SettingsPane::sphereRadiusChanged);
connect(show_trajectories, &QCheckBox::stateChanged,
this, &SettingsPane::toggledTrajectories);
connect(show_support_lines, &QCheckBox::stateChanged,
this, &SettingsPane::toggledSupportLines);
connect(collisions, &QListWidget::itemClicked,
[&](QListWidgetItem *item) { emit collisionClicked(((CollisionItem *) item)->getFrame()); });
2021-01-02 01:10:54 +01:00
QFormLayout *layout = new QFormLayout;
layout->addRow("Taille de la sphère de collision", sphere_radius);
layout->addRow("Afficher les trajectoires", show_trajectories);
layout->addRow("Afficher les lignes de support", show_support_lines);
layout->addRow(collisions);
setLayout(layout);
}
void SettingsPane::addCollision(int idA, int idB, int frame) {
CollisionItem *item = new CollisionItem(QString::number(frame) + ": "
+ QString::number(idA) + " / " + QString::number(idB),
frame);
2021-01-02 01:10:54 +01:00
item->setFlags(Qt::ItemIsEnabled | Qt::ItemNeverHasChildren);
collisions->addItem(item);
}
void SettingsPane::clearCollisions() {
QListWidgetItem *item;
while ((item = collisions->takeItem(0)) != nullptr) {
delete item;
}
}