X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fglobalsettings.cpp;h=1a589fe9cf0459b986d88f2b5dfaa3398a1ba710;hp=6b13df16e397fc44ab6dd2473b92bba1f316c58f;hb=c1a688dec0b117146a47cc5200e5bc81e445fd2c;hpb=d3feec232211b3acec6a323ca3b8008ed8b2faa0 diff --git a/pv/globalsettings.cpp b/pv/globalsettings.cpp index 6b13df16..1a589fe9 100644 --- a/pv/globalsettings.cpp +++ b/pv/globalsettings.cpp @@ -19,24 +19,28 @@ #include "globalsettings.hpp" -#include +#include +#include #include -using std::function; using std::map; -using std::multimap; +using std::vector; namespace pv { const QString GlobalSettings::Key_View_ZoomToFitDuringAcq = "View_ZoomToFitDuringAcq"; const QString GlobalSettings::Key_View_ZoomToFitAfterAcq = "View_ZoomToFitAfterAcq"; +const QString GlobalSettings::Key_View_TriggerIsZeroTime = "View_TriggerIsZeroTime"; const QString GlobalSettings::Key_View_ColouredBG = "View_ColouredBG"; const QString GlobalSettings::Key_View_StickyScrolling = "View_StickyScrolling"; const QString GlobalSettings::Key_View_ShowSamplingPoints = "View_ShowSamplingPoints"; const QString GlobalSettings::Key_View_ShowAnalogMinorGrid = "View_ShowAnalogMinorGrid"; +const QString GlobalSettings::Key_View_ConversionThresholdDispMode = "View_ConversionThresholdDispMode"; +const QString GlobalSettings::Key_View_DefaultDivHeight = "View_DefaultDivHeight"; +const QString GlobalSettings::Key_View_DefaultLogicHeight = "View_DefaultLogicHeight"; const QString GlobalSettings::Key_Dec_InitialStateConfigurable = "Dec_InitialStateConfigurable"; -multimap< QString, function > GlobalSettings::callbacks_; +vector GlobalSettings::callbacks_; bool GlobalSettings::tracking_ = false; map GlobalSettings::tracked_changes_; @@ -59,12 +63,28 @@ void GlobalSettings::set_defaults_where_needed() // Enable showing sampling points by default if (!contains(Key_View_ShowSamplingPoints)) setValue(Key_View_ShowSamplingPoints, true); + + if (!contains(Key_View_DefaultDivHeight)) + setValue(Key_View_DefaultDivHeight, + 3 * QFontMetrics(QApplication::font()).height()); + + if (!contains(Key_View_DefaultLogicHeight)) + setValue(Key_View_DefaultLogicHeight, + 2 * QFontMetrics(QApplication::font()).height()); +} + +void GlobalSettings::add_change_handler(GlobalSettingsInterface *cb) +{ + callbacks_.push_back(cb); } -void GlobalSettings::register_change_handler(const QString key, - function cb) +void GlobalSettings::remove_change_handler(GlobalSettingsInterface *cb) { - callbacks_.emplace(key, cb); + for (auto cb_it = callbacks_.begin(); cb_it != callbacks_.end(); cb_it++) + if (*cb_it == cb) { + callbacks_.erase(cb_it); + break; + } } void GlobalSettings::setValue(const QString &key, const QVariant &value) @@ -76,11 +96,9 @@ void GlobalSettings::setValue(const QString &key, const QVariant &value) QSettings::setValue(key, value); - // Call all registered callbacks for this key - auto range = callbacks_.equal_range(key); - - for (auto it = range.first; it != range.second; it++) - it->second(value); + // Call all registered callbacks + for (GlobalSettingsInterface *cb : callbacks_) + cb->on_setting_changed(key, value); } void GlobalSettings::start_tracking()