aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/qt/main_window_slots.cpp17
-rw-r--r--ui/qt/packet_list.cpp54
-rw-r--r--ui/qt/packet_list.h2
3 files changed, 49 insertions, 24 deletions
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<int> 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<int> 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();