]> sigrok.org Git - pulseview.git/blobdiff - pv/mainwindow.cpp
Apply changes suggested by clang-tidy
[pulseview.git] / pv / mainwindow.cpp
index e925bd63e8d8ee06a070debc1b7e013ea17211af..4ab78d1dc9972b1e2433fd34c830b240a3624c5e 100644 (file)
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
-using std::bind;
 using std::dynamic_pointer_cast;
 using std::make_shared;
-using std::map;
-using std::placeholders::_1;
 using std::shared_ptr;
 using std::string;
 
@@ -80,14 +77,7 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) :
        qRegisterMetaType<util::Timestamp>("util::Timestamp");
        qRegisterMetaType<uint64_t>("uint64_t");
 
-       GlobalSettings::register_change_handler(GlobalSettings::Key_View_ColouredBG,
-               bind(&MainWindow::on_settingViewColouredBg_changed, this, _1));
-
-       GlobalSettings::register_change_handler(GlobalSettings::Key_View_ShowSamplingPoints,
-               bind(&MainWindow::on_settingViewShowSamplingPoints_changed, this, _1));
-
-       GlobalSettings::register_change_handler(GlobalSettings::Key_View_ShowAnalogMinorGrid,
-               bind(&MainWindow::on_settingViewShowAnalogMinorGrid_changed, this, _1));
+       GlobalSettings::add_change_handler(this);
 
        GlobalSettings settings;
        settings.set_defaults_where_needed();
@@ -98,6 +88,8 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) :
 
 MainWindow::~MainWindow()
 {
+       GlobalSettings::remove_change_handler(this);
+
        while (!sessions_.empty())
                remove_session(sessions_.front());
 }
@@ -152,7 +144,7 @@ shared_ptr<views::ViewBase> MainWindow::add_view(const QString &title,
 
        if (type == views::ViewTypeTrace)
                // This view will be the main view if there's no main bar yet
-               v = make_shared<views::TraceView::View>(session,
+               v = make_shared<views::trace::View>(session,
                        (main_bar ? false : true), dock_main);
 
        if (!v)
@@ -175,13 +167,13 @@ shared_ptr<views::ViewBase> MainWindow::add_view(const QString &title,
        connect(close_btn, SIGNAL(clicked(bool)),
                this, SLOT(on_view_close_clicked()));
 
-       connect(&session, SIGNAL(trigger_event(util::Timestamp)),
+       connect(&session, SIGNAL(trigger_event(int, util::Timestamp)),
                qobject_cast<views::ViewBase*>(v.get()),
-               SLOT(trigger_event(util::Timestamp)));
+               SLOT(trigger_event(int, util::Timestamp)));
 
        if (type == views::ViewTypeTrace) {
-               views::TraceView::View *tv =
-                       qobject_cast<views::TraceView::View*>(v.get());
+               views::trace::View *tv =
+                       qobject_cast<views::trace::View*>(v.get());
 
                tv->enable_coloured_bg(settings.value(GlobalSettings::Key_View_ColouredBG).toBool());
                tv->enable_show_sampling_points(settings.value(GlobalSettings::Key_View_ShowSamplingPoints).toBool());
@@ -338,20 +330,26 @@ void MainWindow::add_default_session()
 
        shared_ptr<Session> session = add_session();
 
-       map<string, string> dev_info;
-       shared_ptr<devices::HardwareDevice> other_device, demo_device;
-
-       // Use any available device that's not demo
+       // Check the list of available devices. Prefer the one that was
+       // found with user supplied scan specs (if applicable). Then try
+       // one of the auto detected devices that are not the demo device.
+       // Pick demo in the absence of "genuine" hardware devices.
+       shared_ptr<devices::HardwareDevice> user_device, other_device, demo_device;
        for (shared_ptr<devices::HardwareDevice> dev : device_manager_.devices()) {
-               if (dev->hardware_device()->driver()->name() == "demo") {
+               if (dev == device_manager_.user_spec_device()) {
+                       user_device = dev;
+               } else if (dev->hardware_device()->driver()->name() == "demo") {
                        demo_device = dev;
                } else {
                        other_device = dev;
                }
        }
-
-       // ...and if there isn't any, just use demo then
-       session->select_device(other_device ? other_device : demo_device);
+       if (user_device)
+               session->select_device(user_device);
+       else if (other_device)
+               session->select_device(other_device);
+       else
+               session->select_device(demo_device);
 }
 
 void MainWindow::save_sessions()
@@ -395,6 +393,18 @@ void MainWindow::restore_sessions()
        }
 }
 
+void MainWindow::on_setting_changed(const QString &key, const QVariant &value)
+{
+       if (key == GlobalSettings::Key_View_ColouredBG)
+               on_settingViewColouredBg_changed(value);
+
+       if (key == GlobalSettings::Key_View_ShowSamplingPoints)
+               on_settingViewShowSamplingPoints_changed(value);
+
+       if (key == GlobalSettings::Key_View_ShowAnalogMinorGrid)
+               on_settingViewShowAnalogMinorGrid_changed(value);
+}
+
 void MainWindow::setup_ui()
 {
        setObjectName(QString::fromUtf8("MainWindow"));
@@ -403,7 +413,7 @@ void MainWindow::setup_ui()
 
        // Set the window icon
        QIcon icon;
-       icon.addFile(QString(":/icons/sigrok-logo-notext.png"));
+       icon.addFile(QString(":/icons/pulseview.png"));
        setWindowIcon(icon);
 
        view_sticky_scrolling_shortcut_ = new QShortcut(QKeySequence(Qt::Key_S), this, SLOT(on_view_sticky_scrolling_shortcut()));
@@ -799,8 +809,8 @@ void MainWindow::on_settingViewColouredBg_changed(const QVariant new_value)
                shared_ptr<views::ViewBase> viewbase = entry.second;
 
                // Only trace views have this setting
-               views::TraceView::View* view =
-                               qobject_cast<views::TraceView::View*>(viewbase.get());
+               views::trace::View* view =
+                               qobject_cast<views::trace::View*>(viewbase.get());
                if (view)
                        view->enable_coloured_bg(state);
        }
@@ -814,8 +824,8 @@ void MainWindow::on_settingViewShowSamplingPoints_changed(const QVariant new_val
                shared_ptr<views::ViewBase> viewbase = entry.second;
 
                // Only trace views have this setting
-               views::TraceView::View* view =
-                               qobject_cast<views::TraceView::View*>(viewbase.get());
+               views::trace::View* view =
+                               qobject_cast<views::trace::View*>(viewbase.get());
                if (view)
                        view->enable_show_sampling_points(state);
        }
@@ -829,8 +839,8 @@ void MainWindow::on_settingViewShowAnalogMinorGrid_changed(const QVariant new_va
                shared_ptr<views::ViewBase> viewbase = entry.second;
 
                // Only trace views have this setting
-               views::TraceView::View* view =
-                               qobject_cast<views::TraceView::View*>(viewbase.get());
+               views::trace::View* view =
+                               qobject_cast<views::trace::View*>(viewbase.get());
                if (view)
                        view->enable_show_analog_minor_grid(state);
        }