#include #include "EventWidget.hpp" #include "ScenarioWidget.hpp" #include "TimeSyncWidget.hpp" namespace Hardware { TimeSyncWidget::TimeSyncWidget(Scenario::TimeSyncModel& timeSync, ScenarioWidget* scenario, bugui::container_widget* parent) : ScenarioComponentSpec{timeSync, scenario, parent} { connect(&model, &Scenario::TimeSyncModel::dateChanged, this, [scenario] (const TimeVal&) { scenario->update(); }); connect(&model, &Scenario::TimeSyncModel::newEvent, this, [scenario, this] (const Id& eventId) { add_widget(scenario->get_model()->events.at(eventId), scenario); }); connect(&model, &Scenario::TimeSyncModel::eventRemoved, this, [scenario, this] (const Id& eventId) { remove_widget([&eventId] (const auto& w) { return static_cast*>(w.get())->this_model(eventId); }); set_height(); update(); }); Scenario::ProcessModel* scen{scenario->get_model()}; for(Scenario::EventModel& e : scen->events) if (e.timeSync() == model.id()) add_widget(e, scenario); } TimeSyncWidget::~TimeSyncWidget() { disconnect(&model, &Scenario::TimeSyncModel::dateChanged, this, 0); disconnect(&model, &Scenario::TimeSyncModel::newEvent, this, 0); disconnect(&model, &Scenario::TimeSyncModel::eventRemoved, this, 0); } int TimeSyncWidget::x() const { return model.date().sec(); } int TimeSyncWidget::y() const { return m_y; } int TimeSyncWidget::height() const { return m_height; } void TimeSyncWidget::set_y(int event_y) { if (event_y < m_y) m_y = event_y; } void TimeSyncWidget::set_height() { for(const auto& e : bugui::container_widget::children) { int span = e->y() + e->height(); if (span > m_height) m_height = span; } update(); } void TimeSyncWidget::paint(bugui::painter& painter) const { // const auto col = skin.StateDot().color(); // painter.set_color(col.red(), col.green(), col.blue(), col.alpha()); // painter.draw_cell(0, 0); } bool TimeSyncWidget::contains(int px, int py) const { if (px == x() && py == y()) return true; return false; } void TimeSyncWidget::on_press(int x, int y, bool pressed) { qDebug() << "timeSync pressed"; } } // namespace Hardware #include W_OBJECT_IMPL(Hardware::TimeSyncWidget);