mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 09:36:46 +00:00
Add new debug tools to FSComm to help on development. Check tools->debug.
This commit is contained in:
76
fscomm/debugtools/statedebugdialog.cpp
Normal file
76
fscomm/debugtools/statedebugdialog.cpp
Normal file
@@ -0,0 +1,76 @@
|
||||
#include "statedebugdialog.h"
|
||||
#include "ui_statedebugdialog.h"
|
||||
|
||||
StateDebugDialog::StateDebugDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::StateDebugDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
connect(&g_FSHost, SIGNAL(newEvent(QSharedPointer<switch_event_t>)), this, SLOT(newEvent(QSharedPointer<switch_event_t>)));
|
||||
connect(ui->listUUID, SIGNAL(itemSelectionChanged()), this, SLOT(currentUuidChanged()));
|
||||
connect(ui->listEvents, SIGNAL(itemSelectionChanged()), this, SLOT(currentEventsChanged()));
|
||||
}
|
||||
|
||||
StateDebugDialog::~StateDebugDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void StateDebugDialog::changeEvent(QEvent *e)
|
||||
{
|
||||
QDialog::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void StateDebugDialog::newEvent(QSharedPointer<switch_event_t>event)
|
||||
{
|
||||
/* We don't want to keep track of events that are not calls at this moment */
|
||||
if (QString(switch_event_get_header_nil(event.data(), "Unique-ID")).isEmpty())
|
||||
return;
|
||||
|
||||
QString uuid(switch_event_get_header_nil(event.data(), "Unique-ID"));
|
||||
|
||||
if (!_events.contains(uuid))
|
||||
{
|
||||
QList<QSharedPointer<switch_event_t> > tmpListEvents;
|
||||
tmpListEvents.append(event);
|
||||
_events.insert(uuid, tmpListEvents);
|
||||
ui->listUUID->addItem(new QListWidgetItem(uuid));
|
||||
}
|
||||
else
|
||||
{
|
||||
QList<QSharedPointer<switch_event_t> > tmpListEvents = _events.value(uuid);
|
||||
tmpListEvents.append(event);
|
||||
_events.insert(uuid, tmpListEvents);
|
||||
}
|
||||
}
|
||||
|
||||
void StateDebugDialog::currentUuidChanged()
|
||||
{;
|
||||
ui->listEvents->clear();
|
||||
ui->listDetails->clear();
|
||||
QString uuid = ui->listUUID->currentItem()->text();
|
||||
foreach(QSharedPointer<switch_event_t> e, _events.value(uuid))
|
||||
{
|
||||
ui->listEvents->addItem(new QListWidgetItem(switch_event_name(e.data()->event_id)));
|
||||
}
|
||||
}
|
||||
|
||||
void StateDebugDialog::currentEventsChanged()
|
||||
{
|
||||
ui->listDetails->clear();
|
||||
int r = ui->listEvents->currentRow();
|
||||
QString uuid = ui->listUUID->currentItem()->text();
|
||||
QList<QSharedPointer<switch_event_t> > tmpListEvents = _events.value(uuid);
|
||||
QSharedPointer<switch_event_t> e = tmpListEvents.at(r);
|
||||
for(switch_event_header_t* h = e.data()->headers; h != e.data()->last_header; h = h->next)
|
||||
{
|
||||
ui->listDetails->addItem(new QListWidgetItem(QString("%1 = %2").arg(h->name, h->value)));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user