Replace map by list to preserve device order
[pulseview.git] / pv / toolbars / samplingbar.h
index 6fc8abd38e0fcdce4bcd6a45f2a4a36233f0b424..d8d81219659e9a0cc19ca496ef8e11a6fcb2b234 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdint.h>
 
 #include <list>
+#include <memory>
 
 #include <QComboBox>
 #include <QDoubleSpinBox>
 #include <pv/widgets/popuptoolbutton.h>
 #include <pv/widgets/sweeptimingwidget.h>
 
-struct st_dev_inst;
+namespace sigrok {
+       class Device;
+}
+
+Q_DECLARE_METATYPE(std::shared_ptr<sigrok::Device>)
+
 class QAction;
 
 namespace pv {
@@ -55,29 +61,36 @@ private:
 public:
        SamplingBar(SigSession &session, QWidget *parent);
 
-       void set_device_list(const std::list<struct sr_dev_inst*> &devices);
+       void set_device_list(
+               const std::list< std::pair<std::shared_ptr<sigrok::Device>, std::string> > &devices,
+               std::shared_ptr<sigrok::Device> selected);
 
-       struct sr_dev_inst* get_selected_device() const;
-       void set_selected_device(struct sr_dev_inst *const sdi);
+       std::shared_ptr<sigrok::Device> get_selected_device() const;
 
        void set_capture_state(pv::SigSession::capture_state state);
 
-signals:
+Q_SIGNALS:
        void run_stop();
 
 private:
        void update_sample_rate_selector();
        void update_sample_rate_selector_value();
        void update_sample_count_selector();
+       void update_device_config_widgets();
        void commit_sample_rate();
        void commit_sample_count();
 
-private slots:
+private Q_SLOTS:
        void on_device_selected();
        void on_sample_count_changed();
        void on_sample_rate_changed();
        void on_run_stop();
 
+       void on_config_changed();
+
+protected:
+       bool eventFilter(QObject *watched, QEvent *event);
+
 private:
        SigSession &_session;
 
@@ -87,7 +100,7 @@ private:
        pv::widgets::PopupToolButton _configure_button;
        QAction *_configure_button_action;
 
-       pv::widgets::PopupToolButton _probes_button;
+       pv::widgets::PopupToolButton _channels_button;
 
        pv::widgets::SweepTimingWidget _sample_count;
        pv::widgets::SweepTimingWidget _sample_rate;