diff options
-rw-r--r-- | epan/prefs.c | 12 | ||||
-rw-r--r-- | epan/prefs.h | 2 | ||||
-rw-r--r-- | ui/qt/main_window.cpp | 2 | ||||
-rw-r--r-- | ui/qt/packet_list.cpp | 43 | ||||
-rw-r--r-- | ui/qt/packet_list.h | 2 |
5 files changed, 49 insertions, 12 deletions
diff --git a/epan/prefs.c b/epan/prefs.c index 127c484699..a5393d125d 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -2391,6 +2391,16 @@ prefs_register_modules(void) "The position of \"...\" in packet list text.", (gint*)(void*)(&prefs.gui_packet_list_elide_mode), gui_packet_list_elide_mode, FALSE); + prefs_register_bool_preference(gui_layout_module, "packet_list_show_related", + "Show Related Packets", + "Show related packet indicators in the first column", + &prefs.gui_packet_list_show_related); + + prefs_register_bool_preference(gui_layout_module, "packet_list_show_minimap", + "Enable Intelligent Scroll Bar", + "Show the intelligent scroll bar (a minimap of packet list colors in the scrollbar)", + &prefs.gui_packet_list_show_minimap); + /* Console * These are preferences that can be read/written using the * preference module API. These preferences still use their own @@ -3025,6 +3035,8 @@ pre_init_prefs(void) prefs.gui_layout_content_3 = layout_pane_content_pbytes; prefs.gui_packet_editor = FALSE; prefs.gui_packet_list_elide_mode = ELIDE_RIGHT; + prefs.gui_packet_list_show_related = TRUE; + prefs.gui_packet_list_show_minimap = TRUE; prefs.gui_qt_packet_list_separator = FALSE; diff --git a/epan/prefs.h b/epan/prefs.h index ec4e0c4f1f..3ffc5313ee 100644 --- a/epan/prefs.h +++ b/epan/prefs.h @@ -223,6 +223,8 @@ typedef struct _e_prefs { gboolean gui_qt_packet_list_separator; gboolean gui_packet_editor; /* Enable Packet Editor */ elide_mode_e gui_packet_list_elide_mode; + gboolean gui_packet_list_show_related; + gboolean gui_packet_list_show_minimap; gboolean st_enable_burstinfo; gboolean st_burst_showcount; gint st_burst_resolution; diff --git a/ui/qt/main_window.cpp b/ui/qt/main_window.cpp index e0f1c1f5b0..ba2087a981 100644 --- a/ui/qt/main_window.cpp +++ b/ui/qt/main_window.cpp @@ -449,7 +449,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(wsApp, SIGNAL(columnsChanged()), packet_list_, SLOT(columnsChanged())); connect(wsApp, SIGNAL(preferencesChanged()), - packet_list_, SLOT(elideModeChanged())); + packet_list_, SLOT(preferencesChanged())); connect(wsApp, SIGNAL(recentFilesRead()), this, SLOT(applyRecentPaneGeometry())); connect(wsApp, SIGNAL(packetDissectionChanged()), diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp index 304a2dff85..d3dfc48e2b 100644 --- a/ui/qt/packet_list.cpp +++ b/ui/qt/packet_list.cpp @@ -244,6 +244,7 @@ PacketList::PacketList(QWidget *parent) : cap_file_(NULL), decode_as_(NULL), ctx_column_(-1), + overlay_timer_id_(0), create_near_overlay_(true), create_far_overlay_(true), capture_in_progress_(false), @@ -258,11 +259,9 @@ PacketList::PacketList(QWidget *parent) : setSortingEnabled(true); setUniformRowHeights(true); setAccessibleName("Packet list"); - setItemDelegateForColumn(0, &related_packet_delegate_); overlay_sb_ = new OverlayScrollBar(Qt::Vertical, this); setVerticalScrollBar(overlay_sb_); - overlay_timer_id_ = startTimer(overlay_update_interval_); packet_list_model_ = new PacketListModel(this, cap_file_); setModel(packet_list_model_); @@ -691,11 +690,31 @@ void PacketList::applyRecentColumnWidths() column_state_ = header()->saveState(); } -// This sets the mode for the entire view. If we want to make this setting -// per-column we'll either have to generalize RelatedPacketDelegate so that -// we can set it for entire rows or create another delegate. -void PacketList::elideModeChanged() +void PacketList::preferencesChanged() { + // Related packet delegate + if (prefs.gui_packet_list_show_related) { + setItemDelegateForColumn(0, &related_packet_delegate_); + } else { + setItemDelegateForColumn(0, 0); + } + + // Intelligent scroll bar (minimap) + if (prefs.gui_packet_list_show_minimap) { + if (overlay_timer_id_ == 0) { + overlay_timer_id_ = startTimer(overlay_update_interval_); + } + } else { + if (overlay_timer_id_ != 0) { + killTimer(overlay_timer_id_); + overlay_timer_id_ = 0; + } + } + + // Elide mode. + // This sets the mode for the entire view. If we want to make this setting + // per-column we'll either have to generalize RelatedPacketDelegate so that + // we can set it for entire rows or create another delegate. Qt::TextElideMode elide_mode = Qt::ElideRight; switch (prefs.gui_packet_list_elide_mode) { case ELIDE_LEFT: @@ -1325,12 +1344,14 @@ void PacketList::vScrollBarActionTriggered(int) const int height_multiplier_ = 7; void PacketList::drawNearOverlay() { - if (!cap_file_ || cap_file_->state != FILE_READ_DONE) return; - if (create_near_overlay_) { create_near_overlay_ = false; } + if (!cap_file_ || cap_file_->state != FILE_READ_DONE) return; + + if (!prefs.gui_packet_list_show_minimap) return; + qreal dp_ratio = 1.0; #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) dp_ratio = overlay_sb_->devicePixelRatio(); @@ -1411,12 +1432,14 @@ void PacketList::drawNearOverlay() void PacketList::drawFarOverlay() { - if (!cap_file_ || cap_file_->state != FILE_READ_DONE) return; - if (create_far_overlay_) { create_far_overlay_ = false; } + if (!cap_file_ || cap_file_->state != FILE_READ_DONE) return; + + if (!prefs.gui_packet_list_show_minimap) return; + qreal dp_ratio = 1.0; #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) dp_ratio = overlay_sb_->devicePixelRatio(); diff --git a/ui/qt/packet_list.h b/ui/qt/packet_list.h index 13fc6990b2..c05cece139 100644 --- a/ui/qt/packet_list.h +++ b/ui/qt/packet_list.h @@ -153,7 +153,7 @@ public slots: void columnsChanged(); void fieldsChanged(capture_file *cf); void applyRecentColumnWidths(); - void elideModeChanged(); + void preferencesChanged(); private slots: void showHeaderMenu(QPoint pos); |