From 9f8d00c1741604ae6ad53e2f27e2686e1df10cc3 Mon Sep 17 00:00:00 2001 From: Gerald Combs Date: Tue, 27 Oct 2015 15:04:44 -0700 Subject: Add preferences for related packets and the scroll bar minimap. Add gui.packet_list_show_related and gui.packet_list_show_minimap. Show_related enables and disables the related packet delegate. Show_minimap enables and disables the minimap. Start calling it the "intelligent scroll bar" since that's the best suggestion for a name I've seen so far. Leave them out of the Appearance preference pane for now. Change-Id: I5869c446fda5c8e62d6b1e49a74d63ba3b117b0f Reviewed-on: https://code.wireshark.org/review/11332 Petri-Dish: Gerald Combs Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs --- ui/qt/packet_list.cpp | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'ui/qt/packet_list.cpp') 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(); -- cgit v1.2.1