X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fglobalsettings.cpp;h=8be4265b247e729d00f9bccacd433283d868250f;hb=7ba25e4f0953839d9dd9623ef8d80c57db75364b;hp=c9a757c9ebb238b3b8a7d1ff4cc4d6487fb56fa6;hpb=ffc00fdd5946593ad2a587078fd4ee9ba0a507ec;p=pulseview.git diff --git a/pv/globalsettings.cpp b/pv/globalsettings.cpp index c9a757c..8be4265 100644 --- a/pv/globalsettings.cpp +++ b/pv/globalsettings.cpp @@ -20,13 +20,12 @@ #include "globalsettings.hpp" #include -#include +#include #include #include -using std::function; using std::map; -using std::multimap; +using std::vector; namespace pv { @@ -41,8 +40,10 @@ const QString GlobalSettings::Key_View_ConversionThresholdDispMode = "View_Conve const QString GlobalSettings::Key_View_DefaultDivHeight = "View_DefaultDivHeight"; const QString GlobalSettings::Key_View_DefaultLogicHeight = "View_DefaultLogicHeight"; const QString GlobalSettings::Key_Dec_InitialStateConfigurable = "Dec_InitialStateConfigurable"; +const QString GlobalSettings::Key_Log_BufferSize = "Log_BufferSize"; +const QString GlobalSettings::Key_Log_NotifyOfStacktrace = "Log_NotifyOfStacktrace"; -multimap< QString, function > GlobalSettings::callbacks_; +vector GlobalSettings::callbacks_; bool GlobalSettings::tracking_ = false; map GlobalSettings::tracked_changes_; @@ -73,12 +74,28 @@ void GlobalSettings::set_defaults_where_needed() if (!contains(Key_View_DefaultLogicHeight)) setValue(Key_View_DefaultLogicHeight, 2 * QFontMetrics(QApplication::font()).height()); + + // Default to 500 lines of backlog + if (!contains(Key_Log_BufferSize)) + setValue(Key_Log_BufferSize, 500); + + // Notify user of existing stack trace by default + if (!contains(Key_Log_NotifyOfStacktrace)) + setValue(Key_Log_NotifyOfStacktrace, true); +} + +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) @@ -90,11 +107,11 @@ 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); + qDebug() << "Setting" << key << "changed to" << value; - 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()