void ResponseTimeDelayDialog::fillTree()
{
    rtd_data_t rtd_data;
    memset (&rtd_data, 0, sizeof(rtd_data));
    rtd_table_dissector_init(rtd_, &rtd_data.stat_table, NULL, NULL);
    rtd_data.user_data = this;

    QByteArray display_filter = displayFilter().toUtf8();
    if (!registerTapListener(get_rtd_tap_listener_name(rtd_),
                          &rtd_data,
                          display_filter.constData(),
                          0,
                          tapReset,
                          get_rtd_packet_func(rtd_),
                          tapDraw)) {
        free_rtd_table(&rtd_data.stat_table, NULL, NULL);
        reject(); // XXX Stay open instead?
        return;
    }

    statsTreeWidget()->setSortingEnabled(false);

    cap_file_.retapPackets();

    tapDraw(&rtd_data);

    statsTreeWidget()->sortItems(col_type_, Qt::AscendingOrder);
    statsTreeWidget()->setSortingEnabled(true);

    removeTapListeners();
    free_rtd_table(&rtd_data.stat_table, NULL, NULL);
}
void SimpleStatisticsDialog::fillTree()
{
    new_stat_data_t stat_data;
    stat_data.new_stat_tap_data = stu_;
    stat_data.user_data = this;

    stu_->stat_tap_init_cb(stu_, NULL, NULL);

    GString *error_string = register_tap_listener(stu_->tap_name,
                          &stat_data,
                          displayFilter(),
                          0,
                          tapReset,
                          stu_->packet_func,
                          tapDraw);
    if (error_string) {
        QMessageBox::critical(this, tr("Failed to attach to tap \"%1\"").arg(stu_->tap_name),
                             error_string->str);
        g_string_free(error_string, TRUE);
        free_stat_tables(stu_, NULL, NULL);
        reject();
    }

    cap_file_.retapPackets();

    tapDraw(&stat_data);

    remove_tap_listener(&stat_data);
    free_stat_tables(stu_, NULL, NULL);
}
void ResponseTimeDelayDialog::fillTree()
{
    rtd_data_t rtd_data;
    memset (&rtd_data, 0, sizeof(rtd_data));
    rtd_table_dissector_init(rtd_, &rtd_data.stat_table, NULL, NULL);
    rtd_data.user_data = this;

    GString *error_string = register_tap_listener(get_rtd_tap_listener_name(rtd_),
                          &rtd_data,
                          displayFilter(),
                          0,
                          tapReset,
                          get_rtd_packet_func(rtd_),
                          tapDraw);
    if (error_string) {
        QMessageBox::critical(this, tr("Failed to attach to tap \"%1\"").arg(get_rtd_tap_listener_name(rtd_)),
                             error_string->str);
        g_string_free(error_string, TRUE);
        free_rtd_table(&rtd_data.stat_table, NULL, NULL);
        reject();
    }

    statsTreeWidget()->setSortingEnabled(false);

    cf_retap_packets(cap_file_.capFile());

    tapDraw(&rtd_data);

    statsTreeWidget()->sortItems(col_type_, Qt::AscendingOrder);
    statsTreeWidget()->setSortingEnabled(true);

    remove_tap_listener(&rtd_data);
    free_rtd_table(&rtd_data.stat_table, NULL, NULL);
}
void SimpleStatisticsDialog::fillTree()
{
    new_stat_data_t stat_data;
    stat_data.new_stat_tap_data = stu_;
    stat_data.user_data = this;

    stu_->stat_tap_init_cb(stu_, NULL, NULL);

    QString display_filter = displayFilter();
    if (!registerTapListener(stu_->tap_name,
                             &stat_data,
                             display_filter.toUtf8().constData(),
                             0,
                             tapReset,
                             stu_->packet_func,
                             tapDraw)) {
        free_stat_tables(stu_, NULL, NULL);
        reject(); // XXX Stay open instead?
        return;
    }

    cap_file_.retapPackets();

    tapDraw(&stat_data);

    removeTapListeners();
    free_stat_tables(stu_, NULL, NULL);
}
void LteMacStatisticsDialog::fillTree()
{
    if (!registerTapListener("mac-lte",
                             this,
                             displayFilter_.toLatin1().data(),
                             TL_REQUIRES_NOTHING,
                             tapReset,
                             tapPacket,
                             tapDraw)) {
        reject();
        return;
    }

    cap_file_.retapPackets();
    tapDraw(this);
    removeTapListeners();
}
void ServiceResponseTimeDialog::fillTree()
{
    srt_data_t srt_data;
    srt_data.srt_array = g_array_new(FALSE, TRUE, sizeof(srt_stat_table*));
    srt_data.user_data = this;

    srt_table_dissector_init(srt_, srt_data.srt_array, NULL, NULL);

    QString display_filter = displayFilter();
    GString *error_string = register_tap_listener(get_srt_tap_listener_name(srt_),
                          &srt_data,
                          display_filter.toUtf8().constData(),
                          0,
                          tapReset,
                          get_srt_packet_func(srt_),
                          tapDraw);
    if (error_string) {
        QMessageBox::critical(this, tr("Failed to attach to tap \"%1\"").arg(get_srt_tap_listener_name(srt_)),
                             error_string->str);
        g_string_free(error_string, TRUE);
        g_array_free(srt_data.srt_array, TRUE);
        srt_data.srt_array = NULL;
        reject(); // XXX Stay open instead?
        return;
    }

    statsTreeWidget()->setSortingEnabled(false);

    cap_file_.retapPackets();

    // We only have one table. Move its tree items up one level.
    if (statsTreeWidget()->invisibleRootItem()->childCount() == 1) {
        statsTreeWidget()->setRootIndex(statsTreeWidget()->model()->index(0, 0));
    }

    tapDraw(&srt_data);

    statsTreeWidget()->sortItems(SRT_COLUMN_PROCEDURE, Qt::AscendingOrder);
    statsTreeWidget()->setSortingEnabled(true);

    remove_tap_listener(&srt_data);
    g_array_free(srt_data.srt_array, TRUE);
}