diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 71c137eb90..8c9e44b179 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -1951,17 +1951,24 @@ void MainWindow::actionEditCopyTriggered(MainWindow::CopySelected selection_type { QList rows = packet_list_->selectedRows(); QStringList content; + + PacketList::SummaryCopyType copyType = PacketList::CopyAsText; + if (selection_type == CopyListAsCSV) + copyType = PacketList::CopyAsCSV; + else if (selection_type == CopyListAsYAML) + copyType = PacketList::CopyAsYAML; + + if ((copyType == PacketList::CopyAsText) || + (copyType == PacketList::CopyAsCSV)) { + QString headerEntry = packet_list_->createHeaderSummaryText(copyType); + content << headerEntry; + } foreach (int row, rows) { QModelIndex idx = packet_list_->model()->index(row, 0); if (! idx.isValid()) continue; - PacketList::SummaryCopyType copyType = PacketList::CopyAsText; - if (selection_type == CopyListAsCSV) - copyType = PacketList::CopyAsCSV; - else if (selection_type == CopyListAsYAML) - copyType = PacketList::CopyAsYAML; QString entry = packet_list_->createSummaryText(idx, copyType); content << entry; } diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp index 0b4f2cfa28..abfc715d62 100644 --- a/ui/qt/packet_list.cpp +++ b/ui/qt/packet_list.cpp @@ -366,6 +366,30 @@ void PacketList::colorsChanged() setStyleSheet(active_style + inactive_style + hover_style); } +QString PacketList::joinSummaryRow(QStringList col_parts, int row, SummaryCopyType type) +{ + QString copy_text; + switch (type) { + case CopyAsCSV: + copy_text = "\""; + copy_text += col_parts.join("\",\""); + copy_text += "\""; + break; + case CopyAsYAML: + copy_text = "----\n"; + copy_text += QString("# Packet %1 from %2\n").arg(row).arg(cap_file_->filename); + copy_text += "- "; + copy_text += col_parts.join("\n- "); + copy_text += "\n"; + break; + case CopyAsText: + default: + copy_text = col_parts.join("\t"); + } + + return copy_text; +} + void PacketList::drawRow (QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QTreeView::drawRow(painter, option, index); @@ -1751,27 +1775,19 @@ QString PacketList::createSummaryText(QModelIndex idx, SummaryCopyType type) col_parts << packet_list_model_->data(packet_list_model_->index(row, col), Qt::DisplayRole).toString(); } } + return joinSummaryRow(col_parts, row, type); +} - QString copy_text; - switch (type) { - case CopyAsCSV: - copy_text = "\""; - copy_text += col_parts.join("\",\""); - copy_text += "\""; - break; - case CopyAsYAML: - copy_text = "----\n"; - copy_text += QString("# Packet %1 from %2\n").arg(row).arg(cap_file_->filename); - copy_text += "- "; - copy_text += col_parts.join("\n- "); - copy_text += "\n"; - break; - case CopyAsText: - default: - copy_text = col_parts.join("\t"); +QString PacketList::createHeaderSummaryText(SummaryCopyType type) +{ + QStringList col_parts; + for (int col = 0; col < packet_list_model_->columnCount(); ++col) + { + if (get_column_visible(col)) { + col_parts << packet_list_model_->headerData(col, Qt::Orientation::Horizontal, Qt::DisplayRole).toString(); + } } - - return copy_text; + return joinSummaryRow(col_parts, 0, type); } void PacketList::copySummary() diff --git a/ui/qt/packet_list.h b/ui/qt/packet_list.h index 28033b5af1..f3cc4a7507 100644 --- a/ui/qt/packet_list.h +++ b/ui/qt/packet_list.h @@ -88,6 +88,7 @@ public: QList selectedRows(bool useFrameNum = false); QString createSummaryText(QModelIndex idx, SummaryCopyType type); + QString createHeaderSummaryText(SummaryCopyType type); protected: @@ -146,6 +147,7 @@ private: void applyRecentColumnWidths(); void scrollViewChanged(bool at_end); void colorsChanged(); + QString joinSummaryRow(QStringList col_parts, int row, SummaryCopyType type); signals: void packetDissectionChanged();