#include <QPainter>
+using namespace std;
+
namespace pv {
namespace view {
-TimeMarker::TimeMarker(const View &view, const QColor &colour,
- double time) :
+TimeMarker::TimeMarker(View &view, const QColor &colour, double time) :
_view(view),
_colour(colour),
- _time(time)
+ _time(time),
+ _value_action(NULL),
+ _value_widget(NULL),
+ _updating_value_widget(false)
{
}
-TimeMarker::TimeMarker(const TimeMarker &s) :
- QObject(),
- _view(s._view),
- _colour(s._colour),
- _time(s._time)
+void TimeMarker::init_context_bar_actions(QWidget *parent)
{
+ _value_widget = new QDoubleSpinBox(parent);
+ _value_widget->setValue(_time);
+ _value_widget->setDecimals(6);
+ _value_widget->setSuffix("s");
+ _value_widget->setSingleStep(1e-6);
+
+ _value_action = new QWidgetAction(parent);
+ _value_action->setDefaultWidget(_value_widget);
+
+ connect(_value_widget, SIGNAL(valueChanged(double)),
+ this, SLOT(on_value_changed(double)));
}
double TimeMarker::time() const
void TimeMarker::set_time(double time)
{
_time = time;
+ _updating_value_widget = true;
+ _value_widget->setValue(time);
+ _updating_value_widget = false;
time_changed();
}
p.drawLine(QPointF(x, rect.top()), QPointF(x, rect.bottom()));
}
+const list<QAction*> TimeMarker::get_context_bar_actions()
+{
+ list<QAction*> actions;
+ actions.push_back(_value_action);
+ return actions;
+}
+
+void TimeMarker::on_value_changed(double value)
+{
+ if (!_updating_value_widget) {
+ _time = value;
+ time_changed();
+ }
+}
+
} // namespace view
} // namespace pv