aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2019-08-02 20:39:13 +0200
committerRoland Knall <rknall@gmail.com>2019-08-02 19:14:55 +0000
commitc5b158bec173b0280943608591a5ffa81a180024 (patch)
tree85a326651ae3a9daa9b6afaa1f8ba0f77b823fda /ui/qt
parent6376a696756d75c3f66fb5ef81630bd42c7a1536 (diff)
Qt: Rework VOIP Dialog context menu
Rework the context menu to have same functions behave the same way and just create the menu while it is needed. Also, add switch for setting the time of day to the context menu Change-Id: Id813ff39431f6fad15887856f246d03f209e438d Reviewed-on: https://code.wireshark.org/review/34165 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt')
-rw-r--r--ui/qt/models/voip_calls_info_model.cpp5
-rw-r--r--ui/qt/models/voip_calls_info_model.h1
-rw-r--r--ui/qt/voip_calls_dialog.cpp50
-rw-r--r--ui/qt/voip_calls_dialog.h9
-rw-r--r--ui/qt/voip_calls_dialog.ui27
5 files changed, 42 insertions, 50 deletions
diff --git a/ui/qt/models/voip_calls_info_model.cpp b/ui/qt/models/voip_calls_info_model.cpp
index 3f0536a396..4b7642e14d 100644
--- a/ui/qt/models/voip_calls_info_model.cpp
+++ b/ui/qt/models/voip_calls_info_model.cpp
@@ -176,6 +176,11 @@ void VoipCallsInfoModel::setTimeOfDay(bool timeOfDay)
}
}
+bool VoipCallsInfoModel::timeOfDay() const
+{
+ return mTimeOfDay_;
+}
+
void VoipCallsInfoModel::updateCalls(GQueue *callsinfos)
{
if (callsinfos) {
diff --git a/ui/qt/models/voip_calls_info_model.h b/ui/qt/models/voip_calls_info_model.h
index c9ecf4e92d..3f8931d380 100644
--- a/ui/qt/models/voip_calls_info_model.h
+++ b/ui/qt/models/voip_calls_info_model.h
@@ -31,6 +31,7 @@ public:
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
void setTimeOfDay(bool timeOfDay);
+ bool timeOfDay() const;
void updateCalls(GQueue *callsinfos);
static voip_calls_info_t *indexToCallInfo(const QModelIndex &index);
diff --git a/ui/qt/voip_calls_dialog.cpp b/ui/qt/voip_calls_dialog.cpp
index c72200949b..4da971d24f 100644
--- a/ui/qt/voip_calls_dialog.cpp
+++ b/ui/qt/voip_calls_dialog.cpp
@@ -63,24 +63,19 @@ VoipCallsDialog::VoipCallsDialog(QWidget &parent, CaptureFile &cf, bool all_flow
ui->callTreeView->sortByColumn(VoipCallsInfoModel::StartTime, Qt::AscendingOrder);
setWindowSubtitle(all_flows ? tr("SIP Flows") : tr("VoIP Calls"));
- ctx_menu_.addAction(ui->actionSelect_All);
- ctx_menu_.addSeparator();
- ctx_menu_.addAction(ui->actionCopyAsCsv);
- ctx_menu_.addAction(ui->actionCopyAsYaml);
-
prepare_button_ = ui->buttonBox->addButton(tr("Prepare Filter"), QDialogButtonBox::ApplyRole);
sequence_button_ = ui->buttonBox->addButton(tr("Flow Sequence"), QDialogButtonBox::ApplyRole);
player_button_ = RtpPlayerDialog::addPlayerButton(ui->buttonBox);
+ connect ( ui->todCheckBox, &QAbstractButton::toggled, this, &VoipCallsDialog::switchTimeOfDay);
+
copy_button_ = ui->buttonBox->addButton(tr("Copy"), QDialogButtonBox::ApplyRole);
QMenu *copy_menu = new QMenu(copy_button_);
QAction *ca;
ca = copy_menu->addAction(tr("as CSV"));
- ca->setToolTip(ui->actionCopyAsCsv->toolTip());
- connect(ca, SIGNAL(triggered()), this, SLOT(on_actionCopyAsCsv_triggered()));
+ connect(ca, SIGNAL(triggered()), this, SLOT(copyAsCSV()));
ca = copy_menu->addAction(tr("as YAML"));
- ca->setToolTip(ui->actionCopyAsYaml->toolTip());
- connect(ca, SIGNAL(triggered()), this, SLOT(on_actionCopyAsYaml_triggered()));
+ connect(ca, SIGNAL(triggered()), this, SLOT(copyAsYAML()));
copy_button_->setMenu(copy_menu);
memset (&tapinfo_, 0, sizeof(tapinfo_));
@@ -133,7 +128,26 @@ void VoipCallsDialog::captureFileClosing()
void VoipCallsDialog::contextMenuEvent(QContextMenuEvent *event)
{
- ctx_menu_.exec(event->globalPos());
+ bool selected = ui->callTreeView->selectionModel()->hasSelection();
+
+ if ( ! selected )
+ return;
+
+ QMenu popupMenu;
+
+ QAction * action = popupMenu.addAction(tr("Select &All"), this, SLOT(selectAll()));
+ action->setToolTip(tr("Select all calls"));
+ popupMenu.addSeparator();
+ action = popupMenu.addAction(tr("Display time as time of day"), this, SLOT(switchTimeOfDay()));
+ action->setCheckable(true);
+ action->setChecked(call_infos_model_->timeOfDay());
+ popupMenu.addSeparator();
+ action = popupMenu.addAction(tr("Copy as CSV"), this, SLOT(copyAsCSV()));
+ action->setToolTip(tr("Copy stream list as CSV."));
+ action = popupMenu.addAction(tr("Copy as YAML"), this, SLOT(copyAsYAML()));
+ action->setToolTip(tr("Copy stream list as YAML."));
+
+ popupMenu.exec(event->globalPos());
}
void VoipCallsDialog::changeEvent(QEvent *event)
@@ -220,9 +234,6 @@ void VoipCallsDialog::updateWidgets()
have_ga_items = true;
}
- foreach (QMenu *submenu, ctx_menu_.findChildren<QMenu*>()) {
- submenu->setEnabled(selected);
- }
prepare_button_->setEnabled(selected && have_ga_items);
sequence_button_->setEnabled(selected && have_ga_items);
#if defined(QT_MULTIMEDIA_LIB)
@@ -438,12 +449,12 @@ void VoipCallsDialog::on_callTreeView_activated(const QModelIndex &index)
emit goToPacket(call_info->start_fd->num);
}
-void VoipCallsDialog::on_actionSelect_All_triggered()
+void VoipCallsDialog::selectAll()
{
ui->callTreeView->selectAll();
}
-void VoipCallsDialog::on_actionCopyAsCsv_triggered()
+void VoipCallsDialog::copyAsCSV()
{
QString csv;
QTextStream stream(&csv, QIODevice::Text);
@@ -459,7 +470,7 @@ void VoipCallsDialog::on_actionCopyAsCsv_triggered()
wsApp->clipboard()->setText(stream.readAll());
}
-void VoipCallsDialog::on_actionCopyAsYaml_triggered()
+void VoipCallsDialog::copyAsYAML()
{
QString yaml;
QTextStream stream(&yaml, QIODevice::Text);
@@ -489,9 +500,12 @@ void VoipCallsDialog::on_buttonBox_helpRequested()
wsApp->helpTopicAction(HELP_TELEPHONY_VOIP_CALLS_DIALOG);
}
-void VoipCallsDialog::on_todCheckBox_stateChanged(int state)
+void VoipCallsDialog::switchTimeOfDay()
{
- call_infos_model_->setTimeOfDay(state == Qt::Checked);
+ bool checked = ! call_infos_model_->timeOfDay();
+
+ ui->todCheckBox->setChecked(checked);
+ call_infos_model_->setTimeOfDay(checked);
ui->callTreeView->resizeColumnToContents(VoipCallsInfoModel::StartTime);
ui->callTreeView->resizeColumnToContents(VoipCallsInfoModel::StopTime);
}
diff --git a/ui/qt/voip_calls_dialog.h b/ui/qt/voip_calls_dialog.h
index ef29cf829a..4b9d163038 100644
--- a/ui/qt/voip_calls_dialog.h
+++ b/ui/qt/voip_calls_dialog.h
@@ -65,7 +65,6 @@ private:
QPushButton *sequence_button_;
QPushButton *player_button_;
QPushButton *copy_button_;
- QMenu ctx_menu_;
// Tap callbacks
// static void tapReset(void *tapinfo_ptr);
@@ -81,13 +80,13 @@ private:
private slots:
void captureFileClosing();
+ void selectAll();
+ void copyAsCSV();
+ void copyAsYAML();
+ void switchTimeOfDay();
void on_callTreeView_activated(const QModelIndex &index);
- void on_actionSelect_All_triggered();
- void on_actionCopyAsCsv_triggered();
- void on_actionCopyAsYaml_triggered();
void on_buttonBox_clicked(QAbstractButton *button);
void on_buttonBox_helpRequested();
- void on_todCheckBox_stateChanged(int state);
void updateWidgets();
};
diff --git a/ui/qt/voip_calls_dialog.ui b/ui/qt/voip_calls_dialog.ui
index 1b0b4f09df..376d05251f 100644
--- a/ui/qt/voip_calls_dialog.ui
+++ b/ui/qt/voip_calls_dialog.ui
@@ -75,33 +75,6 @@
</widget>
</item>
</layout>
- <action name="actionSelect_All">
- <property name="text">
- <string>Select &amp;All</string>
- </property>
- <property name="toolTip">
- <string>Select all calls</string>
- </property>
- <property name="shortcut">
- <string notr="true">Ctrl+A</string>
- </property>
- </action>
- <action name="actionCopyAsCsv">
- <property name="text">
- <string>Copy as CSV</string>
- </property>
- <property name="toolTip">
- <string>Copy stream list as CSV.</string>
- </property>
- </action>
- <action name="actionCopyAsYaml">
- <property name="text">
- <string>Copy as YAML</string>
- </property>
- <property name="toolTip">
- <string>Copy stream list as YAML.</string>
- </property>
- </action>
</widget>
<resources/>
<connections>