void CaptureInterfacesDialog::updateStatistics(void) { //guint diff; QList<int> *points = NULL; if (!stat_cache_) { // Start gathering statistics using dumpcap // We crash (on OS X at least) if we try to do this from ::showEvent. stat_cache_ = capture_stat_start(&global_capture_opts); } if (!stat_cache_) return; for (int row = 0; row < ui->tbInterfaces->rowCount(); row++) { //bool checked = (ui->tbInterfaces->item(row, 0)->checkState() == Qt::Checked) ? true : false; //points = new QList<int>(); // for (if_idx = 0; if_idx < global_capture_opts.all_ifaces->len; if_idx++) { // device = g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx); // QString device_name = ui->tbInterfaces->item(row, INTERFACE)->text(); // if (device_name.compare(device.name) || device.hidden || device.type == IF_PIPE) // continue; //diff = 0; // if (capture_stats(stat_cache_, device.name, &stats)) { // if ((int)(stats.ps_recv - device.last_packets) >= 0) { // diff = stats.ps_recv - device.last_packets; // } // device.last_packets = stats.ps_recv; // } points = ui->tbInterfaces->item(row, TRAFFIC)->data(Qt::UserRole).value<QList<int> *>(); emit getPoints(row, points); //ui->tbInterfaces->item //ui->tbInterfaces->setItemDelegateForColumn(TRAFFIC, new SparkLineDelegate()); //points = new QList<int>(); //QTableWidgetItem *ti = new QTableWidgetItem(); //ti->setData(Qt::UserRole, qVariantFromValue(points)); QTableWidgetItem *ti = ui->tbInterfaces->item(ui->tbInterfaces->rowCount()-1, TRAFFIC); ti->setData(Qt::UserRole, qVariantFromValue(points)); //ui->tbInterfaces->setItem(ui->tbInterfaces->rowCount()-1, TRAFFIC, ti); //points->append(diff); ui->tbInterfaces->viewport()->update(); // global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, if_idx); // g_array_insert_val(global_capture_opts.all_ifaces, if_idx, device); } }
void InterfaceTree::updateStatistics(void) { #ifdef HAVE_LIBPCAP interface_t device; guint diff, if_idx; struct pcap_stat stats; if (!stat_cache_) { // Start gathering statistics using dumpcap // We crash (on OS X at least) if we try to do this from ::showEvent. stat_cache_ = capture_stat_start(&global_capture_opts); } if (!stat_cache_) return; QTreeWidgetItemIterator iter(this); while (*iter) { QList<int> *points; for (if_idx = 0; if_idx < global_capture_opts.all_ifaces->len; if_idx++) { device = g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx); QString device_name = (*iter)->data(IFTREE_COL_NAME, Qt::UserRole).value<QString>(); if (device_name.compare(device.name) || device.hidden || device.type == IF_PIPE) continue; diff = 0; if (capture_stats(stat_cache_, device.name, &stats)) { if ((int)(stats.ps_recv - device.last_packets) >= 0) { diff = stats.ps_recv - device.last_packets; device.packet_diff = diff; } device.last_packets = stats.ps_recv; } points = (*iter)->data(IFTREE_COL_STATS, Qt::UserRole).value<QList<int> *>(); points->append(diff); update(indexFromItem((*iter), IFTREE_COL_STATS)); global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, if_idx); g_array_insert_val(global_capture_opts.all_ifaces, if_idx, device); } iter++; } #endif // HAVE_LIBPCAP }
void InterfaceTree::updateStatistics(void) { interface_t device; guint diff, if_idx; struct pcap_stat stats; if (!stat_cache_) { // Start gathering statistics using dumpcap // We crash (on OS X at least) if we try to do this from ::showEvent. stat_cache_ = capture_stat_start(&global_capture_opts); } if (!stat_cache_) return; QTreeWidgetItemIterator iter(this); while (*iter) { QList<int> *points; QVariant v; for (if_idx = 0; if_idx < global_capture_opts.all_ifaces->len; if_idx++) { device = g_array_index(global_capture_opts.all_ifaces, interface_t, if_idx); if ((*iter)->text(0).compare(QString().fromUtf8(device.name)) || device.hidden || device.type == IF_PIPE) continue; diff = 0; if (capture_stats(stat_cache_, device.name, &stats)) { if ((int)(stats.ps_recv - device.last_packets) >= 0) { diff = stats.ps_recv - device.last_packets; } device.last_packets = stats.ps_recv; } v = (*iter)->data(1, Qt::UserRole); points = v.value<QList<int> *>(); points->append(diff); update(indexFromItem((*iter), 1)); global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, if_idx); g_array_insert_val(global_capture_opts.all_ifaces, if_idx, device); } iter++; } }