diff options
Diffstat (limited to 'ui/qt/main_window_slots.cpp')
-rw-r--r-- | ui/qt/main_window_slots.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 48be263011..0a578fd706 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -55,6 +55,7 @@ #include "epan/epan_dissect.h" #include "epan/filter_expressions.h" #include "epan/prefs.h" +#include "epan/plugin_if.h" #include "epan/uat.h" #include "epan/value_string.h" @@ -119,6 +120,7 @@ #include "gsm_map_summary_dialog.h" #include "iax2_analysis_dialog.h" #include "io_graph_dialog.h" +#include <additional_toolbar.h> #include "lbm_stream_dialog.h" #include "lbm_uimflow_dialog.h" #include "lbm_lbtrm_transport_dialog.h" @@ -483,6 +485,18 @@ void MainWindow::layoutToolbars() main_ui_->displayFilterToolBar->setVisible(recent.filter_toolbar_show); main_ui_->wirelessToolBar->setVisible(recent.wireless_toolbar_show); main_ui_->statusBar->setVisible(recent.statusbar_show); + + QList<QToolBar *> toolbars = findChildren<QToolBar *>(); + foreach (QToolBar * bar, toolbars ) { + AdditionalToolBar * iftoolbar = dynamic_cast<AdditionalToolBar *>(bar); + if ( iftoolbar ) { + bool visible = false; + if ( g_list_find_custom(recent.gui_additional_toolbars, iftoolbar->menuName().toUtf8().constData(), (GCompareFunc) strcmp) ) + visible = true; + + iftoolbar->setVisible(visible); + } + } } void MainWindow::updatePreferenceActions() @@ -509,6 +523,15 @@ void MainWindow::updateRecentActions() main_ui_->actionViewPacketDetails->setChecked(recent.tree_view_show && prefs_has_layout_pane_content(layout_pane_content_pdetails)); main_ui_->actionViewPacketBytes->setChecked(recent.byte_view_show && prefs_has_layout_pane_content(layout_pane_content_pbytes)); + foreach ( QAction * action, main_ui_->actionViewAdditionalToolbars->actions() ) { + ext_toolbar_t * toolbar = VariantPointer<ext_toolbar_t>::asPtr(action->data()); + bool checked = false; + if ( toolbar && g_list_find_custom(recent.gui_additional_toolbars, toolbar->name, (GCompareFunc) strcmp) ) + checked = true; + + action->setChecked( checked ); + } + foreach (QAction* tda, td_actions.keys()) { if (recent.gui_time_format == td_actions[tda]) { tda->setChecked(true); @@ -2223,6 +2246,25 @@ void MainWindow::showHideMainWidgets(QAction *action) } else if (widget == byte_view_tab_) { recent.byte_view_show = show; main_ui_->actionViewPacketBytes->setChecked(show); + } else { + ext_toolbar_t * toolbar = VariantPointer<ext_toolbar_t>::asPtr(action->data()); + if (toolbar) { + GList *entry = g_list_find_custom(recent.gui_additional_toolbars, toolbar->name, (GCompareFunc) strcmp); + if (show && !entry) { + recent.gui_additional_toolbars = g_list_append(recent.gui_additional_toolbars, g_strdup(toolbar->name)); + } else if (!show && entry) { + recent.gui_additional_toolbars = g_list_remove(recent.gui_additional_toolbars, entry->data); + } + action->setChecked(show); + + QList<QToolBar *> toolbars = findChildren<QToolBar *>(); + foreach (QToolBar * bar, toolbars ) { + AdditionalToolBar * iftoolbar = dynamic_cast<AdditionalToolBar *>(bar); + if ( iftoolbar && iftoolbar->menuName().compare(toolbar->name) == 0 ) { + iftoolbar->setVisible(show); + } + } + } } if (widget) { @@ -3898,6 +3940,34 @@ void MainWindow::on_actionViewFullScreen_triggered(bool checked) } } +void MainWindow::activatePluginIFToolbar(bool) +{ + QAction * sendingAction = dynamic_cast<QAction *>(sender()); + if ( ! sendingAction || ! sendingAction->data().isValid() ) + return; + + ext_toolbar_t * toolbar = VariantPointer<ext_toolbar_t>::asPtr(sendingAction->data()); + + QList<QToolBar *> toolbars = findChildren<QToolBar *>(); + foreach (QToolBar * bar, toolbars ) + { + AdditionalToolBar * iftoolbar = dynamic_cast<AdditionalToolBar *>(bar); + if ( iftoolbar && iftoolbar->menuName().compare(toolbar->name) == 0 ) + { + if ( iftoolbar->isVisible() ) + { + iftoolbar->setVisible(false); + sendingAction->setChecked(true); + } + else + { + iftoolbar->setVisible(true); + sendingAction->setChecked(true); + } + } + } +} + #ifdef _MSC_VER #pragma warning(pop) #endif |