X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=b53360fcd9508bbbc559978181a33cfe88ecad71;hp=38e862cf30fff42732c3396a26eebd6e07ae914d;hb=3a21afa6a5dfc06c17f127960bb0038fd322f213;hpb=43017494e4cca1f2a0470b57ad3aceb977aced6b diff --git a/pv/session.cpp b/pv/session.cpp index 38e862c..b53360f 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -167,7 +167,7 @@ void Session::save_settings(QSettings &settings) const { map dev_info; list key_list; - int stacks = 0; + int stacks = 0, views = 0; if (device_) { shared_ptr hw_device = @@ -230,6 +230,22 @@ void Session::save_settings(QSettings &settings) const } settings.setValue("decoder_stacks", stacks); + + // Save view states and their signal settings + // Note: main_view must be saved as view0 + settings.beginGroup("view" + QString::number(views++)); + main_view_->save_settings(settings); + settings.endGroup(); + + for (shared_ptr view : views_) { + if (view != main_view_) { + settings.beginGroup("view" + QString::number(views++)); + view->save_settings(settings); + settings.endGroup(); + } + } + + settings.setValue("views", views); } } @@ -307,6 +323,22 @@ void Session::restore_settings(QSettings &settings) settings.endGroup(); } #endif + + // Restore views + int views = settings.value("views").toInt(); + + for (int i = 0; i < views; i++) { + settings.beginGroup("view" + QString::number(i)); + + if (i > 0) { + view::ViewType type = (view::ViewType)settings.value("type").toInt(); + add_view(name_, type, this); + views_.back()->restore_settings(settings); + } else + main_view_->restore_settings(settings); + + settings.endGroup(); + } } } @@ -439,12 +471,13 @@ void Session::register_view(std::shared_ptr view) main_view_ = view; } - views_.insert(view); + views_.push_back(view); } void Session::deregister_view(std::shared_ptr view) { - views_.erase(view); + views_.remove_if([&](std::shared_ptr v) { + return v == view; }); if (views_.empty()) { main_view_.reset(); @@ -456,7 +489,11 @@ void Session::deregister_view(std::shared_ptr view) bool Session::has_view(std::shared_ptr view) { - return views_.find(view) != views_.end(); + for (std::shared_ptr v : views_) + if (v == view) + return true; + + return false; } double Session::get_samplerate() const