ConversationDialog::ConversationDialog(QWidget &parent, CaptureFile &cf, int cli_proto_id, const char *filter) : TrafficTableDialog(parent, cf, filter, table_name_) { follow_bt_ = buttonBox()->addButton(tr("Follow Stream..."), QDialogButtonBox::ActionRole); follow_bt_->setToolTip(tr("Follow a TCP or UDP stream.")); connect(follow_bt_, SIGNAL(clicked()), this, SLOT(followStream())); graph_bt_ = buttonBox()->addButton(tr("Graph..."), QDialogButtonBox::ActionRole); graph_bt_->setToolTip(tr("Graph a TCP conversation.")); connect(graph_bt_, SIGNAL(clicked()), this, SLOT(graphTcp())); QList<int> conv_protos; for (GList *conv_tab = recent.conversation_tabs; conv_tab; conv_tab = conv_tab->next) { int proto_id = proto_get_id_by_short_name((const char *)conv_tab->data); if (proto_id > -1 && !conv_protos.contains(proto_id)) { conv_protos.append(proto_id); } } if (conv_protos.isEmpty()) { conv_protos = defaultProtos(); } // Bring the command-line specified type to the front. if (get_conversation_by_proto_id(cli_proto_id)) { conv_protos.removeAll(cli_proto_id); conv_protos.prepend(cli_proto_id); } // QTabWidget selects the first item by default. foreach (int conv_proto, conv_protos) { addTrafficTable(get_conversation_by_proto_id(conv_proto)); }
ConversationDialog::ConversationDialog(QWidget *parent, capture_file *cf, const char *stat_arg) : QDialog(parent), ui(new Ui::ConversationDialog), cap_file_(cf) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose, true); // XXX Use recent settings instead if (parent) { resize(parent->width(), parent->height() * 3 / 4); } QMenu *copy_menu = new QMenu(); QAction *ca; copy_bt_ = ui->buttonBox->addButton(tr("Copy"), QDialogButtonBox::ActionRole); ca = copy_menu->addAction(tr("as CSV")); ca->setToolTip(tr("Copy all values of this page to the clipboard in CSV (Comma Separated Values) format.")); connect(ca, SIGNAL(triggered()), this, SLOT(copyAsCsv())); ca = copy_menu->addAction(tr("as YAML")); ca->setToolTip(tr("Copy all values of this page to the clipboard in the YAML data serialization format.")); connect(ca, SIGNAL(triggered()), this, SLOT(copyAsYaml())); copy_bt_->setMenu(copy_menu); follow_bt_ = ui->buttonBox->addButton(tr("Follow Stream..."), QDialogButtonBox::ActionRole); follow_bt_->setToolTip(tr("Follow a TCP or UDP stream.")); connect(follow_bt_, SIGNAL(clicked()), this, SLOT(followStream())); graph_bt_ = ui->buttonBox->addButton(tr("Graph..."), QDialogButtonBox::ActionRole); graph_bt_->setToolTip(tr("Graph a TCP conversation.")); connect(graph_bt_, SIGNAL(clicked()), this, SLOT(graphTcp())); QList<conversation_type_e> conv_types; for (GList *conv_tab = recent.conversation_tabs; conv_tab; conv_tab = conv_tab->next) { conversation_type_e ct = conversation_title_to_type((const char *)conv_tab->data); if (!conv_types.contains(ct)) { conv_types.append(ct); } } // Reasonable defaults? if (conv_types.isEmpty()) { conv_types << CONV_TYPE_ETHERNET << CONV_TYPE_IPV4 << CONV_TYPE_IPV6 <<CONV_TYPE_TCP << CONV_TYPE_UDP; } // Bring the command-line specified type to the front. initStatCmdMap(); QStringList stat_args = QString(stat_arg).split(","); if (stat_args.length() > 1 && conv_proto_to_type_.contains(stat_args[1])) { conversation_type_e ct = conv_proto_to_type_[stat_args[1]]; conv_types.removeAll(ct); conv_types.prepend(ct); if (stat_args.length() > 2) { filter_ = stat_args[2]; } } foreach (conversation_type_e conv_type, conv_types) { addConversationType(conv_type); }