Qt: Disable Sorting for the packet List

Allows the sorting to be disabled to avoid painful recalculations if the
sorting has been clicked on by accident.

Fixes #16786
This commit is contained in:
Roland Knall 2022-03-17 16:52:47 +01:00 committed by Roland Knall
parent b82ef4ad04
commit 9d11321385
6 changed files with 28 additions and 1 deletions

View File

@ -3453,6 +3453,11 @@ prefs_register_modules(void)
"Show the intelligent scroll bar (a minimap of packet list colors in the scrollbar)",
&prefs.gui_packet_list_show_minimap);
prefs_register_bool_preference(gui_module, "packet_list_is_sortable",
"Allow packet list to be sortable",
"To prevent sorting by mistake (which can take some time to calculate), it can be disabled",
&prefs.gui_packet_list_sortable);
prefs_register_bool_preference(gui_module, "interfaces_show_hidden",
"Show hidden interfaces",
@ -4165,6 +4170,7 @@ pre_init_prefs(void)
prefs.gui_packet_list_elide_mode = ELIDE_RIGHT;
prefs.gui_packet_list_show_related = TRUE;
prefs.gui_packet_list_show_minimap = TRUE;
prefs.gui_packet_list_sortable = TRUE;
g_free (prefs.gui_interfaces_hide_types);
prefs.gui_interfaces_hide_types = g_strdup("");
prefs.gui_interfaces_show_hidden = FALSE;

View File

@ -229,6 +229,7 @@ typedef struct _e_prefs {
elide_mode_e gui_packet_list_elide_mode;
gboolean gui_packet_list_show_related;
gboolean gui_packet_list_show_minimap;
gboolean gui_packet_list_sortable;
gint gui_decimal_places1; /* Used for type 1 calculations */
gint gui_decimal_places2; /* Used for type 2 calculations */
gint gui_decimal_places3; /* Used for type 3 calculations */

View File

@ -48,6 +48,7 @@ LayoutPreferencesFrame::LayoutPreferencesFrame(QWidget *parent) :
ui->packetListSeparatorCheckBox->setStyleSheet(indent_ss);
ui->packetListHeaderShowColumnDefinition->setStyleSheet(indent_ss);
ui->packetListHoverStyleCheckbox->setStyleSheet(indent_ss);
ui->packetListAllowSorting->setStyleSheet(indent_ss);
ui->statusBarShowSelectedPacketCheckBox->setStyleSheet(indent_ss);
ui->statusBarShowFileLoadTimeCheckBox->setStyleSheet(indent_ss);
@ -60,6 +61,9 @@ LayoutPreferencesFrame::LayoutPreferencesFrame(QWidget *parent) :
pref_packet_list_hover_style_ = prefFromPrefPtr(&prefs.gui_qt_packet_list_hover_style);
ui->packetListHoverStyleCheckbox->setChecked(prefs_get_bool_value(pref_packet_list_hover_style_, pref_stashed));
pref_packet_list_sorting_ = prefFromPrefPtr(&prefs.gui_packet_list_sortable);
ui->packetListAllowSorting->setChecked(prefs_get_bool_value(pref_packet_list_sorting_, pref_stashed));
pref_show_selected_packet_ = prefFromPrefPtr(&prefs.gui_qt_show_selected_packet);
ui->statusBarShowSelectedPacketCheckBox->setChecked(prefs_get_bool_value(pref_show_selected_packet_, pref_stashed));
@ -342,6 +346,7 @@ void LayoutPreferencesFrame::on_restoreButtonBox_clicked(QAbstractButton *)
ui->packetListSeparatorCheckBox->setChecked(prefs_get_bool_value(pref_packet_list_separator_, pref_default));
ui->packetListHeaderShowColumnDefinition->setChecked(prefs_get_bool_value(pref_packet_header_column_definition_, pref_default));
ui->packetListHoverStyleCheckbox->setChecked(prefs_get_bool_value(pref_packet_list_hover_style_, pref_default));
ui->packetListAllowSorting->setChecked(prefs_get_bool_value(pref_packet_list_sorting_, pref_default));
ui->statusBarShowSelectedPacketCheckBox->setChecked(prefs_get_bool_value(pref_show_selected_packet_, pref_default));
ui->statusBarShowFileLoadTimeCheckBox->setChecked(prefs_get_bool_value(pref_show_file_load_time_, pref_default));
}
@ -361,6 +366,11 @@ void LayoutPreferencesFrame::on_packetListHoverStyleCheckbox_toggled(bool checke
prefs_set_bool_value(pref_packet_list_hover_style_, (gboolean) checked, pref_stashed);
}
void LayoutPreferencesFrame::on_packetListAllowSorting_toggled(bool checked)
{
prefs_set_bool_value(pref_packet_list_sorting_, (gboolean) checked, pref_stashed);
}
void LayoutPreferencesFrame::on_statusBarShowSelectedPacketCheckBox_toggled(bool checked)
{
prefs_set_bool_value(pref_show_selected_packet_, (gboolean) checked, pref_stashed);

View File

@ -40,6 +40,7 @@ private:
pref_t *pref_packet_list_separator_;
pref_t *pref_packet_header_column_definition_;
pref_t *pref_packet_list_hover_style_;
pref_t *pref_packet_list_sorting_;
pref_t *pref_show_selected_packet_;
pref_t *pref_show_file_load_time_;
@ -71,6 +72,7 @@ private slots:
void on_packetListSeparatorCheckBox_toggled(bool checked);
void on_packetListHeaderShowColumnDefinition_toggled(bool checked);
void on_packetListHoverStyleCheckbox_toggled(bool checked);
void on_packetListAllowSorting_toggled(bool checked);
void on_statusBarShowSelectedPacketCheckBox_toggled(bool checked);
void on_statusBarShowFileLoadTimeCheckBox_toggled(bool checked);
};

View File

@ -395,6 +395,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="packetListAllowSorting">
<property name="text">
<string>Allow the list to be sorted</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="packetListHoverStyleCheckbox">
<property name="text">

View File

@ -245,7 +245,7 @@ PacketList::PacketList(QWidget *parent) :
{
setItemsExpandable(false);
setRootIsDecorated(false);
setSortingEnabled(true);
setSortingEnabled(prefs.gui_packet_list_sortable);
setUniformRowHeights(true);
setAccessibleName("Packet list");
@ -284,6 +284,7 @@ PacketList::PacketList(QWidget *parent) :
connect(packet_list_model_, SIGNAL(itemHeightChanged(const QModelIndex&)), this, SLOT(updateRowHeights(const QModelIndex&)));
connect(wsApp, SIGNAL(addressResolutionChanged()), this, SLOT(redrawVisiblePacketsDontSelectCurrent()));
connect(wsApp, SIGNAL(columnDataChanged()), this, SLOT(redrawVisiblePacketsDontSelectCurrent()));
connect(wsApp, &WiresharkApplication::preferencesChanged, this, [=]() { setSortingEnabled(prefs.gui_packet_list_sortable); });
connect(header(), SIGNAL(sectionResized(int,int,int)),
this, SLOT(sectionResized(int,int,int)));