]> sigrok.org Git - pulseview.git/blobdiff - pv/data/signalbase.cpp
Continue reworking the channel/signal handling
[pulseview.git] / pv / data / signalbase.cpp
index d09615c8fc1130fb95fbf0f05629c50ec8c918a8..2b38fe1ef1d3b7ec03af221453527d70cfd4f641 100644 (file)
@@ -52,8 +52,10 @@ SignalBase::SignalBase(shared_ptr<sigrok::Channel> channel, ChannelType channel_
        min_value_(0),
        max_value_(0)
 {
-       if (channel_)
+       if (channel_) {
                internal_name_ = QString::fromStdString(channel_->name());
+               index_ = channel_->index();
+       }
 
        connect(&delayed_conversion_starter_, SIGNAL(timeout()),
                this, SLOT(on_delayed_conversion_start()));
@@ -81,6 +83,11 @@ QString SignalBase::internal_name() const
        return internal_name_;
 }
 
+void SignalBase::set_internal_name(QString internal_name)
+{
+       internal_name_ = internal_name;
+}
+
 QString SignalBase::display_name() const
 {
        if ((name() != internal_name_) && (!internal_name_.isEmpty()))
@@ -119,13 +126,18 @@ SignalBase::ChannelType SignalBase::type() const
 
 unsigned int SignalBase::index() const
 {
-       return (channel_) ? channel_->index() : 0;
+       return index_;
+}
+
+void SignalBase::set_index(unsigned int index)
+{
+       index_ = index;
 }
 
 unsigned int SignalBase::logic_bit_index() const
 {
        if (channel_type_ == LogicChannel)
-               return channel_->index();
+               return index_;
        else
                return 0;
 }
@@ -155,8 +167,8 @@ void SignalBase::set_data(shared_ptr<pv::data::SignalData> data)
        if (data_) {
                disconnect(data.get(), SIGNAL(samples_cleared()),
                        this, SLOT(on_samples_cleared()));
-               disconnect(data.get(), SIGNAL(samples_added(QObject*, uint64_t, uint64_t)),
-                       this, SLOT(on_samples_added(QObject*, uint64_t, uint64_t)));
+               disconnect(data.get(), SIGNAL(samples_added(shared_ptr<Segment>, uint64_t, uint64_t)),
+                       this, SLOT(on_samples_added(shared_ptr<Segment>, uint64_t, uint64_t)));
 
                if (channel_type_ == AnalogChannel) {
                        shared_ptr<Analog> analog = analog_data();
@@ -172,8 +184,8 @@ void SignalBase::set_data(shared_ptr<pv::data::SignalData> data)
        if (data_) {
                connect(data.get(), SIGNAL(samples_cleared()),
                        this, SLOT(on_samples_cleared()));
-               connect(data.get(), SIGNAL(samples_added(QObject*, uint64_t, uint64_t)),
-                       this, SLOT(on_samples_added(QObject*, uint64_t, uint64_t)));
+               connect(data.get(), SIGNAL(samples_added(SharedPtrToSegment, uint64_t, uint64_t)),
+                       this, SLOT(on_samples_added(SharedPtrToSegment, uint64_t, uint64_t)));
 
                if (channel_type_ == AnalogChannel) {
                        shared_ptr<Analog> analog = analog_data();
@@ -752,7 +764,7 @@ void SignalBase::on_samples_cleared()
        samples_cleared();
 }
 
-void SignalBase::on_samples_added(QObject* segment, uint64_t start_sample,
+void SignalBase::on_samples_added(SharedPtrToSegment segment, uint64_t start_sample,
        uint64_t end_sample)
 {
        if (conversion_type_ != NoConversion) {
@@ -766,8 +778,7 @@ void SignalBase::on_samples_added(QObject* segment, uint64_t start_sample,
                }
        }
 
-       data::Segment* s = qobject_cast<data::Segment*>(segment);
-       samples_added(s->segment_id(), start_sample, end_sample);
+       samples_added(segment->segment_id(), start_sample, end_sample);
 }
 
 void SignalBase::on_min_max_changed(float min, float max)