]> sigrok.org Git - pulseview.git/blobdiff - pv/toolbars/samplingbar.h
Reworked SamplingBar device selection logic
[pulseview.git] / pv / toolbars / samplingbar.h
index aef26ef145c3882e73273ec9d52eb4aca3bf2646..e59d2f9f0b195da8417c126de2ea6f4ec7f53539 100644 (file)
@@ -24,6 +24,9 @@
 #include <stdint.h>
 
 #include <list>
+#include <map>
+
+#include <boost/shared_ptr.hpp>
 
 #include <QComboBox>
 #include <QDoubleSpinBox>
 #include <pv/widgets/popuptoolbutton.h>
 #include <pv/widgets/sweeptimingwidget.h>
 
-struct st_dev_inst;
 class QAction;
 
 namespace pv {
 
 class SigSession;
 
+namespace device {
+class DevInst;
+}
+
 namespace toolbars {
 
 class SamplingBar : public QToolBar
@@ -48,18 +54,19 @@ class SamplingBar : public QToolBar
        Q_OBJECT
 
 private:
-       static const uint64_t RecordLengths[20];
-       static const uint64_t DefaultRecordLength;
+       static const uint64_t MinSampleCount;
+       static const uint64_t MaxSampleCount;
+       static const uint64_t DefaultSampleCount;
 
 public:
        SamplingBar(SigSession &session, QWidget *parent);
 
-       void set_device_list(const std::list<struct sr_dev_inst*> &devices);
-
-       struct sr_dev_inst* get_selected_device() const;
-       void set_selected_device(struct sr_dev_inst *const sdi);
+       void set_device_list(
+               const std::list< boost::shared_ptr<pv::device::DevInst> >
+                       &devices,
+               boost::shared_ptr<pv::device::DevInst> selected);
 
-       uint64_t get_record_length() const;
+       boost::shared_ptr<pv::device::DevInst> get_selected_device() const;
 
        void set_capture_state(pv::SigSession::capture_state state);
 
@@ -69,17 +76,25 @@ signals:
 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:
        void on_device_selected();
+       void on_sample_count_changed();
        void on_sample_rate_changed();
        void on_run_stop();
 
+       void on_config_changed();
+
 private:
        SigSession &_session;
 
        QComboBox _device_selector;
+       std::map<const sr_dev_inst*, boost::weak_ptr<device::DevInst> >
+               _device_selector_map;
        bool _updating_device_selector;
 
        pv::widgets::PopupToolButton _configure_button;
@@ -87,10 +102,12 @@ private:
 
        pv::widgets::PopupToolButton _probes_button;
 
-       QComboBox _record_length_selector;
-
+       pv::widgets::SweepTimingWidget _sample_count;
        pv::widgets::SweepTimingWidget _sample_rate;
        bool _updating_sample_rate;
+       bool _updating_sample_count;
+
+       bool _sample_count_supported;
 
        QIcon _icon_red;
        QIcon _icon_green;