#include #include "Hardware/Widgets/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} { Scenario::ProcessModel* scen{scenario->get_model()}; scen->events.mutable_added.connect<&TimeSyncWidget::on_event_added>(this); scen->events.removed.connect<&TimeSyncWidget::on_event_removed>(this); for(Scenario::EventModel& e : scen->events) if (e.timeSync() == model.id()) add_widget(e, scenario); } 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_height() { m_y = std::numeric_limits::max(); m_height = std::numeric_limits::lowest(); for(const auto& e : children) { int ey = e->y(); if (ey <= m_y) m_y = ey; int eh = e->height(); if (eh >= m_height) m_height = eh; } 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_event_added(Scenario::EventModel& event) { if (event.timeSync() != model.id()) return; add_widget(event, scenario); } void TimeSyncWidget::on_event_removed(const Scenario::EventModel& event) { if (event.timeSync() != model.id()) return; remove_widget([&event] (const auto& w) { return static_cast*>(w.get())->this_model(event); }); } void TimeSyncWidget::on_press(int x, int y, bool pressed) { qDebug() << "is inside!"; } } // namespace Hardware