Qt: Add the colorization action.
authorGerald Combs <gerald@wireshark.org>
Mon, 22 Sep 2014 23:33:05 +0000 (16:33 -0700)
committerGerald Combs <gerald@wireshark.org>
Tue, 23 Sep 2014 14:26:45 +0000 (14:26 +0000)
Change-Id: I846a48c35c4ef3bbbcf17d03885acc5be8c9a6b5
Reviewed-on: https://code.wireshark.org/review/4259
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
image/toolbar.qrc
ui/gtk/main.c
ui/qt/main_window.cpp
ui/qt/main_window.h
ui/qt/main_window.ui
ui/qt/main_window_slots.cpp
ui/qt/packet_list.cpp
ui/qt/packet_list_model.cpp
ui/qt/packet_list_model.h
ui/qt/packet_list_record.cpp
ui/qt/packet_list_record.h

index 631b6cb63ca2af1ce5e047eb8554707b2ec5e07d..da3ca10d4ec5eea613d10c2c3caf0052ac43aaec 100644 (file)
@@ -23,6 +23,7 @@
         <file>toolbar/16x16/x-capture-start.on.png</file>
         <file>toolbar/16x16/x-capture-start.png</file>
         <file>toolbar/16x16/x-capture-stop.png</file>
+        <file>toolbar/16x16/x-colorize-packets.png</file>
         <file>toolbar/24x24/edit-find.png</file>
         <file>toolbar/24x24/go-first.png</file>
         <file>toolbar/24x24/go-jump.png</file>
@@ -37,5 +38,6 @@
         <file>toolbar/24x24/x-capture-start.on.png</file>
         <file>toolbar/24x24/x-capture-start.png</file>
         <file>toolbar/24x24/x-capture-stop.png</file>
+        <file>toolbar/24x24/x-colorize-packets.png</file>
     </qresource>
 </RCC>
