aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/interface_tree.cpp
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-07-24 19:25:44 -0700
committerGuy Harris <guy@alum.mit.edu>2014-07-25 03:00:43 +0000
commit35b4487538dc88a5687c5e3a99c8c70c099fdfa8 (patch)
tree959e1cbf88f1fba0cea7c4bc5b18d2b4901b25ea /ui/qt/interface_tree.cpp
parent0501465a3acb2abc108177ea5149ec8de4a05210 (diff)
Handle empty interface lists when the list changes.
Don't assume that a change to the interface list is from a non-empty interface list to a different non-empty interface list. Change-Id: I94054ca0cf2661704aff1869385aa2155c19677d Reviewed-on: https://code.wireshark.org/review/3193 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ui/qt/interface_tree.cpp')
-rw-r--r--ui/qt/interface_tree.cpp126
1 files changed, 47 insertions, 79 deletions
diff --git a/ui/qt/interface_tree.cpp b/ui/qt/interface_tree.cpp
index 2d03390bf2..6512a960a1 100644
--- a/ui/qt/interface_tree.cpp
+++ b/ui/qt/interface_tree.cpp
@@ -121,26 +121,23 @@ void InterfaceTree::resizeEvent(QResizeEvent *evt)
setUpdatesEnabled(true);
}
-void InterfaceTree::getInterfaceList()
+void InterfaceTree::display()
{
#ifdef HAVE_LIBPCAP
- GList *if_list;
- int err;
- gchar *err_str = NULL;
+ interface_t device;
+ setDisabled(false);
clear();
- if_list = capture_interface_list(&err, &err_str,main_window_update);
- if_list = g_list_sort(if_list, if_list_comparator_alph);
-
- if (if_list == NULL) {
+ if (global_capture_opts.all_ifaces->len == 0) {
+ // Error,or just no interfaces?
QTreeWidgetItem *ti = new QTreeWidgetItem();
QLabel *err_label;
- if (err == CANT_GET_INTERFACE_LIST || err == DONT_HAVE_PCAP) {
- err_label = new QLabel(gchar_free_to_qstring(err_str));
- } else {
+ if (global_capture_opts.ifaces_err == 0) {
err_label = new QLabel("No interfaces found");
+ } else {
+ err_label = new QLabel(gchar_free_to_qstring(global_capture_opts.ifaces_err_info));
}
err_label->setWordWrap(true);
@@ -151,48 +148,33 @@ void InterfaceTree::getInterfaceList()
return;
}
- // XXX Do we need to check for this? capture_interface_list returns an error if the length is 0.
- if (g_list_length(if_list) > 0) {
- interface_t device;
- setDisabled(false);
-
- for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- QList<int> *points;
-
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
+ QList<int> *points;
- /* Continue if capture device is hidden */
- if (device.hidden) {
- continue;
- }
+ device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
- QTreeWidgetItem *ti = new QTreeWidgetItem();
- ti->setText(0, QString().fromUtf8(device.display_name));
- ti->setData(0, Qt::UserRole, QString(device.name));
- points = new QList<int>();
- ti->setData(1, Qt::UserRole, qVariantFromValue(points));
- addTopLevelItem(ti);
- // XXX Add other device information
- resizeColumnToContents(1);
- if (strstr(prefs.capture_device, device.name) != NULL) {
- device.selected = TRUE;
- global_capture_opts.num_selected++;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
- }
- if (device.selected) {
- ti->setSelected(true);
- }
+ /* Continue if capture device is hidden */
+ if (device.hidden) {
+ continue;
}
- }
- free_interface_list(if_list);
- resizeEvent(NULL);
- if (!stat_timer_) {
- updateStatistics();
- stat_timer_ = new QTimer(this);
- connect(stat_timer_, SIGNAL(timeout()), this, SLOT(updateStatistics()));
- stat_timer_->start(stat_update_interval_);
+ QTreeWidgetItem *ti = new QTreeWidgetItem();
+ ti->setText(0, QString().fromUtf8(device.display_name));
+ ti->setData(0, Qt::UserRole, QString(device.name));
+ points = new QList<int>();
+ ti->setData(1, Qt::UserRole, qVariantFromValue(points));
+ addTopLevelItem(ti);
+ // XXX Add other device information
+ resizeColumnToContents(1);
+ if (strstr(prefs.capture_device, device.name) != NULL) {
+ device.selected = TRUE;
+ global_capture_opts.num_selected++;
+ global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
+ g_array_insert_val(global_capture_opts.all_ifaces, i, device);
+ }
+ if (device.selected) {
+ ti->setSelected(true);
+ }
}
#else
QTreeWidgetItem *ti = new QTreeWidgetItem();
@@ -205,6 +187,21 @@ void InterfaceTree::getInterfaceList()
#endif // HAVE_LIBPCAP
}
+void InterfaceTree::getInterfaceList()
+{
+ display();
+ resizeEvent(NULL);
+
+#ifdef HAVE_LIBPCAP
+ if (!stat_timer_) {
+ updateStatistics();
+ stat_timer_ = new QTimer(this);
+ connect(stat_timer_, SIGNAL(timeout()), this, SLOT(updateStatistics()));
+ stat_timer_->start(stat_update_interval_);
+ }
+#endif
+}
+
void InterfaceTree::getPoints(int row, PointList *pts)
{
QTreeWidgetItemIterator iter(this);
@@ -339,36 +336,7 @@ void InterfaceTree::setSelectedInterfaces()
void InterfaceTree::interfaceListChanged()
{
#ifdef HAVE_LIBPCAP
- interface_t device;
- clear();
- for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- QList<int> *points;
-
- device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
-
- /* Continue if capture device is hidden */
- if (device.hidden) {
- continue;
- }
-
- QTreeWidgetItem *ti = new QTreeWidgetItem();
- ti->setText(0, QString().fromUtf8(device.display_name));
- ti->setData(0, Qt::UserRole, QString(device.name));
- points = new QList<int>();
- ti->setData(1, Qt::UserRole, qVariantFromValue(points));
- addTopLevelItem(ti);
- // XXX Add other device information
- resizeColumnToContents(1);
- if (strstr(prefs.capture_device, device.name) != NULL) {
- device.selected = TRUE;
- global_capture_opts.num_selected++;
- global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
- g_array_insert_val(global_capture_opts.all_ifaces, i, device);
- }
- if (device.selected) {
- ti->setSelected(true);
- }
- }
+ display();
#endif
}