]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/view.cpp
Rework the callback mechanism for the global settings
[pulseview.git] / pv / views / trace / view.cpp
index 35b6807dfc75c11ba825831c1552ee17fe490f5a..6a9c01af731180378de18a45c9c3e2affe34286d 100644 (file)
@@ -199,8 +199,7 @@ View::View(Session &session, bool is_main_view, QWidget *parent) :
        GlobalSettings settings;
        coloured_bg_ = settings.value(GlobalSettings::Key_View_ColouredBG).toBool();
 
-       GlobalSettings::register_change_handler(GlobalSettings::Key_View_TriggerIsZeroTime,
-               bind(&View::on_settingViewTriggerIsZeroTime_changed, this, _1));
+       GlobalSettings::add_change_handler(this);
 
        connect(scrollarea_->horizontalScrollBar(), SIGNAL(valueChanged(int)),
                this, SLOT(h_scroll_value_changed(int)));
@@ -239,6 +238,11 @@ View::View(Session &session, bool is_main_view, QWidget *parent) :
        set_segment_display_mode(segment_display_mode_);
 }
 
+View::~View()
+{
+       GlobalSettings::remove_change_handler(this);
+}
+
 Session& View::session()
 {
        return session_;
@@ -861,6 +865,12 @@ void View::restack_all_trace_tree_items()
                i->animate_to_layout_v_offset();
 }
 
+void View::on_setting_changed(const QString &key, const QVariant &value)
+{
+       if (key == GlobalSettings::Key_View_TriggerIsZeroTime)
+               on_settingViewTriggerIsZeroTime_changed(value);
+}
+
 void View::trigger_event(int segment_id, util::Timestamp location)
 {
        // TODO This doesn't work if we're showing multiple segments at once