[Widgets] press tests

This commit is contained in:
thibaud keller 2025-01-16 13:10:52 +00:00
parent 9887ab6f8d
commit 94135cbb43
8 changed files with 21 additions and 51 deletions

@ -1 +1 @@
Subproject commit a35f73f5e0600726458454c23ffcf1e1ceb98d8e Subproject commit 0a04a681f6f1baf201c48ce2c27ff848b2101ed2

View file

@ -100,7 +100,12 @@ void EventWidget::on_state_removed(const Scenario::StateModel& state)
void EventWidget::on_press(int x, int y, bool pressed) void EventWidget::on_press(int x, int y, bool pressed)
{ {
qDebug() << "is inside!"; qDebug() << "event pressed";
}
void EventWidget::on_double_press(int x, int y, bool pressed)
{
qDebug() << "event double pressed";
} }
} // namespace Hardware } // namespace Hardware

View file

@ -25,6 +25,8 @@ private:
void paint(bugui::painter& painter) const override; void paint(bugui::painter& painter) const override;
void on_press(int x, int y, bool pressed) override; void on_press(int x, int y, bool pressed) override;
void on_double_press(int x, int y, bool pressed);
void on_state_added(Scenario::StateModel& state); void on_state_added(Scenario::StateModel& state);
void on_state_removed(const Scenario::StateModel& state); void on_state_removed(const Scenario::StateModel& state);

View file

@ -9,28 +9,7 @@ IntervalWidget::IntervalWidget(Scenario::IntervalModel& interval,
ScenarioWidget* scenario, ScenarioWidget* scenario,
bugui::container_widget* parent) bugui::container_widget* parent)
: ScenarioComponentSpec<Scenario::IntervalModel>{interval, scenario, parent} : ScenarioComponentSpec<Scenario::IntervalModel>{interval, scenario, parent}
{ { }
connect(&model,
&Scenario::IntervalModel::heightPercentageChanged,
this,
[scenario] (double) { scenario->update(); });
connect(&model,
&Scenario::IntervalModel::dateChanged,
this,
[scenario] (const TimeVal&) { scenario->update(); });
}
IntervalWidget::~IntervalWidget()
{
disconnect(&model,
&Scenario::IntervalModel::heightPercentageChanged,
this, 0);
disconnect(&model,
&Scenario::IntervalModel::dateChanged,
this, 0);
}
int IntervalWidget::x() const int IntervalWidget::x() const
{ {
@ -47,19 +26,12 @@ int IntervalWidget::width() const
return model.duration.defaultDuration().sec(); return model.duration.defaultDuration().sec();
} }
void IntervalWidget::paint(bugui::painter& painter) const
{
// Copied from MiniscenarioView
// const auto col = skin.IntervalBase().color();
// painter.set_color(col.red(), col.green(), col.blue(), col.alpha());
// painter.draw_line(0, 0, width(), 0);
}
bool IntervalWidget::contains(int px, int py) const bool IntervalWidget::contains(int px, int py) const
{ {
if (px >= 0 && // ignore first and last cell
px <= width() && // so that timesyncs are pressed
// at the extremeties
if (px > 0 && px < width() &&
py == 0) py == 0)
return true; return true;
@ -68,12 +40,12 @@ bool IntervalWidget::contains(int px, int py) const
void IntervalWidget::on_press(int x, int y, bool pressed) void IntervalWidget::on_press(int x, int y, bool pressed)
{ {
qDebug() << "is inside!"; qDebug() << "interval pressed";
} }
void IntervalWidget::on_double_press(int x, int y) void IntervalWidget::on_double_press(int x, int y)
{ {
qDebug() << "double pressed !"; qDebug() << "interval double pressed";
} }
void IntervalWidget::on_drag(int from_x, int from_y, int to_x, int to_y) void IntervalWidget::on_drag(int from_x, int from_y, int to_x, int to_y)
@ -83,6 +55,3 @@ void IntervalWidget::on_drag(int from_x, int from_y, int to_x, int to_y)
} }
} // namespace hardware } // namespace hardware
#include <wobjectimpl.h>
W_OBJECT_IMPL(Hardware::IntervalWidget);

View file

@ -8,23 +8,16 @@
namespace Hardware namespace Hardware
{ {
struct IntervalWidget final : ScenarioComponentSpec<Scenario::IntervalModel> struct IntervalWidget final : ScenarioComponentSpec<Scenario::IntervalModel>
, QObject
{ {
explicit IntervalWidget(Scenario::IntervalModel& interval, explicit IntervalWidget(Scenario::IntervalModel& interval,
ScenarioWidget* scenario, ScenarioWidget* scenario,
bugui::container_widget* parent); bugui::container_widget* parent);
~IntervalWidget() override;
int x() const override; int x() const override;
int y() const override; int y() const override;
int width() const override; int width() const override;
private: private:
W_OBJECT(IntervalWidget)
void paint(bugui::painter& painter) const override;
bool contains(int px, int py) const override; bool contains(int px, int py) const override;
void on_press(int x, int y, bool pressed) override; void on_press(int x, int y, bool pressed) override;

View file

@ -41,7 +41,7 @@ int ScenarioWidget::width() const
int ScenarioWidget::height() const int ScenarioWidget::height() const
{ {
return bugui::base_widget::parent->height(); return 15;
} }
Scenario::ProcessModel *ScenarioWidget::get_model() const Scenario::ProcessModel *ScenarioWidget::get_model() const

View file

@ -25,6 +25,7 @@ StateWidget::StateWidget(Scenario::StateModel& state,
StateWidget::~StateWidget() StateWidget::~StateWidget()
{ {
// FIXME : this disconnect seem to cause crashes
// disconnect(&model, // disconnect(&model,
// &Scenario::StateModel::heightPercentageChanged, // &Scenario::StateModel::heightPercentageChanged,
// this, 0); // this, 0);
@ -53,12 +54,12 @@ bool StateWidget::contains(int px, int py) const
void StateWidget::on_press(int x, int y, bool pressed) void StateWidget::on_press(int x, int y, bool pressed)
{ {
qDebug() << "is inside!"; qDebug() << "state pressed";
} }
void StateWidget::on_double_press(int x, int y) void StateWidget::on_double_press(int x, int y)
{ {
qDebug() << "double pressed !"; qDebug() << "state double pressed";
} }
void StateWidget::on_drag(int from_x, int from_y, int to_x, int to_y) void StateWidget::on_drag(int from_x, int from_y, int to_x, int to_y)

View file

@ -114,7 +114,7 @@ bool TimeSyncWidget::contains(int px, int py) const
void TimeSyncWidget::on_press(int x, int y, bool pressed) void TimeSyncWidget::on_press(int x, int y, bool pressed)
{ {
qDebug() << "is inside!"; qDebug() << "timeSync pressed";
} }
} // namespace Hardware } // namespace Hardware