improvements.
svn path=/trunk/; revision=51808
// XXX We can jump to the wrong packet if a display filter is applied
void PacketList::goToPacket(int packet) {
- if (packet > 0 && packet <= packet_list_model_->rowCount()) {
- setCurrentIndex(packet_list_model_->index(packet - 1, 0));
+ int row = packet_list_model_->packetNumberToRow(packet);
+ if (row > 0) {
+ setCurrentIndex(packet_list_model_->index(row, 0));
}
}
return QModelIndex();
}
+int PacketListModel::packetNumberToRow(int packet_num) const
+{
+ return number_to_row_.value(packet_num, -1);
+}
+
guint PacketListModel::recreateVisibleRows()
{
int pos = visible_rows_.count() + 1;
beginResetModel();
visible_rows_.clear();
+ number_to_row_.clear();
endResetModel();
beginInsertRows(QModelIndex(), pos, pos);
foreach (record, physical_rows_) {
if (record->getFdata()->flags.passed_dfilter || record->getFdata()->flags.ref_time) {
visible_rows_ << record;
+ number_to_row_[record->getFdata()->num] = visible_rows_.count() - 1;
}
}
endInsertRows();
beginResetModel();
physical_rows_.clear();
visible_rows_.clear();
+ number_to_row_.clear();
endResetModel();
}
if (fdata->flags.passed_dfilter || fdata->flags.ref_time) {
beginInsertRows(QModelIndex(), pos, pos);
visible_rows_ << record;
+ number_to_row_[fdata->num] = visible_rows_.count() - 1;
endInsertRows();
} else {
pos = -1;
QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
+ int packetNumberToRow(int packet_num) const;
guint recreateVisibleRows();
void setColorEnabled(bool enable_color);
void clear();
QList<QString> col_names_;
QVector<PacketListRecord *> visible_rows_;
QVector<PacketListRecord *> physical_rows_;
+ QMap<int, int> number_to_row_;
QFont pl_font_;
int header_height_;
{
QString dlg_title = QString(tr("Throughput")) + streamDescription();
#ifdef MA_1_SECOND
- dlg_title.append(tr(" (1 s MA)"));
+ dlg_title.append(tr(" (1s MA)"));
#else
dlg_title.append(QString(tr(" (%1 segment MA)")).arg(moving_avg_period_));
#endif
tstyle = QCPItemTracer::tsCircle;
tr_color.setAlphaF(1.0);
tr_pen.setWidthF(1.5);
- tr_pen.color().setAlphaF(1.0);
} else {
tr_color.setAlphaF(0.5);
tr_pen.setWidthF(1.0);
// using a QTimer instead.
void TCPStreamDialog::mouseMoved(QMouseEvent *event)
{
+ double ts = tracer_->position->key();
struct segment *packet_seg = NULL;
packet_num_ = 0;
if (event && tracer_->graph() && tracer_->position->axisRect()->rect().contains(event->pos())) {
- double ts = tracer_->position->key();
packet_seg = segment_map_.value(ts, NULL);
}
tracer_->setVisible(true);
packet_num_ = packet_seg->num;
- QString hint = QString(tr("<small><i>%1 %2 (len %3 seq %4 ack %5 win %6)</i></small>"))
+ QString hint = QString(tr("<small><i>%1 %2 (%3s len %4 seq %5 ack %6 win %7)</i></small>"))
.arg(cap_file_ ? tr("Click to select packet") : tr("Packet"))
.arg(packet_num_)
+ .arg(QString::number(ts, 'g', 4))
.arg(packet_seg->th_seglen)
.arg(packet_seg->th_seq)
.arg(packet_seg->th_ack)