summaryrefslogtreecommitdiff
path: root/ui/qt/conversation_dialog.h
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2014-04-29 11:10:27 -0400
committerMichael Mann <mmann78@netscape.net>2014-07-21 23:19:09 +0000
commit59ef97dd652131a6df0edd26cc8709461587a224 (patch)
treec3428c9388757895136b7ea43d168b1966feb68e /ui/qt/conversation_dialog.h
parentd81a34cc24598778d3f8073cf85027a777cbbc10 (diff)
downloadwireshark-59ef97dd652131a6df0edd26cc8709461587a224.tar.gz
[WIP] Add a conversation dialog.
Items are sorted by value. Move common conversation code to ui/conversation_hash.[ch]. Add a conversation_type_e enum along with convenience functions for fetching titles, tap names, etc. We have a single main dialog instead of a main dialog + individual protocol dialogs. It de-clutters the statistics menu and results in simpler code. Conversation type tabs can be added and removed within the dialog itself. The tab list is sticky and saved with the current profile when the dialog closes. Data can be copied as CSV or YAML. Add a FilterAction class and a corresponding filterAction slot to MainWindow. Use it for the Conversations context menu. Add an addressResolutionChanged signal and related plumbing. Get rid of the iterator members in the conversation item struct. Update the GTK+ code accordingly. Excercise for the reader: - Update TShark to use the common hash code. Ping-Bug: 9231 Ping-Bug: 8703 Ping-Bug: 6727 Change-Id: I8728d771fc5b1a85937bed9d898e53c3ecc3a544 Reviewed-on: https://code.wireshark.org/review/2987 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/qt/conversation_dialog.h')
-rw-r--r--ui/qt/conversation_dialog.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/ui/qt/conversation_dialog.h b/ui/qt/conversation_dialog.h
new file mode 100644
index 0000000000..26bf91c102
--- /dev/null
+++ b/ui/qt/conversation_dialog.h
@@ -0,0 +1,102 @@
+/* conversation_dialog.h
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef CONVERSATION_DIALOG_H
+#define CONVERSATION_DIALOG_H
+
+#include <conversation_tree_widget.h>
+
+#include <file.h>
+
+#include "ui/follow.h"
+
+#include <QAction>
+#include <QMenu>
+
+#include <QDialog>
+
+namespace Ui {
+class ConversationDialog;
+}
+
+class ConversationDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ConversationDialog(QWidget *parent = 0, capture_file *cf = NULL, const char *stat_arg = NULL);
+ ~ConversationDialog();
+
+public slots:
+ void setCaptureFile(capture_file *cf);
+
+signals:
+ void filterAction(QString& filter, FilterAction::Action action, FilterAction::ActionType type);
+ void openFollowStreamDialog(follow_type_t type);
+ void openTcpStreamGraph(int graph_type);
+
+private:
+ Ui::ConversationDialog *ui;
+
+ capture_file *cap_file_;
+ QString filter_;
+ QMenu conv_type_menu_;
+ QMap<conversation_type_e, ConversationTreeWidget *> conv_type_to_tree_;
+ QList<QAction> conv_actions_;
+ QPushButton *copy_bt_;
+ QPushButton *follow_bt_;
+ QPushButton *graph_bt_;
+
+ void initStatCmdMap();
+ // Adds a conversation tree. Returns true if the tree was freshly created, false if it was cached.
+ bool addConversationType(conversation_type_e conv_type);
+ conversation_type_e tabType(int index);
+ conv_item_t *currentConversation();
+
+private slots:
+ void updateWidgets();
+ void toggleConversation();
+ void itemSelectionChanged();
+ void on_nameResolutionCheckBox_toggled(bool checked);
+ void on_displayFilterCheckBox_toggled(bool checked);
+ void setTabText(QWidget *tree, const QString &text);
+ void chainFilterAction(QString& filter, FilterAction::Action action, FilterAction::ActionType type);
+ void followStream();
+ void copyAsCsv();
+ void copyAsYaml();
+ void graphTcp();
+ void on_buttonBox_helpRequested();
+};
+
+#endif // CONVERSATION_DIALOG_H
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */