X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fanalogsignal.cpp;h=5e7081d61145e0555dc8a048cc65c850c5f49de0;hp=58a186ecf0229cd28e7a2bd134f9e76613205667;hb=2601ce965fc455d23f5a964b84ddd74eb93705c4;hpb=1d150cd6ea6d9c465d607377bba435a065f104cd diff --git a/pv/views/trace/analogsignal.cpp b/pv/views/trace/analogsignal.cpp index 58a186ec..5e7081d6 100644 --- a/pv/views/trace/analogsignal.cpp +++ b/pv/views/trace/analogsignal.cpp @@ -46,6 +46,7 @@ #include +using std::bind; using std::deque; using std::div; using std::div_t; @@ -54,6 +55,7 @@ using std::make_pair; using std::min; using std::numeric_limits; using std::pair; +using std::placeholders::_1; using std::shared_ptr; using std::vector; @@ -111,7 +113,13 @@ AnalogSignal::AnalogSignal( connect(analog_data, SIGNAL(min_max_changed(float, float)), this, SLOT(on_min_max_changed(float, float))); + GlobalSettings::register_change_handler(GlobalSettings::Key_View_ShowConversionThresholds, + bind(&AnalogSignal::on_settingViewShowConversionThresholds_changed, this, _1)); + GlobalSettings gs; + show_conversion_thresholds_ = + gs.value(GlobalSettings::Key_View_ShowConversionThresholds).toBool(); + div_height_ = gs.value(GlobalSettings::Key_View_DefaultDivHeight).toInt(); base_->set_colour(SignalColours[base_->index() % countof(SignalColours)]); @@ -198,15 +206,10 @@ void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp) if (!base_->enabled()) return; - // TODO Register a change handler instead of querying this with every repaint - GlobalSettings settings; - const bool show_conversion_thresholds = - settings.value(GlobalSettings::Key_View_ShowConversionThresholds).toBool(); - const vector thresholds = base_->get_conversion_thresholds(); // Only display thresholds if we have some and we show analog samples - if ((thresholds.size() > 0) && show_conversion_thresholds && + if ((thresholds.size() > 0) && show_conversion_thresholds_ && ((display_type_ == DisplayAnalog) || (display_type_ == DisplayBoth))) { const int visual_y = get_visual_y(); @@ -1070,6 +1073,14 @@ void AnalogSignal::on_display_type_changed(int index) owner_->row_item_appearance_changed(false, true); } +void AnalogSignal::on_settingViewShowConversionThresholds_changed(const QVariant new_value) +{ + show_conversion_thresholds_ = new_value.toBool(); + + if (owner_) + owner_->row_item_appearance_changed(false, true); +} + } // namespace trace } // namespace views } // namespace pv