diff options
Diffstat (limited to 'ui/qt')
26 files changed, 197 insertions, 215 deletions
diff --git a/ui/qt/address_editor_frame.cpp b/ui/qt/address_editor_frame.cpp index befdde0c58..f0aa92403d 100644 --- a/ui/qt/address_editor_frame.cpp +++ b/ui/qt/address_editor_frame.cpp @@ -25,6 +25,7 @@ #include <QKeyEvent> #include <ui/qt/utils/qt_ui_utils.h> +#include <ui/qt/wireshark_application.h> // To do: // - Fill in currently resolved address. @@ -153,7 +154,7 @@ void AddressEditorFrame::on_buttonBox_accepted() QString name = ui->nameLineEdit->text(); if (!cf_add_ip_name_from_string(cap_file_, addr.toUtf8().constData(), name.toUtf8().constData())) { QString error_msg = tr("Can't assign %1 to %2").arg(name).arg(addr); - emit editAddressStatus(error_msg); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, error_msg); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); return; } diff --git a/ui/qt/address_editor_frame.h b/ui/qt/address_editor_frame.h index 3f010c887b..625654b611 100644 --- a/ui/qt/address_editor_frame.h +++ b/ui/qt/address_editor_frame.h @@ -33,7 +33,6 @@ public slots: signals: void showNameResolutionPreferences(const QString module_name); - void editAddressStatus(const QString &status); void redissectPackets(); protected: diff --git a/ui/qt/column_editor_frame.cpp b/ui/qt/column_editor_frame.cpp index 743c82ec4b..547770bdcf 100644 --- a/ui/qt/column_editor_frame.cpp +++ b/ui/qt/column_editor_frame.cpp @@ -17,6 +17,7 @@ #include <ui/recent.h> #include <ui/preference_utils.h> +#include <ui/qt/wireshark_application.h> #include "column_editor_frame.h" #include <ui_column_editor_frame.h> @@ -167,11 +168,11 @@ void ColumnEditorFrame::keyPressEvent(QKeyEvent *event) if (ui->buttonBox->button(QDialogButtonBox::Ok)->isEnabled()) { on_buttonBox_accepted(); } else if (ui->fieldsNameLineEdit->syntaxState() == SyntaxLineEdit::Empty) { - emit pushFilterSyntaxStatus(tr("Missing fields.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Missing fields.")); } else if (ui->fieldsNameLineEdit->syntaxState() != SyntaxLineEdit::Valid) { - emit pushFilterSyntaxStatus(tr("Invalid fields.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Invalid fields.")); } else if (ui->occurrenceLineEdit->syntaxState() == SyntaxLineEdit::Invalid) { - emit pushFilterSyntaxStatus(tr("Invalid occurrence value.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Invalid occurrence value.")); } } } diff --git a/ui/qt/column_editor_frame.h b/ui/qt/column_editor_frame.h index 2231c4f639..5e5c42ff09 100644 --- a/ui/qt/column_editor_frame.h +++ b/ui/qt/column_editor_frame.h @@ -27,7 +27,6 @@ public: signals: void columnEdited(); - void pushFilterSyntaxStatus(const QString&); protected: virtual void showEvent(QShowEvent *event); diff --git a/ui/qt/filter_expression_frame.cpp b/ui/qt/filter_expression_frame.cpp index f6a69841b1..ea78449ebf 100644 --- a/ui/qt/filter_expression_frame.cpp +++ b/ui/qt/filter_expression_frame.cpp @@ -15,6 +15,7 @@ #include <ui/qt/models/uat_model.h> #include <ui/qt/models/pref_models.h> +#include <ui/qt/wireshark_application.h> #include <QPushButton> #include <QKeyEvent> @@ -169,11 +170,11 @@ void FilterExpressionFrame::keyPressEvent(QKeyEvent *event) if (ui->buttonBox->button(QDialogButtonBox::Ok)->isEnabled()) { on_buttonBox_accepted(); } else if (ui->labelLineEdit->text().length() == 0) { - emit pushFilterSyntaxStatus(tr("Missing label.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Missing label.")); } else if (ui->displayFilterLineEdit->syntaxState() == SyntaxLineEdit::Empty) { - emit pushFilterSyntaxStatus(tr("Missing filter expression.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Missing filter expression.")); } else if (ui->displayFilterLineEdit->syntaxState() != SyntaxLineEdit::Valid) { - emit pushFilterSyntaxStatus(tr("Invalid filter expression.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Invalid filter expression.")); } } } diff --git a/ui/qt/filter_expression_frame.h b/ui/qt/filter_expression_frame.h index 23494dafa2..687cb3c964 100644 --- a/ui/qt/filter_expression_frame.h +++ b/ui/qt/filter_expression_frame.h @@ -30,7 +30,6 @@ public: signals: void showPreferencesDialog(QString pane_name); void filterExpressionsChanged(); - void pushFilterSyntaxStatus(const QString&); protected: virtual void showEvent(QShowEvent *event); diff --git a/ui/qt/main_status_bar.cpp b/ui/qt/main_status_bar.cpp index bea6a829c3..cfc441a0a5 100644 --- a/ui/qt/main_status_bar.cpp +++ b/ui/qt/main_status_bar.cpp @@ -41,16 +41,6 @@ // XXX - The GTK+ code assigns priorities to these and pushes/pops accordingly. -enum StatusContext { - STATUS_CTX_MAIN, - STATUS_CTX_FILE, - STATUS_CTX_FIELD, - STATUS_CTX_BYTE, - STATUS_CTX_FILTER, - STATUS_CTX_PROGRESS, - STATUS_CTX_TEMPORARY -}; - Q_DECLARE_METATYPE(ProfileDialog::ProfileAction) // If we ever add support for multiple windows this will need to be replaced. @@ -72,7 +62,7 @@ statusbar_push_temporary_msg(const gchar *msg_format, ...) push_msg.vsprintf(msg_format, ap); va_end(ap); - cur_main_status_bar_->pushTemporaryStatus(push_msg); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, push_msg); } /* @@ -195,7 +185,7 @@ void MainStatusBar::showExpert() { void MainStatusBar::captureFileClosing() { expert_button_->hide(); progress_frame_.captureFileClosing(); - popFieldStatus(); + popGenericStatus(STATUS_CTX_FIELD); } void MainStatusBar::expertUpdate() { @@ -241,11 +231,11 @@ void MainStatusBar::expertUpdate() { void MainStatusBar::setFileName(CaptureFile &cf) { if (cf.isValid()) { - popFileStatus(); + popGenericStatus(STATUS_CTX_FILE); QString msgtip = QString("%1 (%2)") .arg(cf.capFile()->filename) .arg(file_size_to_qstring(cf.capFile()->f_datalen)); - pushFileStatus(cf.fileName(), msgtip); + pushGenericStatus(STATUS_CTX_FILE, cf.fileName(), msgtip); } } @@ -271,7 +261,7 @@ void MainStatusBar::selectedFieldChanged(FieldInformation * finfo) QString item_info; if ( ! finfo ) { - pushFieldStatus(item_info); + pushGenericStatus(STATUS_CTX_FIELD, item_info); return; } @@ -297,38 +287,7 @@ void MainStatusBar::selectedFieldChanged(FieldInformation * finfo) } } - pushFieldStatus(item_info); -} - -void MainStatusBar::pushTemporaryStatus(const QString &message) { - info_status_.pushText(message, STATUS_CTX_TEMPORARY); -} - -void MainStatusBar::popTemporaryStatus() { - info_status_.popText(STATUS_CTX_TEMPORARY); -} - -void MainStatusBar::pushFileStatus(const QString &message, const QString &messagetip) { - info_status_.pushText(message, STATUS_CTX_FILE); - info_status_.setToolTip(messagetip); - expertUpdate(); -} - -void MainStatusBar::popFileStatus() { - info_status_.popText(STATUS_CTX_FILE); - info_status_.setToolTip(QString()); -} - -void MainStatusBar::pushFieldStatus(const QString &message) { - if (message.isEmpty()) { - popFieldStatus(); - } else { - info_status_.pushText(message, STATUS_CTX_FIELD); - } -} - -void MainStatusBar::popFieldStatus() { - info_status_.popText(STATUS_CTX_FIELD); + pushGenericStatus(STATUS_CTX_FIELD, item_info); } void MainStatusBar::highlightedFieldChanged(FieldInformation * finfo) @@ -350,65 +309,48 @@ void MainStatusBar::highlightedFieldChanged(FieldInformation * finfo) .arg(finfo->headerInfo().abbreviation); } - pushByteStatus(hint); + pushGenericStatus(STATUS_CTX_BYTE, hint); } -void MainStatusBar::pushByteStatus(const QString &message) +void MainStatusBar::pushGenericStatus(StatusContext status, const QString &message, const QString &messagetip) { - if (message.isEmpty()) { - popByteStatus(); - } else { - info_status_.pushText(message, STATUS_CTX_BYTE); - } -} + LabelStack * stack = &info_status_; -void MainStatusBar::popByteStatus() -{ - info_status_.popText(STATUS_CTX_BYTE); -} + if ( status == STATUS_CTX_MAIN ) + stack = &packet_status_; -void MainStatusBar::pushFilterStatus(const QString &message) { - if (message.isEmpty()) { - popFilterStatus(); - } else { - info_status_.pushText(message, STATUS_CTX_FILTER); - } - expertUpdate(); -} + if ( message.isEmpty() && status != STATUS_CTX_FILE && status != STATUS_CTX_TEMPORARY && status != STATUS_CTX_PROGRESS ) + popGenericStatus(status); + else + stack->pushText(message, status); -void MainStatusBar::popFilterStatus() { - info_status_.popText(STATUS_CTX_FILTER); -} + stack->setToolTip(messagetip); -void MainStatusBar::pushPacketStatus(const QString &message) { - if (message.isEmpty()) { - popPacketStatus(); - } else { - packet_status_.pushText(message, STATUS_CTX_MAIN); - } -} + if ( status == STATUS_CTX_FILTER || status == STATUS_CTX_FILE ) + expertUpdate(); -void MainStatusBar::popPacketStatus() { - packet_status_.popText(STATUS_CTX_MAIN); + if ( status == STATUS_CTX_PROGRESS ) + progress_frame_.showBusy(true, false, NULL); } -void MainStatusBar::setProfileName() +void MainStatusBar::popGenericStatus(StatusContext status) { - profile_status_.setText(tr("Profile: %1").arg(get_profile_name())); -} + LabelStack * stack = &info_status_; -void MainStatusBar::pushBusyStatus(const QString &message, const QString &messagetip) -{ - info_status_.pushText(message, STATUS_CTX_PROGRESS); - info_status_.setToolTip(messagetip); - progress_frame_.showBusy(true, false, NULL); + if ( status == STATUS_CTX_MAIN ) + stack = &packet_status_; + + stack->setToolTip(QString()); + + stack->popText(status); + + if ( status == STATUS_CTX_PROGRESS ) + progress_frame_.hide(); } -void MainStatusBar::popBusyStatus() +void MainStatusBar::setProfileName() { - info_status_.popText(STATUS_CTX_PROGRESS); - info_status_.setToolTip(QString()); - progress_frame_.hide(); + profile_status_.setText(tr("Profile: %1").arg(get_profile_name())); } void MainStatusBar::pushProgressStatus(const QString &message, bool animate, bool terminate_is_stop, gboolean *stop_flag) @@ -422,12 +364,6 @@ void MainStatusBar::updateProgressStatus(int value) progress_frame_.setValue(value); } -void MainStatusBar::popProgressStatus() -{ - info_status_.popText(STATUS_CTX_PROGRESS); - progress_frame_.hide(); -} - void MainStatusBar::selectedFrameChanged(int) { showCaptureStatistics(); @@ -498,8 +434,6 @@ void MainStatusBar::showCaptureStatistics() if (packets_str.isEmpty()) { packets_str = tr("No Packets"); } - popPacketStatus(); - pushPacketStatus(packets_str); } void MainStatusBar::updateCaptureStatistics(capture_session *cap_session) @@ -713,7 +647,7 @@ void MainStatusBar::captureEventHandler(CaptureEvent ev) case CaptureEvent::Finished: case CaptureEvent::Failed: case CaptureEvent::Stopped: - popFileStatus(); + popGenericStatus(STATUS_CTX_FILE); break; default: break; diff --git a/ui/qt/main_status_bar.h b/ui/qt/main_status_bar.h index 79b9f536e2..2478e85121 100644 --- a/ui/qt/main_status_bar.h +++ b/ui/qt/main_status_bar.h @@ -40,6 +40,17 @@ public: void setFileName(CaptureFile &cf); protected: + + enum StatusContext { + STATUS_CTX_MAIN, + STATUS_CTX_FILE, + STATUS_CTX_FIELD, + STATUS_CTX_BYTE, + STATUS_CTX_FILTER, + STATUS_CTX_PROGRESS, + STATUS_CTX_TEMPORARY + }; + virtual void changeEvent(QEvent* event); private: @@ -58,6 +69,9 @@ private: void showCaptureStatistics(); + void pushGenericStatus(StatusContext status, const QString &message, const QString &messagetip = QString()); + void popGenericStatus(StatusContext status); + signals: void showExpertInfo(); void editCaptureComment(); @@ -67,21 +81,8 @@ public slots: void setCaptureFile(capture_file *cf); void selectedFieldChanged(FieldInformation *); void highlightedFieldChanged(FieldInformation *); - void pushTemporaryStatus(const QString &message); - void popTemporaryStatus(); - void pushFileStatus(const QString &message, const QString &messagetip = QString()); - void popFileStatus(); - void pushFieldStatus(const QString &message); - void popFieldStatus(); - void pushByteStatus(const QString &message); - void popByteStatus(); - void pushFilterStatus(const QString &message); - void popFilterStatus(); - void pushBusyStatus(const QString &message, const QString &messagetip = QString()); - void popBusyStatus(); void pushProgressStatus(const QString &message, bool animate, bool terminate_is_stop = false, gboolean *stop_flag = NULL); void updateProgressStatus(int value); - void popProgressStatus(); void selectedFrameChanged(int); void updateCaptureStatistics(capture_session * cap_session); @@ -90,14 +91,13 @@ public slots: void captureEventHandler(CaptureEvent ev); private slots: - void pushPacketStatus(const QString &message); - void popPacketStatus(); - void toggleBackground(bool enabled); void setProfileName(); void switchToProfile(); void manageProfile(); void showProfileMenu(const QPoint &global_pos, Qt::MouseButton button); + + friend WiresharkApplication; }; #endif // MAIN_STATUS_BAR_H diff --git a/ui/qt/main_window.cpp b/ui/qt/main_window.cpp index a147909e30..f2edc78db9 100644 --- a/ui/qt/main_window.cpp +++ b/ui/qt/main_window.cpp @@ -398,8 +398,6 @@ MainWindow::MainWindow(QWidget *parent) : main_ui_->displayFilterToolBar->addWidget(filter_expression_toolbar_); #if defined(HAVE_LIBNL) && defined(HAVE_NL80211) - connect(wireless_frame_, SIGNAL(pushAdapterStatus(const QString&)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(const QString&))); connect(wireless_frame_, SIGNAL(showWirelessPreferences(QString)), this, SLOT(showPreferencesDialog(QString))); #endif @@ -412,21 +410,13 @@ MainWindow::MainWindow(QWidget *parent) : // https://bugreports.qt-project.org/browse/QTBUG-7174 main_ui_->searchFrame->hide(); - connect(main_ui_->searchFrame, SIGNAL(pushFilterSyntaxStatus(const QString&)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(const QString&))); connect(main_ui_->searchFrame, SIGNAL(visibilityChanged(bool)), main_ui_->actionEditFindPacket, SLOT(setChecked(bool))); main_ui_->addressEditorFrame->hide(); main_ui_->columnEditorFrame->hide(); - connect(main_ui_->columnEditorFrame, SIGNAL(pushFilterSyntaxStatus(const QString&)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(const QString&))); main_ui_->preferenceEditorFrame->hide(); - connect(main_ui_->preferenceEditorFrame, SIGNAL(pushFilterSyntaxStatus(const QString&)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(const QString&))); main_ui_->filterExpressionFrame->hide(); - connect(main_ui_->filterExpressionFrame, SIGNAL(pushFilterSyntaxStatus(const QString&)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(const QString&))); #ifndef HAVE_LIBPCAP main_ui_->menuCapture->setEnabled(false); @@ -547,13 +537,7 @@ MainWindow::MainWindow(QWidget *parent) : this, SLOT(startCapture())); connect(welcome_page_, SIGNAL(recentFileActivated(QString)), this, SLOT(openCaptureFile(QString))); - connect(welcome_page_, SIGNAL(pushFilterSyntaxStatus(const QString&)), - main_ui_->statusBar, SLOT(pushFilterStatus(const QString&))); - connect(welcome_page_, SIGNAL(popFilterSyntaxStatus()), - main_ui_->statusBar, SLOT(popFilterStatus())); - connect(main_ui_->addressEditorFrame, SIGNAL(editAddressStatus(QString)), - main_ui_->statusBar, SLOT(pushTemporaryStatus(QString))); connect(main_ui_->addressEditorFrame, SIGNAL(redissectPackets()), this, SLOT(redissectPackets())); connect(main_ui_->addressEditorFrame, SIGNAL(showNameResolutionPreferences(QString)), @@ -957,7 +941,7 @@ void MainWindow::dragEnterEvent(QDragEnterEvent *event) // We could alternatively call setAcceptDrops(!capture_in_progress) // in setMenusForCaptureInProgress but that wouldn't provide feedback. - main_ui_->statusBar->pushTemporaryStatus(tr("Unable to drop files during capture.")); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, tr("Unable to drop files during capture.")); event->setDropAction(Qt::IgnoreAction); event->ignore(); return; diff --git a/ui/qt/main_window.h b/ui/qt/main_window.h index 72a10fe7fa..ef787cbe3d 100644 --- a/ui/qt/main_window.h +++ b/ui/qt/main_window.h @@ -91,6 +91,7 @@ class ProtoTree; class WirelessFrame; #endif class FilterExpressionToolBar; +class WiresharkApplication; class QAction; class QActionGroup; @@ -683,6 +684,8 @@ private slots: void extcap_options_finished(int result); void showExtcapOptionsDialog(QString & device_name); + + friend WiresharkApplication; }; #endif // MAINWINDOW_H diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index e6bda8ab85..0080360706 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -576,7 +576,7 @@ void MainWindow::captureCaptureFailed(capture_session *) { // Reset expert information indicator main_ui_->statusBar->captureFileClosing(); - main_ui_->statusBar->popFileStatus(); + wsApp->popStatus(WiresharkApplication::FileStatus); setWindowIcon(wsApp->normalIcon()); @@ -662,11 +662,11 @@ void MainWindow::captureEventHandler(CaptureEvent ev) case CaptureEvent::Merge: switch (ev.eventType()) { case CaptureEvent::Started: - main_ui_->statusBar->popFileStatus(); - main_ui_->statusBar->pushFileStatus(tr("Merging files"), QString()); + wsApp->popStatus(WiresharkApplication::FileStatus); + wsApp->pushStatus(WiresharkApplication::FileStatus, tr("Merging files"), QString()); break; case CaptureEvent::Finished: - main_ui_->statusBar->popFileStatus(); + wsApp->popStatus(WiresharkApplication::FileStatus); break; default: break; @@ -678,8 +678,8 @@ void MainWindow::captureEventHandler(CaptureEvent ev) case CaptureEvent::Started: { QFileInfo file_info(ev.filePath()); - main_ui_->statusBar->popFileStatus(); - main_ui_->statusBar->pushFileStatus(tr("Saving %1" UTF8_HORIZONTAL_ELLIPSIS).arg(file_info.fileName())); + wsApp->popStatus(WiresharkApplication::FileStatus); + wsApp->pushStatus(WiresharkApplication::FileStatus, tr("Saving %1" UTF8_HORIZONTAL_ELLIPSIS).arg(file_info.fileName())); break; } default: @@ -744,10 +744,10 @@ void MainWindow::captureFileReadStarted(const QString &action) { /* Set up main window for a capture file. */ // main_set_for_capture_file(TRUE); - main_ui_->statusBar->popFileStatus(); + wsApp->popStatus(WiresharkApplication::FileStatus); QString msg = QString(tr("%1: %2")).arg(action).arg(capture_file_.fileName()); QString msgtip = QString(); - main_ui_->statusBar->pushFileStatus(msg, msgtip); + wsApp->pushStatus(WiresharkApplication::FileStatus, msg, msgtip); showCapture(); main_ui_->actionAnalyzeReloadLuaPlugins->setEnabled(false); main_ui_->wirelessTimelineWidget->captureFileReadStarted(capture_file_.capFile()); @@ -808,7 +808,7 @@ void MainWindow::captureFileClosed() { // Reset expert information indicator main_ui_->statusBar->captureFileClosing(); - main_ui_->statusBar->popFileStatus(); + wsApp->popStatus(WiresharkApplication::FileStatus); setWSWindowTitle(); setWindowIcon(wsApp->normalIcon()); @@ -835,7 +835,7 @@ void MainWindow::startCapture() { /* did the user ever select a capture interface before? */ if (global_capture_opts.num_selected == 0) { QString msg = QString(tr("No interface selected")); - main_ui_->statusBar->pushTemporaryStatus(msg); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, msg); main_ui_->actionCaptureStart->setChecked(false); return; } @@ -845,7 +845,7 @@ void MainWindow::startCapture() { // case, e.g. with QtMacExtras. if (!capture_filter_valid_) { QString msg = QString(tr("Invalid capture filter")); - main_ui_->statusBar->pushTemporaryStatus(msg); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, msg); main_ui_->actionCaptureStart->setChecked(false); return; } @@ -878,10 +878,10 @@ void MainWindow::startCapture() { } g_string_append(interface_names, " "); - main_ui_->statusBar->popFileStatus(); + wsApp->popStatus(WiresharkApplication::FileStatus); QString msg = QString().sprintf("%s<live capture in progress>", interface_names->str); QString msgtip = QString().sprintf("to file: %s", (capture_opts->save_file) ? capture_opts->save_file : ""); - main_ui_->statusBar->pushFileStatus(msg, msgtip); + wsApp->pushStatus(WiresharkApplication::FileStatus, msg, msgtip); g_string_free(interface_names, TRUE); /* The capture succeeded, which means the capture filter syntax is @@ -1938,7 +1938,7 @@ void MainWindow::actionEditCopyTriggered(MainWindow::CopySelected selection_type wsApp->clipboard()->setText(clip); } else { QString err = tr("Couldn't copy text. Try another item."); - main_ui_->statusBar->pushTemporaryStatus(err); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, err); } } @@ -2396,7 +2396,7 @@ void MainWindow::colorizeConversation(bool create_rule) guint8 cc_num = colorize_action->data().toUInt(); gchar *filter = conversation_filter_from_packet(pi); if (filter == NULL) { - main_ui_->statusBar->pushTemporaryStatus(tr("Unable to build conversation filter.")); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, tr("Unable to build conversation filter.")); return; } @@ -2632,7 +2632,7 @@ void MainWindow::matchFieldFilter(FilterAction::Action action, FilterAction::Act QString err = tr("No filter available. Try another "); err.append(packet_list_->contextMenuActive() ? "column" : "item"); err.append("."); - main_ui_->statusBar->pushTemporaryStatus(err); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, err); return; } @@ -3498,14 +3498,14 @@ void MainWindow::goToConversationFrame(bool go_next) { * coloring */ filter = conversation_filter_from_packet(pi); if (filter == NULL) { - main_ui_->statusBar->pushTemporaryStatus(tr("Unable to build conversation filter.")); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, tr("Unable to build conversation filter.")); g_free(filter); return; } if (!dfilter_compile(filter, &dfcode, NULL)) { /* The attempt failed; report an error. */ - main_ui_->statusBar->pushTemporaryStatus(tr("Error compiling filter for this conversation.")); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, tr("Error compiling filter for this conversation.")); g_free(filter); return; } @@ -3514,7 +3514,7 @@ void MainWindow::goToConversationFrame(bool go_next) { if (!found_packet) { /* We didn't find a packet */ - main_ui_->statusBar->pushTemporaryStatus(tr("No previous/next packet in conversation.")); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, tr("No previous/next packet in conversation.")); } dfilter_free(dfcode); @@ -3592,7 +3592,7 @@ void MainWindow::on_actionCaptureStart_triggered() #ifdef HAVE_LIBPCAP if (global_capture_opts.num_selected == 0) { QString err_msg = tr("No Interface Selected"); - main_ui_->statusBar->pushTemporaryStatus(err_msg); + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, err_msg); main_ui_->actionCaptureStart->setChecked(false); return; } diff --git a/ui/qt/preference_editor_frame.cpp b/ui/qt/preference_editor_frame.cpp index 30a230298c..9c9dd98ea4 100644 --- a/ui/qt/preference_editor_frame.cpp +++ b/ui/qt/preference_editor_frame.cpp @@ -242,7 +242,7 @@ void PreferenceEditorFrame::keyPressEvent(QKeyEvent *event) if (ui->buttonBox->button(QDialogButtonBox::Ok)->isEnabled()) { on_buttonBox_accepted(); } else if (ui->preferenceLineEdit->syntaxState() == SyntaxLineEdit::Invalid) { - emit pushFilterSyntaxStatus(tr("Invalid value.")); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, tr("Invalid value.")); } } } diff --git a/ui/qt/preference_editor_frame.h b/ui/qt/preference_editor_frame.h index 7168d19b76..970387f202 100644 --- a/ui/qt/preference_editor_frame.h +++ b/ui/qt/preference_editor_frame.h @@ -33,7 +33,6 @@ public slots: signals: void showProtocolPreferences(const QString module_name); - void pushFilterSyntaxStatus(const QString&); protected: virtual void showEvent(QShowEvent *event); diff --git a/ui/qt/search_frame.cpp b/ui/qt/search_frame.cpp index 8b3ef01cd0..b82baf6271 100644 --- a/ui/qt/search_frame.cpp +++ b/ui/qt/search_frame.cpp @@ -373,13 +373,13 @@ void SearchFrame::on_findButton_clicked() case df_search_: if (!dfilter_compile(sf_ui_->searchLineEdit->text().toUtf8().constData(), &dfp, NULL)) { err_string = tr("Invalid filter."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } if (dfp == NULL) { err_string = tr("That filter doesn't test anything."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } break; @@ -387,7 +387,7 @@ void SearchFrame::on_findButton_clicked() bytes = convert_string_to_hex(sf_ui_->searchLineEdit->text().toUtf8().constData(), &nbytes); if (bytes == NULL) { err_string = tr("That's not a valid hex string."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } cap_file_->hex = TRUE; @@ -396,7 +396,7 @@ void SearchFrame::on_findButton_clicked() case regex_search_: if (sf_ui_->searchLineEdit->text().isEmpty()) { err_string = tr("You didn't specify any text for which to search."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } cap_file_->string = TRUE; @@ -414,14 +414,14 @@ void SearchFrame::on_findButton_clicked() break; default: err_string = tr("No valid character set selected. Please report this to the development team."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } string = convert_string_case(sf_ui_->searchLineEdit->text().toUtf8().constData(), cap_file_->case_type); break; default: err_string = tr("No valid search type selected. Please report this to the development team."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } @@ -437,7 +437,7 @@ void SearchFrame::on_findButton_clicked() break; default: err_string = tr("No valid search area selected. Please report this to the development team."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } @@ -451,12 +451,12 @@ void SearchFrame::on_findButton_clicked() if (!found_packet) { /* We didn't find a packet */ err_string = tr("No packet contained those bytes."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } } else if (cap_file_->string) { if (search_type == regex_search_ && !cap_file_->regex) { - emit pushFilterSyntaxStatus(regex_error_); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, regex_error_); return; } if (cap_file_->summary_data) { @@ -465,7 +465,7 @@ void SearchFrame::on_findButton_clicked() g_free(string); if (!found_packet) { err_string = tr("No packet contained that string in its Info column."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } } else if (cap_file_->decode_data) { @@ -474,7 +474,7 @@ void SearchFrame::on_findButton_clicked() g_free(string); if (!found_packet) { err_string = tr("No packet contained that string in its dissected display."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } } else if (cap_file_->packet_data && string) { @@ -483,7 +483,7 @@ void SearchFrame::on_findButton_clicked() g_free(string); if (!found_packet) { err_string = tr("No packet contained that string in its converted data."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); return; } } @@ -493,7 +493,7 @@ void SearchFrame::on_findButton_clicked() dfilter_free(dfp); if (!found_packet) { err_string = tr("No packet matched that filter."); - emit pushFilterSyntaxStatus(err_string); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_string); g_free(bytes); return; } diff --git a/ui/qt/search_frame.h b/ui/qt/search_frame.h index 6092cb0840..11b011dd84 100644 --- a/ui/qt/search_frame.h +++ b/ui/qt/search_frame.h @@ -36,9 +36,6 @@ public slots: void setCaptureFile(capture_file *cf); void findFrameWithFilter(QString &filter); -signals: - void pushFilterSyntaxStatus(const QString&); - protected: virtual void keyPressEvent(QKeyEvent *event); void changeEvent(QEvent* event); diff --git a/ui/qt/welcome_page.cpp b/ui/qt/welcome_page.cpp index 262e73756e..011a77f3cb 100644 --- a/ui/qt/welcome_page.cpp +++ b/ui/qt/welcome_page.cpp @@ -83,10 +83,6 @@ WelcomePage::WelcomePage(QWidget *parent) : connect(welcome_ui_->interfaceFrame, SIGNAL(itemSelectionChanged()), this, SLOT(interfaceSelected())); connect(welcome_ui_->captureFilterComboBox->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(captureFilterTextEdited(QString))); - connect(welcome_ui_->captureFilterComboBox, SIGNAL(pushFilterSyntaxStatus(const QString&)), - this, SIGNAL(pushFilterSyntaxStatus(const QString&))); - connect(welcome_ui_->captureFilterComboBox, SIGNAL(popFilterSyntaxStatus()), - this, SIGNAL(popFilterSyntaxStatus())); connect(welcome_ui_->captureFilterComboBox, SIGNAL(captureFilterSyntaxChanged(bool)), this, SIGNAL(captureFilterSyntaxChanged(bool))); connect(welcome_ui_->captureFilterComboBox, SIGNAL(startCapture()), diff --git a/ui/qt/welcome_page.h b/ui/qt/welcome_page.h index fb6368cae1..238972e0b2 100644 --- a/ui/qt/welcome_page.h +++ b/ui/qt/welcome_page.h @@ -61,8 +61,6 @@ private: signals: void startCapture(); void recentFileActivated(QString cfile); - void pushFilterSyntaxStatus(const QString&); - void popFilterSyntaxStatus(); void captureFilterSyntaxChanged(bool valid); void showExtcapOptions(QString &device_name); void interfacesChanged(); diff --git a/ui/qt/widgets/capture_filter_combo.cpp b/ui/qt/widgets/capture_filter_combo.cpp index 7e8c20a43e..d61cc76aca 100644 --- a/ui/qt/widgets/capture_filter_combo.cpp +++ b/ui/qt/widgets/capture_filter_combo.cpp @@ -39,10 +39,6 @@ CaptureFilterCombo::CaptureFilterCombo(QWidget *parent, bool plain) : connect(this, &CaptureFilterCombo::interfacesChanged, cf_edit_, static_cast<void (CaptureFilterEdit::*)()>(&CaptureFilterEdit::checkFilter)); - connect(cf_edit_, &CaptureFilterEdit::pushFilterSyntaxStatus, - this, &CaptureFilterCombo::pushFilterSyntaxStatus); - connect(cf_edit_, &CaptureFilterEdit::popFilterSyntaxStatus, - this, &CaptureFilterCombo::popFilterSyntaxStatus); connect(cf_edit_, &CaptureFilterEdit::captureFilterSyntaxChanged, this, &CaptureFilterCombo::captureFilterSyntaxChanged); connect(cf_edit_, &CaptureFilterEdit::startCapture, this, &CaptureFilterCombo::startCapture); diff --git a/ui/qt/widgets/capture_filter_combo.h b/ui/qt/widgets/capture_filter_combo.h index a0c4edb66d..340bd08bdc 100644 --- a/ui/qt/widgets/capture_filter_combo.h +++ b/ui/qt/widgets/capture_filter_combo.h @@ -26,8 +26,6 @@ public: signals: void interfacesChanged(); - void pushFilterSyntaxStatus(const QString&); - void popFilterSyntaxStatus(); void captureFilterSyntaxChanged(bool valid); void startCapture(); diff --git a/ui/qt/widgets/capture_filter_edit.cpp b/ui/qt/widgets/capture_filter_edit.cpp index 6c8d101f5f..8c17062c55 100644 --- a/ui/qt/widgets/capture_filter_edit.cpp +++ b/ui/qt/widgets/capture_filter_edit.cpp @@ -319,7 +319,7 @@ void CaptureFilterEdit::checkFilter(const QString& filter) actions_->checkedAction()->setChecked(false); setSyntaxState(Busy); - popFilterSyntaxStatus(); + wsApp->popStatus(WiresharkApplication::FilterSyntax); setToolTip(QString()); bool empty = filter.isEmpty(); @@ -420,7 +420,7 @@ void CaptureFilterEdit::setFilterSyntaxState(QString filter, int state, QString if (filter.compare(text()) == 0) { // The user hasn't changed the filter setSyntaxState((SyntaxState)state); if (!err_msg.isEmpty()) { - emit pushFilterSyntaxStatus(err_msg); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, err_msg); setToolTip(err_msg); } } diff --git a/ui/qt/widgets/capture_filter_edit.h b/ui/qt/widgets/capture_filter_edit.h index 596c8eee7c..5f83a4dd51 100644 --- a/ui/qt/widgets/capture_filter_edit.h +++ b/ui/qt/widgets/capture_filter_edit.h @@ -67,8 +67,6 @@ private: void buildCompletionList(const QString& primitive_word); signals: - void pushFilterSyntaxStatus(const QString&); - void popFilterSyntaxStatus(); void captureFilterSyntaxChanged(bool valid); void startCapture(); void addBookmark(const QString filter); diff --git a/ui/qt/widgets/display_filter_edit.cpp b/ui/qt/widgets/display_filter_edit.cpp index 29d036a397..170fd4c768 100644 --- a/ui/qt/widgets/display_filter_edit.cpp +++ b/ui/qt/widgets/display_filter_edit.cpp @@ -125,11 +125,6 @@ DisplayFilterEdit::DisplayFilterEdit(QWidget *parent, DisplayFilterEditType type connect(wsApp, &WiresharkApplication::displayFilterListChanged, this, &DisplayFilterEdit::updateBookmarkMenu); connect(wsApp, SIGNAL(preferencesChanged()), this, SLOT(checkFilter())); - /* - connect(df_edit, SIGNAL(pushFilterSyntaxStatus(const QString&)), main_ui_->statusBar, SLOT(pushFilterStatus(const QString&))); - connect(df_edit, SIGNAL(popFilterSyntaxStatus()), main_ui_->statusBar, SLOT(popFilterStatus())); - */ - connect(wsApp, SIGNAL(appInitialized()), this, SLOT(connectToMainWindow())); } @@ -349,15 +344,14 @@ void DisplayFilterEdit::checkFilter(const QString& filter_text) switch (syntaxState()) { case Deprecated: { - emit pushFilterSyntaxStatus(syntaxErrorMessage()); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, syntaxErrorMessage()); setToolTip(syntaxErrorMessage()); break; } case Invalid: { - QString invalidMsg(tr("Invalid filter: ")); - invalidMsg.append(syntaxErrorMessage()); - emit pushFilterSyntaxStatus(invalidMsg); + QString invalidMsg = tr("Invalid filter: ").append(syntaxErrorMessage()); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, syntaxErrorMessage()); setToolTip(invalidMsg); break; } @@ -472,14 +466,14 @@ void DisplayFilterEdit::buildCompletionList(const QString &field_word) { // Push a hint about the current field. if (syntaxState() == Valid) { - emit popFilterSyntaxStatus(); + wsApp->popStatus(WiresharkApplication::FilterSyntax); header_field_info *hfinfo = proto_registrar_get_byname(field_word.toUtf8().constData()); if (hfinfo) { QString cursor_field_msg = QString("%1: %2") .arg(hfinfo->name) .arg(ftype_pretty_name(hfinfo->type)); - emit pushFilterSyntaxStatus(cursor_field_msg); + wsApp->pushStatus(WiresharkApplication::FilterSyntax, cursor_field_msg); } } diff --git a/ui/qt/wireless_frame.cpp b/ui/qt/wireless_frame.cpp index 31fd24b19a..2ad9f26304 100644 --- a/ui/qt/wireless_frame.cpp +++ b/ui/qt/wireless_frame.cpp @@ -297,6 +297,8 @@ void WirelessFrame::setInterfaceInfo() if (cur_iface.isEmpty() || cur_chan_idx < 0 || cur_type_idx < 0) return; + QString err_str; + #if defined(HAVE_LIBNL) && defined(HAVE_NL80211) && defined(HAVE_LIBPCAP) int frequency = ui->channelComboBox->itemData(cur_chan_idx).toInt(); int chan_type = ui->channelTypeComboBox->itemData(cur_type_idx).toInt(); @@ -325,8 +327,7 @@ void WirelessFrame::setInterfaceInfo() /* Parse the error msg */ if (ret) { - QString err_str = tr("Unable to set channel or offset."); - emit pushAdapterStatus(err_str); + err_str = tr("Unable to set channel or offset."); } #elif defined(HAVE_AIRPCAP) int frequency = ui->channelComboBox->itemData(cur_chan_idx).toInt(); @@ -334,18 +335,20 @@ void WirelessFrame::setInterfaceInfo() if (frequency < 0 || chan_type < 0) return; if (ws80211_set_freq(cur_iface.toUtf8().constData(), frequency, chan_type, -1, -1) != 0) { - QString err_str = tr("Unable to set channel or offset."); - emit pushAdapterStatus(err_str); + err_str = tr("Unable to set channel or offset."); } #endif if (cur_fcs_idx >= 0) { if (ws80211_set_fcs_validation(cur_iface.toUtf8().constData(), (enum ws80211_fcs_validation) cur_fcs_idx) != 0) { - QString err_str = tr("Unable to set FCS validation behavior."); - emit pushAdapterStatus(err_str); + err_str = tr("Unable to set FCS validation behavior."); } } + if (!err_str.isEmpty()) { + wsApp->pushStatus(WiresharkApplication::TemporaryStatus, err_str); + } + getInterfaceInfo(); } diff --git a/ui/qt/wireless_frame.h b/ui/qt/wireless_frame.h index 598b0a319e..6d231f8273 100644 --- a/ui/qt/wireless_frame.h +++ b/ui/qt/wireless_frame.h @@ -29,7 +29,6 @@ public: void setCaptureInProgress(bool capture_in_progress); signals: - void pushAdapterStatus(const QString&); void showWirelessPreferences(const QString wlan_module_name); protected: diff --git a/ui/qt/wireshark_application.cpp b/ui/qt/wireshark_application.cpp index a0643c20bb..038d70aa37 100644 --- a/ui/qt/wireshark_application.cpp +++ b/ui/qt/wireshark_application.cpp @@ -69,6 +69,9 @@ #include <ui/qt/capture_file.h> +#include <ui/qt/main_window.h> +#include <ui_main_window.h> + #include <QAction> #include <QApplication> #include <QColorDialog> @@ -1370,6 +1373,74 @@ void WiresharkApplication::captureEventHandler(CaptureEvent ev) } } +void WiresharkApplication::pushStatus(StatusInfo status, const QString &message, const QString &messagetip) +{ + if ( ! mainWindow() || ! qobject_cast<MainWindow *>(mainWindow()) ) + return; + + MainWindow * mw = qobject_cast<MainWindow *>(mainWindow()); + if ( ! mw->main_ui_ || ! mw->main_ui_->statusBar ) + return; + + MainStatusBar * bar = mw->main_ui_->statusBar; + + switch(status) + { + case FilterSyntax: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_FILTER, message); + break; + case FieldStatus: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_FIELD, message); + break; + case FileStatus: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_FILE, message, messagetip); + break; + case ByteStatus: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_BYTE, message); + break; + case BusyStatus: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_PROGRESS, message, messagetip); + break; + case TemporaryStatus: + bar->pushGenericStatus(MainStatusBar::STATUS_CTX_TEMPORARY, message); + break; + } +} + +void WiresharkApplication::popStatus(StatusInfo status) +{ + if ( ! mainWindow() || ! qobject_cast<MainWindow *>(mainWindow()) ) + return; + + MainWindow * mw = qobject_cast<MainWindow *>(mainWindow()); + if ( ! mw->main_ui_ || ! mw->main_ui_->statusBar ) + return; + + MainStatusBar * bar = mw->main_ui_->statusBar; + + switch(status) + { + case FilterSyntax: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_FILTER); + break; + case FieldStatus: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_FIELD); + break; + case FileStatus: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_FILE); + break; + case ByteStatus: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_BYTE); + break; + case BusyStatus: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_PROGRESS); + break; + case TemporaryStatus: + bar->popGenericStatus(MainStatusBar::STATUS_CTX_TEMPORARY); + break; + } +} + /* * Editor modelines * diff --git a/ui/qt/wireshark_application.h b/ui/qt/wireshark_application.h index e7c72612b5..b512ec5864 100644 --- a/ui/qt/wireshark_application.h +++ b/ui/qt/wireshark_application.h @@ -72,6 +72,15 @@ public: CaptureOptionsDialog }; + enum StatusInfo { + FilterSyntax, + FieldStatus, + FileStatus, + BusyStatus, + ByteStatus, + TemporaryStatus + }; + void registerUpdate(register_action_e action, const char *message); void emitAppSignal(AppSignal signal); // Emitting app signals (PacketDissectionChanged in particular) from @@ -129,6 +138,9 @@ public: void zoomTextFont(int zoomLevel); + void pushStatus(StatusInfo sinfo, const QString &message, const QString &messagetip = QString()); + void popStatus(StatusInfo sinfo); + private: bool initialized_; bool is_reloading_lua_; |