wireshark/ui/qt/interface_tree.cpp

94 lines
2.8 KiB
C++

/* interface_tree.cpp
*
* $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "interface_tree.h"
#include "config.h"
#ifdef HAVE_LIBPCAP
#include "capture.h"
#include "capture-pcap-util.h"
#include "capture_opts.h"
#include "capture_ui_utils.h"
#endif
#include <QLabel>
#include <QHeaderView>
InterfaceTree::InterfaceTree(QWidget *parent) :
QTreeWidget(parent)
{
GList *if_list;
QTreeWidgetItem *ti;
int err;
gchar *err_str = NULL;
header()->setVisible(false);
setRootIsDecorated(false);
setUniformRowHeights(true);
setAccessibleName(tr("Welcome screen list"));
setStyleSheet(
"QTreeWidget {"
" border: 0;"
"}"
);
if_list = capture_interface_list(&err, &err_str);
g_log(NULL, G_LOG_LEVEL_DEBUG, "FIX: move if_list_comparator_alph out of ui/gtk/");
// if_list = g_list_sort(if_list, if_list_comparator_alph);
if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {
ti = new QTreeWidgetItem();
QLabel *label = new QLabel(QString(tr("<h3>No interfaces found</h3>%1")).arg(QString().fromUtf8(err_str)));
label->setWordWrap(true);
setDisabled(true);
addTopLevelItem(ti);
setItemWidget(ti, 0, label);
return;
} else if (err_str) {
g_free(err_str);
}
// 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) {
if_info_t *if_info;
GList *curr;
setDisabled(false);
for (curr = g_list_first(if_list); curr; curr = g_list_next(curr)) {
if_info = (if_info_t *) curr->data;
/* Continue if capture device is hidden */
// if (prefs_is_capture_device_hidden(if_info->name)) {
// continue;
// }
ti = new QTreeWidgetItem();
ti->setText(0, QString().fromUtf8(if_info->description ? if_info->description : if_info->name));
addTopLevelItem(ti);
}
}
free_interface_list(if_list);
}