aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-05-22 15:33:38 -0700
committerGerald Combs <gerald@wireshark.org>2015-05-23 00:31:08 +0000
commitb18309c07f5a2a4212764676e0e19e3b3dfa9868 (patch)
treebcf7b1ac99751da6937f84673ac3ebb30890b445 /ui
parentb25faac85d806d7f3977e194ca6f520da8e5c030 (diff)
Qt: Update the status bar when saving.
Plumb in more capture file callbacks. Add common functions for setting the status bar file information. Add and update code to match the GTK+ status bar behavior. Make sure we update the capture file length when rescanning. Bug: 10943 Change-Id: Ie84c7a57ee421d57ba3477f8dde3847aaafa1cd1 Reviewed-on: https://code.wireshark.org/review/8594 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/capture_file.cpp48
-rw-r--r--ui/qt/capture_file.h13
-rw-r--r--ui/qt/main_status_bar.cpp12
-rw-r--r--ui/qt/main_status_bar.h5
-rw-r--r--ui/qt/main_window.cpp17
-rw-r--r--ui/qt/main_window.h6
-rw-r--r--ui/qt/main_window_slots.cpp28
7 files changed, 101 insertions, 28 deletions
diff --git a/ui/qt/capture_file.cpp b/ui/qt/capture_file.cpp
index d580020e68..05e480289b 100644
--- a/ui/qt/capture_file.cpp
+++ b/ui/qt/capture_file.cpp
@@ -78,6 +78,17 @@ int CaptureFile::currentRow()
return -1;
}
+const QString CaptureFile::fileName()
+{
+ if (isValid()) {
+ QFileInfo cfi(QString::fromUtf8(cap_file_->filename));
+ file_name_ = cfi.baseName();
+ } else {
+ file_name_ = no_capture_file_;
+ }
+ return file_name_;
+}
+
void CaptureFile::retapPackets()
{
if (cap_file_) {
@@ -123,14 +134,11 @@ void CaptureFile::captureFileEvent(int event, gpointer data)
{
switch(event) {
case(cf_cb_file_opened):
- {
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Opened");
cap_file_ = (capture_file *) data;
- QFileInfo cfi(QString::fromUtf8(cap_file_->filename));
- file_name_ = cfi.baseName();
+ fileName();
emit captureFileOpened();
break;
- }
case(cf_cb_file_closing):
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closing");
file_state_ = tr(" [closing]");
@@ -154,11 +162,24 @@ void CaptureFile::captureFileEvent(int event, gpointer data)
break;
case(cf_cb_file_reload_started):
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload started");
- emit captureFileReadStarted();
+ emit captureFileReloadStarted();
break;
case(cf_cb_file_reload_finished):
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload finished");
- emit captureFileReadFinished();
+ emit captureFileReloadFinished();
+ break;
+
+ case(cf_cb_file_rescan_started):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Rescan started");
+ emit captureFileRescanStarted();
+ break;
+ case(cf_cb_file_rescan_finished):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Rescan finished");
+ emit captureFileRescanFinished();
+ break;
+
+ case(cf_cb_file_fast_save_finished):
+ // Ignored for now
break;
case(cf_cb_packet_selected):
@@ -167,11 +188,22 @@ void CaptureFile::captureFileEvent(int event, gpointer data)
// Signals and slots handled elsewhere.
break;
- case(cf_cb_file_save_started): // data = string
+ case(cf_cb_file_save_started):
+ {
+ const QString file_path = (const char *) data;
+ captureFileSaveStarted(file_path);
+ break;
+ }
case(cf_cb_file_save_finished):
+ emit captureFileSaveFinished();
+ break;
case(cf_cb_file_save_failed):
- // Ignored
+ emit captureFileSaveFailed();
+ break;
+ case(cf_cb_file_save_stopped):
+ emit captureFileSaveStopped();
break;
+
default:
g_log(NULL, G_LOG_LEVEL_DEBUG, "FIX: main_cf_callback %d %p", event, data);
g_warning("CaptureFile::captureFileCallback: event %u unknown", event);
diff --git a/ui/qt/capture_file.h b/ui/qt/capture_file.h
index 6c228362b5..0b1809419c 100644
--- a/ui/qt/capture_file.h
+++ b/ui/qt/capture_file.h
@@ -59,13 +59,13 @@ public:
* @return One of: the basename of the capture file without an extension,
* the basename followed by "[closing]", "[closed]", or "[no capture file]".
*/
- const QString fileTitle() { return file_name_ + file_state_; }
+ const QString fileTitle() { return fileName() + file_state_; }
/** Return the plain filename.
*
* @return The basename of the capture file without an extension.
*/
- const QString fileName() { return file_name_; }
+ const QString fileName();
/** Retap the capture file
*/
@@ -85,8 +85,16 @@ signals:
void captureFileOpened() const;
void captureFileReadStarted() const;
void captureFileReadFinished() const;
+ void captureFileReloadStarted() const;
+ void captureFileReloadFinished() const;
+ void captureFileRescanStarted() const;
+ void captureFileRescanFinished() const;
void captureFileClosing() const;
void captureFileClosed() const;
+ void captureFileSaveStarted(const QString &file_path) const;
+ void captureFileSaveFinished() const;
+ void captureFileSaveFailed() const;
+ void captureFileSaveStopped() const;
void captureCapturePrepared(capture_session *cap_session);
void captureCaptureUpdateStarted(capture_session *cap_session);
@@ -110,6 +118,7 @@ private:
void captureFileEvent(int event, gpointer data);
void captureEvent(int event, capture_session *cap_session);
+ const QString &getFileBasename();
static QString no_capture_file_;
diff --git a/ui/qt/main_status_bar.cpp b/ui/qt/main_status_bar.cpp
index cb7c522f4a..a327bd9405 100644
--- a/ui/qt/main_status_bar.cpp
+++ b/ui/qt/main_status_bar.cpp
@@ -30,8 +30,10 @@
#include "ui/main_statusbar.h"
#include "ui/profile.h"
+#include "ui/qt/qt_ui_utils.h"
#include "ui/utf8_entities.h"
+#include "capture_file.h"
#include "main_status_bar.h"
#include "profile_dialog.h"
@@ -228,6 +230,16 @@ void MainStatusBar::expertUpdate() {
expert_status_.show();
}
+// ui/gtk/main_statusbar.c
+void MainStatusBar::setFileName(CaptureFile &cf)
+{
+ popFileStatus();
+ QString msgtip = QString("%1 (%2)")
+ .arg(cf.capFile()->filename)
+ .arg(file_size_to_qstring(cf.capFile()->f_datalen));
+ pushFileStatus(cf.fileName(), msgtip);
+}
+
void MainStatusBar::setCaptureFile(capture_file *cf)
{
cap_file_ = cf;
diff --git a/ui/qt/main_status_bar.h b/ui/qt/main_status_bar.h
index 1cb024a4d2..04148c0264 100644
--- a/ui/qt/main_status_bar.h
+++ b/ui/qt/main_status_bar.h
@@ -34,6 +34,8 @@
#include "capchild/capture_session.h"
+class CaptureFile;
+
class MainStatusBar : public QStatusBar
{
Q_OBJECT
@@ -42,6 +44,7 @@ public:
void showExpert();
void hideExpert();
void expertUpdate();
+ void setFileName(CaptureFile &cf);
private:
QLabel expert_status_;
@@ -64,7 +67,7 @@ public slots:
void setCaptureFile(capture_file *cf);
void pushTemporaryStatus(const QString &message);
void popTemporaryStatus();
- void pushFileStatus(const QString &message, const QString &messagetip);
+ void pushFileStatus(const QString &message, const QString &messagetip = QString());
void popFileStatus();
void pushFieldStatus(const QString &message);
void popFieldStatus();
diff --git a/ui/qt/main_window.cpp b/ui/qt/main_window.cpp
index a9681306ee..d86c5c7d25 100644
--- a/ui/qt/main_window.cpp
+++ b/ui/qt/main_window.cpp
@@ -316,11 +316,28 @@ MainWindow::MainWindow(QWidget *parent) :
this, SLOT(captureFileReadStarted()));
connect(&capture_file_, SIGNAL(captureFileReadFinished()),
this, SLOT(captureFileReadFinished()));
+ connect(&capture_file_, SIGNAL(captureFileReloadStarted()),
+ this, SLOT(captureFileReloadStarted()));
+ connect(&capture_file_, SIGNAL(captureFileReloadFinished()),
+ this, SLOT(captureFileReadFinished()));
+ connect(&capture_file_, SIGNAL(captureFileRescanStarted()),
+ this, SLOT(captureFileRescanStarted()));
+ connect(&capture_file_, SIGNAL(captureFileRescanFinished()),
+ this, SLOT(captureFileReadFinished()));
connect(&capture_file_, SIGNAL(captureFileClosing()),
this, SLOT(captureFileClosing()));
connect(&capture_file_, SIGNAL(captureFileClosed()),
this, SLOT(captureFileClosed()));
+ connect(&capture_file_, SIGNAL(captureFileSaveStarted(QString)),
+ this, SLOT(captureFileSaveStarted(QString)));
+ connect(&capture_file_, SIGNAL(captureFileSaveFinished()),
+ main_ui_->statusBar, SLOT(popFileStatus()));
+ connect(&capture_file_, SIGNAL(captureFileSaveFailed()),
+ main_ui_->statusBar, SLOT(popFileStatus()));
+ connect(&capture_file_, SIGNAL(captureFileSaveStopped()),
+ main_ui_->statusBar, SLOT(popFileStatus()));
+
connect(&capture_file_, SIGNAL(setCaptureStopFlag(bool)),
this, SLOT(setCaptureStopFlag(bool)));
diff --git a/ui/qt/main_window.h b/ui/qt/main_window.h
index 6ca0c9dafe..a40b5e8d4e 100644
--- a/ui/qt/main_window.h
+++ b/ui/qt/main_window.h
@@ -181,6 +181,7 @@ private:
QMenu* findOrAddMenu(QMenu *parent_menu, QString& menu_text);
void recursiveCopyProtoTreeItems(QTreeWidgetItem *item, QString &clip, int ident_level);
+ void captureFileReadStarted(const QString &action);
signals:
void showProgress(struct progdlg **dlg_p, bool animate, const QString message, bool terminate_is_stop, bool *stop_flag, float pct);
@@ -209,10 +210,13 @@ public slots:
void captureCaptureFailed(capture_session *);
void captureFileOpened();
- void captureFileReadStarted();
+ void captureFileReadStarted() { captureFileReadStarted(tr("Loading")); }
void captureFileReadFinished();
+ void captureFileReloadStarted() { captureFileReadStarted(tr("Reloading")); }
+ void captureFileRescanStarted() { captureFileReadStarted(tr("Rescanning")); }
void captureFileClosing();
void captureFileClosed();
+ void captureFileSaveStarted(const QString &file_path);
void filterExpressionsChanged();
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp
index d265066a58..5da120acdb 100644
--- a/ui/qt/main_window_slots.cpp
+++ b/ui/qt/main_window_slots.cpp
@@ -112,6 +112,7 @@
#include "wireshark_application.h"
#include <QClipboard>
+#include <QFileInfo>
#include <QMessageBox>
#include <QMetaObject>
#include <QToolBar>
@@ -626,14 +627,14 @@ void MainWindow::captureFileOpened() {
emit setCaptureFile(capture_file_.capFile());
}
-void MainWindow::captureFileReadStarted() {
+void MainWindow::captureFileReadStarted(const QString &action) {
// tap_param_dlg_update();
/* Set up main window for a capture file. */
// main_set_for_capture_file(TRUE);
main_ui_->statusBar->popFileStatus();
- QString msg = QString(tr("Loading: %1")).arg(get_basename(capture_file_.capFile()->filename));
+ QString msg = QString(tr("%1: %2")).arg(action).arg(capture_file_.fileName());
QString msgtip = QString();
main_ui_->statusBar->pushFileStatus(msg, msgtip);
main_ui_->mainStack->setCurrentWidget(&master_split_);
@@ -659,12 +660,7 @@ void MainWindow::captureFileReadFinished() {
/* Enable menu items that make sense if you have some captured packets. */
setForCapturedPackets(true);
- main_ui_->statusBar->popFileStatus();
- QString msg = QString().sprintf("%s", get_basename(capture_file_.capFile()->filename));
- QString msgtip = QString("%1 (%2)")
- .arg(capture_file_.capFile()->filename)
- .arg(file_size_to_qstring(capture_file_.capFile()->f_datalen));
- main_ui_->statusBar->pushFileStatus(msg, msgtip);
+ main_ui_->statusBar->setFileName(capture_file_);
emit setDissectedCaptureFile(capture_file_.capFile());
}
@@ -698,6 +694,13 @@ void MainWindow::captureFileClosed() {
setMenusForSelectedTreeRow();
}
+void MainWindow::captureFileSaveStarted(const QString &file_path)
+{
+ QFileInfo file_info(file_path);
+ main_ui_->statusBar->popFileStatus();
+ main_ui_->statusBar->pushFileStatus(tr("Saving %1...").arg(file_info.baseName()));
+}
+
void MainWindow::filterExpressionsChanged()
{
// Recreate filter buttons
@@ -878,13 +881,7 @@ void MainWindow::stopCapture() {
#endif // HAVE_LIBPCAP
/* Pop the "<live capture in progress>" message off the status bar. */
- main_ui_->statusBar->popFileStatus();
- QString msg = QString().sprintf("%s", get_basename(capture_file_.capFile()->filename));
- QString msgtip = QString("%1 (%2)")
- .arg(capture_file_.capFile()->filename)
- .arg(file_size_to_qstring(capture_file_.capFile()->f_datalen));
- main_ui_->statusBar->pushFileStatus(msg, msgtip);
-
+ main_ui_->statusBar->setFileName(capture_file_);
/* disable autoscroll timer if any. */
packet_list_->setAutoScroll(false);
@@ -3012,7 +3009,6 @@ void MainWindow::externalMenuItem_triggered()
}
#ifdef HAVE_EXTCAP
-#include <QDebug>
void MainWindow::extcap_options_finished(int result)
{
if ( result == QDialog::Accepted )