index a057ca7022221804d86556a930d5f241c69ed3bf..322c5dcb1252f9554890064b8212219c0d1449eb 100644 (file)
@@ -1360,8 +1360,8 @@ main_update_for_unsaved_changes(capture_file *cf)
 void
 main_auto_scroll_live_changed(gboolean auto_scroll_live_in)
 {
-  /* Update menubar and toolbar */
-      menu_auto_scroll_live_changed(auto_scroll_live_in);
+    /* Update menubar and toolbar */
+    menu_auto_scroll_live_changed(auto_scroll_live_in);
     toolbar_auto_scroll_live_changed(auto_scroll_live_in);
 
     /* change auto scroll state */
index f30650f07cb48ec85e4e7a9784befb0eede23891..a589914cea61adb9bc38f1ca98bdaeeff7366042 100644 (file)
@@ -166,7 +166,8 @@ MainWindow::MainWindow(QWidget *parent) :
     main_ui_->actionGoFirstPacket->setIcon(StockIcon("go-first"));
     main_ui_->actionGoLastPacket->setIcon(StockIcon("go-last"));
 
-//    main_ui_->actionViewColorizePackets->setIcon(StockIcon("x-colorize-packets"));
+    main_ui_->actionViewColorizePacketList->setIcon(StockIcon("x-colorize-packets"));
+    main_ui_->actionViewColorizePacketList->setChecked(recent.packet_list_colorize);
 //    main_ui_->actionViewAutoScroll->setIcon(StockIcon("x-stay-last"));
 
 //    main_ui_->actionViewZoomIn->setIcon(StockIcon("zoom-in"));
index ff328967a9137addeb0d0e41fadc63eb53f68c1f..66d025902184b5c10ffc963492898d3ced8aa8a4 100644 (file)
@@ -277,6 +277,7 @@ private slots:
     void on_actionEditConfigurationProfiles_triggered();
     void on_actionEditPreferences_triggered();
 
+    void on_actionViewColorizePacketList_triggered(bool checked);
     void on_actionViewReload_triggered();
     void on_actionViewToolbarMainToolbar_triggered();
     void on_actionViewToolbarDisplayFilter_triggered();
index b667997267fca7bddccada3d5e973c944c482dc2..41154df429766dc7a8b8d368b12fd3fe472615db 100644 (file)
     <addaction name="actionViewExpandAll"/>
     <addaction name="actionViewCollapseAll"/>
     <addaction name="separator"/>
-    <addaction name="actionViewReload"/>
+    <addaction name="actionViewColorizePacketList"/>
+    <addaction name="separator"/>
+    <addaction name="actionViewZoomIn"/>
     <addaction name="separator"/>
+    <addaction name="actionViewReload"/>
     <addaction name="menuToolbars"/>
    </widget>
    <widget class="QMenu" name="menuAnalyze">
    <addaction name="actionGoFirstPacket"/>
    <addaction name="actionGoLastPacket"/>
    <addaction name="separator"/>
+   <addaction name="actionViewColorizePacketList"/>
   </widget>
   <widget class="MainStatusBar" name="statusBar"/>
   <widget class="QToolBar" name="displayFilterToolBar">
     <string>Endpoints at different protocol levels</string>
    </property>
   </action>
+  <action name="actionViewColorizePacketList">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Colorize Packet List</string>
+   </property>
+   <property name="toolTip">
+    <string>Color packets according to the coloring rules</string>
+   </property>
+  </action>
+  <action name="actionViewZoomIn">
+   <property name="text">
+    <string>&amp;Zoom In</string>
+   </property>
+   <property name="toolTip">
+    <string>Enlarge the main window text</string>
+   </property>
+   <property name="shortcut">
+    <string>Meta++</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>
index f9e73b60c38a576bd14fcdce471625b2569b4e92..ea5fc246de54a4b6f6a578ddce1b3c89874757b6 100644 (file)
@@ -34,9 +34,6 @@
 
 #include "globals.h"
 
-#include <wsutil/filesystem.h>
-#include <epan/prefs.h>
-
 #ifdef _WIN32
 #include <windows.h>
 #include <io.h>
 #include "ui/capture.h"
 #endif
 
+#include "color_filters.h"
+
 #include "wsutil/file_util.h"
+#include "wsutil/filesystem.h"
 
 #include "epan/column.h"
-#include <epan/epan_dissect.h>
+#include "epan/epan_dissect.h"
 #include "epan/filter_expressions.h"
-#include <epan/value_string.h>
+#include "epan/prefs.h"
+#include "epan/value_string.h"
 
 #include "ui/alert_box.h"
 #ifdef HAVE_LIBPCAP
 #include "ui/capture_ui_utils.h"
 #endif
-#include "ui/ui_util.h"
+
 #include "ui/capture_globals.h"
 #include "ui/help_url.h"
 #include "ui/main_statusbar.h"
 #include "ui/preference_utils.h"
+#include "ui/recent.h"
 #include "ui/recent_utils.h"
 #include "ui/ssl_key_export.h"
+#include "ui/ui_util.h"
 
 #ifdef HAVE_SOFTWARE_UPDATE
 #include "ui/software_update.h"
@@ -421,13 +424,11 @@ void MainWindow::captureCaptureUpdateFinished(capture_session *cap_session) {
 void MainWindow::captureCaptureFixedStarted(capture_session *cap_session) {
     Q_UNUSED(cap_session);
 #ifdef HAVE_LIBPCAP
-    qDebug() << "captureCaptureFixedStarted";
 #endif // HAVE_LIBPCAP
 }
 void MainWindow::captureCaptureFixedFinished(capture_session *cap_session) {
     Q_UNUSED(cap_session);
 #ifdef HAVE_LIBPCAP
-    qDebug() << "captureCaptureFixedFinished";
 
     /* The capture isn't stopping any more - it's stopped. */
     capture_stopping_ = false;
@@ -450,7 +451,6 @@ void MainWindow::captureCaptureStopping(capture_session *cap_session) {
 void MainWindow::captureCaptureFailed(capture_session *cap_session) {
     Q_UNUSED(cap_session);
 #ifdef HAVE_LIBPCAP
-    qDebug() << "captureCaptureFailed";
     /* Capture isn't stopping any more. */
     capture_stopping_ = false;
 
@@ -1677,6 +1677,13 @@ void MainWindow::on_actionEditPreferences_triggered()
 
 // View Menu
 
+void MainWindow::on_actionViewColorizePacketList_triggered(bool checked) {
+    recent.packet_list_colorize = checked;
+    color_filters_enable(checked);
+    packet_list_->packetListModel()->resetColorized();
+    packet_list_->update();
+}
+
 void MainWindow::on_actionViewReload_triggered()
 {
     cf_reload(&cfile);
index 23e0a88ccf6d05eebd2b6d1ea7f2b60d21468d60..2964a978b6a782a6b85c5aa195193850d82017e6 100644 (file)
@@ -154,8 +154,9 @@ packet_list_clear(void)
 void
 packet_list_enable_color(gboolean enable)
 {
+    Q_UNUSED(enable);
     if (gbl_cur_packet_list && gbl_cur_packet_list->packetListModel()) {
-        gbl_cur_packet_list->packetListModel()->setColorEnabled(enable);
+        gbl_cur_packet_list->packetListModel()->resetColorized();
         gbl_cur_packet_list->update();
     }
 }
@@ -239,7 +240,6 @@ PacketList::PacketList(QWidget *parent) :
 
     packet_list_model_ = new PacketListModel(this, cap_file_);
     setModel(packet_list_model_);
-    packet_list_model_->setColorEnabled(recent.packet_list_colorize);
 
     // XXX We might want to reimplement setParent() and fill in the context
     // menu there.
index db9cf0d243894d27232f935f33e9c78a84d6e1c1..cc034a5af71459e24afeb8b4ed3bb21868e0f107 100644 (file)
@@ -93,10 +93,6 @@ guint PacketListModel::recreateVisibleRows()
     return visible_rows_.count();
 }
 
-void PacketListModel::setColorEnabled(bool enable_color) {
-    enable_color_ = enable_color;
-}
-
 void PacketListModel::clear() {
     beginResetModel();
     physical_rows_.clear();
@@ -114,6 +110,17 @@ void PacketListModel::resetColumns()
     endResetModel();
 }
 
+void PacketListModel::resetColorized()
+{
+    PacketListRecord *record;
+
+    beginResetModel();
+    foreach (record, physical_rows_) {
+        record->resetColorized();
+    }
+    endResetModel();
+}
+
 int PacketListModel::rowCount(const QModelIndex &parent) const
 {
     if (parent.column() >= prefs.num_cols)
@@ -170,20 +177,19 @@ QVariant PacketListModel::data(const QModelIndex &index, int role) const
             color = &prefs.gui_ignored_bg;
         } else if (fdata->flags.marked) {
             color = &prefs.gui_marked_bg;
-        } else if (fdata->color_filter) {
+        } else if (fdata->color_filter && recent.packet_list_colorize) {
             const color_filter_t *color_filter = (const color_filter_t *) fdata->color_filter;
             color = &color_filter->bg_color;
         } else {
             return QVariant();
         }
-//        g_log(NULL, G_LOG_LEVEL_DEBUG, "i: %d m: %d cf: %p bg: %d %d %d", fdata->flags.ignored, fdata->flags.marked, fdata->color_filter, color->red, color->green, color->blue);
         return QColor(color->red >> 8, color->green >> 8, color->blue >> 8);
     case Qt::ForegroundRole:
         if (fdata->flags.ignored) {
             color = &prefs.gui_ignored_fg;
         } else if (fdata->flags.marked) {
             color = &prefs.gui_marked_fg;
-        } else if (fdata->color_filter) {
+        } else if (fdata->color_filter && recent.packet_list_colorize) {
             const color_filter_t *color_filter = (const color_filter_t *) fdata->color_filter;
             color = &color_filter->fg_color;
         } else {
@@ -193,7 +199,6 @@ QVariant PacketListModel::data(const QModelIndex &index, int role) const
     case Qt::DisplayRole:
     {
         int column = index.column();
-        //    g_log(NULL, G_LOG_LEVEL_DEBUG, "showing col %d", col_num);
         return record->columnString(cap_file_, column);
     }
     default:
index f325087cf9784e295e3c4c42263146b3a7f62cd8..f245c111c773198a0a51b77fc0c336e9bd052a15 100644 (file)
@@ -49,7 +49,6 @@ public:
     QModelIndex parent(const QModelIndex &index) const;
     int packetNumberToRow(int packet_num) const;
     guint recreateVisibleRows();
-    void setColorEnabled(bool enable_color);
     void clear();
 
     int rowCount(const QModelIndex &parent = QModelIndex()) const;
@@ -62,6 +61,7 @@ public:
     frame_data *getRowFdata(int row);
     int visibleIndexOf(frame_data *fdata) const;
     void resetColumns();
+    void resetColorized();
 
 signals:
 
@@ -76,7 +76,6 @@ private:
     QFont pl_font_;
 
     int header_height_;
-    bool enable_color_;
 };
 
 #endif // PACKET_LIST_MODEL_H
index b5c50a979d294847cb62b3e21f56522d35856eb9..296693b59b695e5baeb06d952865b4b1ee48e727 100644 (file)
@@ -78,6 +78,11 @@ void PacketListRecord::resetColumns(column_info *cinfo)
     }
 }
 
+void PacketListRecord::resetColorized()
+{
+    colorized_ = false;
+}
+
 void PacketListRecord::dissect(capture_file *cap_file, bool dissect_color)
 {
     // packet_list_store.c:packet_list_dissect_and_cache_record
@@ -117,7 +122,7 @@ void PacketListRecord::dissect(capture_file *cap_file, bool dissect_color)
         }
         if (dissect_color) {
             fdata_->color_filter = NULL;
-            colorized_ = TRUE;
+            colorized_ = true;
         }
         ws_buffer_free(&buf);
         return;    /* error reading the record */
index 574da0d912e7d8035440500a675aef3255ba0b89..c1042118bf68fbea71ad229954b190cdc2633d9c 100644 (file)
@@ -44,6 +44,7 @@ public:
     frame_data *frameData();
 
     static void resetColumns(column_info *cinfo);
+    void resetColorized();
 
 private:
     /** The column text for some columns */
@@ -56,12 +57,6 @@ private:
     /** Has this record been colorized? */
     bool colorized_;
 
-    /* admin stuff used by the custom list model */
-    /** position within the physical array */
-    //guint physical_pos_;
-    /** position within the visible array */
-    //gint visible_pos_;
-
     void dissect(capture_file *cap_file, bool dissect_color = false);
     void cacheColumnStrings(column_info *cinfo);