diff options
author | Gerald Combs <gerald@wireshark.org> | 2015-05-22 15:33:38 -0700 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2015-05-23 00:31:08 +0000 |
commit | b18309c07f5a2a4212764676e0e19e3b3dfa9868 (patch) | |
tree | bcf7b1ac99751da6937f84673ac3ebb30890b445 /ui | |
parent | b25faac85d806d7f3977e194ca6f520da8e5c030 (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.cpp | 48 | ||||
-rw-r--r-- | ui/qt/capture_file.h | 13 | ||||
-rw-r--r-- | ui/qt/main_status_bar.cpp | 12 | ||||
-rw-r--r-- | ui/qt/main_status_bar.h | 5 | ||||
-rw-r--r-- | ui/qt/main_window.cpp | 17 | ||||
-rw-r--r-- | ui/qt/main_window.h | 6 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 28 |
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 ) |