diff options
-rw-r--r-- | ui/qt/models/voip_calls_info_model.cpp | 5 | ||||
-rw-r--r-- | ui/qt/models/voip_calls_info_model.h | 1 | ||||
-rw-r--r-- | ui/qt/voip_calls_dialog.cpp | 50 | ||||
-rw-r--r-- | ui/qt/voip_calls_dialog.h | 9 | ||||
-rw-r--r-- | ui/qt/voip_calls_dialog.ui | 27 |
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 &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> |