X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fdecodetrace.cpp;h=888064d09e12583cde3937eaab98fdee725e43bc;hp=2902c936552757ee1c88160a32d0f2b8d24ca82a;hb=HEAD;hpb=f6a93932056dab5e2f75207b65197b436d4141a5
diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp
index 2902c936..63384911 100644
--- a/pv/views/trace/decodetrace.cpp
+++ b/pv/views/trace/decodetrace.cpp
@@ -17,9 +17,7 @@
* along with this program; if not, see .
*/
-extern "C" {
#include
-}
#include
#include
@@ -188,7 +186,16 @@ DecodeTrace::DecodeTrace(pv::Session &session,
this, SLOT(on_decode_finished()));
connect(decode_signal_.get(), SIGNAL(channels_updated()),
this, SLOT(on_channels_updated()));
-
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ connect(&delete_mapper_, SIGNAL(mappedInt(int)),
+ this, SLOT(on_delete_decoder(int)));
+ connect(&show_hide_mapper_, SIGNAL(mappedInt(int)),
+ this, SLOT(on_show_hide_decoder(int)));
+ connect(&row_show_hide_mapper_, SIGNAL(mappedInt(int)),
+ this, SLOT(on_show_hide_row(int)));
+ connect(&class_show_hide_mapper_, SIGNAL(mappedObject(QObject*)),
+ this, SLOT(on_show_hide_class(QObject*)));
+#else
connect(&delete_mapper_, SIGNAL(mapped(int)),
this, SLOT(on_delete_decoder(int)));
connect(&show_hide_mapper_, SIGNAL(mapped(int)),
@@ -197,6 +204,7 @@ DecodeTrace::DecodeTrace(pv::Session &session,
this, SLOT(on_show_hide_row(int)));
connect(&class_show_hide_mapper_, SIGNAL(mapped(QWidget*)),
this, SLOT(on_show_hide_class(QWidget*)));
+#endif
connect(&delayed_trace_updater_, SIGNAL(timeout()),
this, SLOT(on_delayed_trace_update()));
@@ -669,10 +677,19 @@ void DecodeTrace::mouse_left_press_event(const QMouseEvent* event)
continue;
unsigned int y = get_row_y(&r);
- if ((event->x() > 0) && (event->x() <= (int)(ArrowSize + 3 + r.title_width)) &&
- (event->y() > (int)(y - (default_row_height_ / 2))) &&
- (event->y() <= (int)(y + (default_row_height_ / 2)))) {
-
+ bool need_anim = true;
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ need_anim &= event->position().x() > 0;
+ need_anim &= event->position().x() <= (int)(ArrowSize + 3 + r.title_width);
+ need_anim &= event->position().y() > (int)(y - (default_row_height_ / 2));
+ need_anim &= event->position().y() <= (int)(y + (default_row_height_ / 2));
+#else
+ need_anim &= event->x() > 0;
+ need_anim &= event->x() <= (int)(ArrowSize + 3 + r.title_width);
+ need_anim &= event->y() > (int)(y - (default_row_height_ / 2));
+ need_anim &= event->y() <= (int)(y + (default_row_height_ / 2));
+#endif
+ if (need_anim) {
if (r.expanded) {
r.collapsing = true;
r.expanded = false;
@@ -1032,8 +1049,17 @@ const QString DecodeTrace::get_annotation_at_point(const QPoint &point)
decode_signal_->get_annotation_subset(annotations, r->decode_row,
current_segment_, sample_range.first, sample_range.second);
- return (annotations.empty()) ?
- QString() : annotations[0]->annotations()->front();
+ const Annotation* a = annotations.empty() ? nullptr : annotations[0];
+
+ // Create a string of the format "CLASS: VALUE"
+ QString s;
+ if (a) {
+ if (!a->ann_class_description().isEmpty())
+ s = a->ann_class_description() + ": ";
+ s += a->annotations()->front();
+ }
+
+ return s;
}
void DecodeTrace::create_decoder_form(int index, shared_ptr &dec,
@@ -1131,10 +1157,9 @@ QComboBox* DecodeTrace::create_channel_selector(QWidget *parent, const DecodeCha
for (const shared_ptr &b : sig_list) {
assert(b);
if (b->logic_data() && b->enabled()) {
- selector->addItem(b->name(),
- QVariant::fromValue((void*)b.get()));
+ selector->addItem(b->name(), QVariant::fromValue(b));
- if (ch->assigned_signal == b.get())
+ if (ch->assigned_signal == b)
selector->setCurrentIndex(selector->count() - 1);
}
}
@@ -1243,6 +1268,19 @@ void DecodeTrace::initialize_row_widgets(DecodeTraceRow* r, unsigned int row_id)
QPalette header_palette = owner_->view()->palette();
QPalette selector_palette = owner_->view()->palette();
+#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
+ if (GlobalSettings::current_theme_is_dark()) {
+ header_palette.setColor(QPalette::Window,
+ QColor(255, 255, 255, ExpansionAreaHeaderAlpha));
+ selector_palette.setColor(QPalette::Window,
+ QColor(255, 255, 255, ExpansionAreaAlpha));
+ } else {
+ header_palette.setColor(QPalette::Window,
+ QColor(0, 0, 0, ExpansionAreaHeaderAlpha));
+ selector_palette.setColor(QPalette::Window,
+ QColor(0, 0, 0, ExpansionAreaAlpha));
+ }
+#else
if (GlobalSettings::current_theme_is_dark()) {
header_palette.setColor(QPalette::Background,
QColor(255, 255, 255, ExpansionAreaHeaderAlpha));
@@ -1254,6 +1292,7 @@ void DecodeTrace::initialize_row_widgets(DecodeTraceRow* r, unsigned int row_id)
selector_palette.setColor(QPalette::Background,
QColor(0, 0, 0, ExpansionAreaAlpha));
}
+#endif
const int w = m.boundingRect(r->decode_row->title()).width() + RowTitleMargin;
r->title_width = w;
@@ -1523,8 +1562,8 @@ void DecodeTrace::on_channel_selected(int)
QComboBox *cb = qobject_cast(QObject::sender());
// Determine signal that was selected
- const data::SignalBase *signal =
- (data::SignalBase*)cb->itemData(cb->currentIndex()).value();
+ shared_ptr signal =
+ cb->itemData(cb->currentIndex()).value>();
// Determine decode channel ID this combo box is the channel selector for
const uint16_t id = channel_id_map_.at(cb);
@@ -1596,7 +1635,11 @@ void DecodeTrace::on_show_hide_row(int row_id)
owner_->row_item_appearance_changed(false, true);
}
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+void DecodeTrace::on_show_hide_class(QObject* sender)
+#else
void DecodeTrace::on_show_hide_class(QWidget* sender)
+#endif
{
void* ann_class_ptr = sender->property("ann_class_ptr").value();
assert(ann_class_ptr);