Forcibly update all items if name resolution is turned on or off.

This makes the display change if you turn the name resolution checkbox
on or off.

Change-Id: I873832b103b61e1e566523a1ae1c4211937c7bae
Reviewed-on: https://code.wireshark.org/review/15063
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2016-04-22 18:31:32 -07:00
parent 3db13c7bbb
commit 948342a487
6 changed files with 39 additions and 23 deletions

View File

@ -331,10 +331,8 @@ public:
: TrafficTableTreeWidgetItem (parent, strings) {}
// Set column text to its cooked representation.
void update(gboolean resolve_names) {
void update(gboolean resolve_names, bool force) {
conv_item_t *conv_item = data(ci_col_, Qt::UserRole).value<conv_item_t *>();
bool ok;
quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok);
char *src_addr, *dst_addr, *src_port, *dst_port;
if (!conv_item) {
@ -342,8 +340,13 @@ public:
}
quint64 packets = conv_item->tx_frames + conv_item->rx_frames;
if (ok && cur_packets == packets) {
return;
if (!force) {
bool ok;
quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok);
if (ok && cur_packets == packets) {
return;
}
}
src_addr = get_conversation_address(NULL, &conv_item->src_address, resolve_names);
@ -604,7 +607,7 @@ ConversationTreeWidget::ConversationTreeWidget(QWidget *parent, register_ct_t* t
connect(fa, SIGNAL(triggered()), this, SLOT(filterActionTriggered()));
}
updateItems();
updateItems(false);
}
ConversationTreeWidget::~ConversationTreeWidget() {
@ -628,7 +631,7 @@ void ConversationTreeWidget::tapDraw(void *conv_hash_ptr)
ConversationTreeWidget *conv_tree = static_cast<ConversationTreeWidget *>(hash->user_data);
if (!conv_tree) return;
conv_tree->updateItems();
conv_tree->updateItems(false);
}
QMap<FilterAction::ActionDirection, conv_direction_e> fad_to_cd_;
@ -650,7 +653,7 @@ void ConversationTreeWidget::initDirectionMap()
fad_to_cd_[FilterAction::ActionDirectionAnyFromB] = CONV_DIR_ANY_FROM_B;
}
void ConversationTreeWidget::updateItems() {
void ConversationTreeWidget::updateItems(bool force) {
title_ = proto_get_protocol_short_name(find_protocol_by_id(get_conversation_proto_id(table_)));
if (hash_.conv_array && hash_.conv_array->len > 0) {
@ -683,7 +686,7 @@ void ConversationTreeWidget::updateItems() {
QTreeWidgetItemIterator iter(this);
while (*iter) {
ConversationTreeWidgetItem *ci = static_cast<ConversationTreeWidgetItem *>(*iter);
ci->update(resolve_names_);
ci->update(resolve_names_, force);
++iter;
}
setSortingEnabled(true);

View File

@ -38,9 +38,9 @@ public:
private:
void initDirectionMap();
void updateItems(bool force);
private slots:
void updateItems();
void filterActionTriggered();
};

View File

@ -223,10 +223,8 @@ public:
: TrafficTableTreeWidgetItem (parent, strings) {}
// Set column text to its cooked representation.
void update(gboolean resolve_names) {
void update(gboolean resolve_names, bool force) {
hostlist_talker_t *endp_item = data(ei_col_, Qt::UserRole).value<hostlist_talker_t *>();
bool ok;
quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok);
char *addr_str, *port_str;
if (!endp_item) {
@ -234,8 +232,13 @@ public:
}
quint64 packets = endp_item->tx_frames + endp_item->rx_frames;
if (ok && cur_packets == packets) {
return;
if (!force) {
bool ok;
quint64 cur_packets = data(pkts_col_, Qt::UserRole).toULongLong(&ok);
if (ok && cur_packets == packets) {
return;
}
}
addr_str = get_conversation_address(NULL, &endp_item->myaddress, resolve_names);
@ -504,7 +507,7 @@ EndpointTreeWidget::EndpointTreeWidget(QWidget *parent, register_ct_t *table) :
connect(fa, SIGNAL(triggered()), this, SLOT(filterActionTriggered()));
}
updateItems();
updateItems(false);
}
@ -529,10 +532,10 @@ void EndpointTreeWidget::tapDraw(void *conv_hash_ptr)
EndpointTreeWidget *endp_tree = static_cast<EndpointTreeWidget *>(hash->user_data);
if (!endp_tree) return;
endp_tree->updateItems();
endp_tree->updateItems(false);
}
void EndpointTreeWidget::updateItems()
void EndpointTreeWidget::updateItems(bool force)
{
title_ = proto_get_protocol_short_name(find_protocol_by_id(get_conversation_proto_id(table_)));
@ -574,7 +577,7 @@ void EndpointTreeWidget::updateItems()
QTreeWidgetItemIterator iter(this);
while (*iter) {
EndpointTreeWidgetItem *ei = static_cast<EndpointTreeWidgetItem *>(*iter);
ei->update(resolve_names_);
ei->update(resolve_names_, force);
++iter;
}
setSortingEnabled(true);

View File

@ -52,8 +52,10 @@ private:
bool has_geoip_data_;
#endif
private:
void updateItems(bool force);
private slots:
void updateItems();
void filterActionTriggered();
};

View File

@ -303,7 +303,7 @@ TrafficTableTreeWidget::TrafficTableTreeWidget(QWidget *parent, register_ct_t *t
setRootIsDecorated(false);
sortByColumn(0, Qt::AscendingOrder);
connect(wsApp, SIGNAL(addressResolutionChanged()), this, SLOT(updateItems()));
connect(wsApp, SIGNAL(addressResolutionChanged()), this, SLOT(updateItemsForSettingChange()));
}
TrafficTableTreeWidget::~TrafficTableTreeWidget()
@ -339,7 +339,7 @@ void TrafficTableTreeWidget::setNameResolutionEnabled(bool enable)
{
if (resolve_names_ != enable) {
resolve_names_ = enable;
updateItems();
updateItems(true);
}
}
@ -352,6 +352,12 @@ void TrafficTableTreeWidget::contextMenuEvent(QContextMenuEvent *event)
}
ctx_menu_.exec(event->globalPos());
}
void TrafficTableTreeWidget::updateItemsForSettingChange()
{
updateItems(true);
}
/*

View File

@ -85,9 +85,11 @@ protected:
void contextMenuEvent(QContextMenuEvent *event);
private:
virtual void updateItems(bool) {}
private slots:
virtual void updateItems() {}
// Updates all items
void updateItemsForSettingChange();
signals:
void titleChanged(QWidget *tree, const QString &text);