Modified: freeswitch/trunk/fscomm/call.cpp (16428 => 16429)
--- freeswitch/trunk/fscomm/call.cpp 2010-01-21 02:36:28 UTC (rev 16428)
+++ freeswitch/trunk/fscomm/call.cpp 2010-01-21 02:48:53 UTC (rev 16429)
@@ -28,6 +28,7 @@
*/
#include "call.h"
+#include <QtGui>
#include <fshost.h>
Call::Call()
@@ -67,3 +68,13 @@
return status;
}
+
+void Call::sendDTMF(QString digit)
+{
+ QString result;
+ QString dtmf_string = QString("dtmf %1").arg(digit);
+ if (g_FSHost.sendCmd("pa", dtmf_string.toAscii(), &result) == SWITCH_STATUS_FALSE) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not send DTMF digit %s on call[%s]", digit.toAscii().data(), _uuid.toAscii().data());
+ QMessageBox::critical(0, QWidget::tr("DTMF Error"), QWidget::tr("There was an error sending DTMF, please report this bug."), QMessageBox::Ok);
+ }
+}
Modified: freeswitch/trunk/fscomm/mainwindow.cpp (16428 => 16429)
--- freeswitch/trunk/fscomm/mainwindow.cpp 2010-01-21 02:36:28 UTC (rev 16428)
+++ freeswitch/trunk/fscomm/mainwindow.cpp 2010-01-21 02:48:53 UTC (rev 16429)
@@ -40,6 +40,11 @@
{
ui->setupUi(this);
+ /* Setup the taskbar icon */
+ sysTray = new QSystemTrayIcon(QIcon(":/images/taskbar_icon"), this);
+ sysTray->setToolTip(tr("FSComm"));
+
+ /* Connect DTMF buttons */
dialpadMapper = new QSignalMapper(this);
connect(ui->dtmf0Btn, SIGNAL(clicked()), dialpadMapper, SLOT(map()));
connect(ui->dtmf1Btn, SIGNAL(clicked()), dialpadMapper, SLOT(map()));
@@ -73,8 +78,9 @@
dialpadMapper->setMapping(ui->dtmfDBtn, QString("D"));
dialpadMapper->setMapping(ui->dtmfAstBtn, QString("*"));
dialpadMapper->setMapping(ui->dtmfPoundBtn, QString("#"));
- connect(dialpadMapper, SIGNAL(mapped(QString)), this, SLOT(dialDTMF(QString)));
+ connect(dialpadMapper, SIGNAL(mapped(QString)), this, SLOT(sendDTMF(QString)));
+ /* Connect events related to FreeSWITCH */
connect(&g_FSHost, SIGNAL(ready()),this, SLOT(fshostReady()));
connect(&g_FSHost, SIGNAL(ringing(QSharedPointer<Call>)), this, SLOT(ringing(QSharedPointer<Call>)));
connect(&g_FSHost, SIGNAL(answered(QSharedPointer<Call>)), this, SLOT(answered(QSharedPointer<Call>)));
@@ -86,6 +92,7 @@
connect(&g_FSHost, SIGNAL(delAccount(QSharedPointer<Account>)), this, SLOT(accountDel(QSharedPointer<Account>)));
/*connect(&g_FSHost, SIGNAL(coreLoadingError(QString)), this, SLOT(coreLoadingError(QString)));*/
+ /* Connect call commands */
connect(ui->newCallBtn, SIGNAL(clicked()), this, SLOT(makeCall()));
connect(ui->answerBtn, SIGNAL(clicked()), this, SLOT(paAnswer()));
connect(ui->hangupBtn, SIGNAL(clicked()), this, SLOT(paHangup()));
@@ -95,6 +102,7 @@
connect(ui->action_Exit, SIGNAL(triggered()), this, SLOT(close()));
connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(showAbout()));
connect(ui->actionSetDefaultAccount, SIGNAL(triggered(bool)), this, SLOT(setDefaultAccount()));
+ connect(sysTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(sysTrayActivated(QSystemTrayIcon::ActivationReason)));
/* Set the context menus */
ui->tableAccounts->addAction(ui->actionSetDefaultAccount);
@@ -186,13 +194,9 @@
}
}
-void MainWindow::dialDTMF(QString dtmf)
+void MainWindow::sendDTMF(QString dtmf)
{
- QString result;
- QString dtmf_string = QString("dtmf %1").arg(dtmf);
- if (g_FSHost.sendCmd("pa", dtmf_string.toAscii(), &result) == SWITCH_STATUS_FALSE) {
- ui->textEdit->setText("Error sending that command");
- }
+ g_FSHost.getCurrentActiveCall().data()->sendDTMF(dtmf);
}
void MainWindow::callListDoubleClick(QListWidgetItem *item)
@@ -228,6 +232,8 @@
ui->newCallBtn->setEnabled(true);
ui->textEdit->setEnabled(true);
ui->textEdit->setText("Ready to dial and receive calls!");
+ sysTray->show();
+ sysTray->showMessage(tr("Status"), tr("FSComm has initialized!"), QSystemTrayIcon::Information, 5000);
}
void MainWindow::paAnswer()
@@ -464,3 +470,23 @@
"<p>Compiled FSComm version: %1"
"<p>%2").arg(SWITCH_VERSION_FULL, result));
}
+
+void MainWindow::sysTrayActivated(QSystemTrayIcon::ActivationReason reason)
+{
+ switch(reason)
+ {
+ case QSystemTrayIcon::Trigger:
+ {
+ if (this->isVisible())
+ this->hide();
+ else {
+ this->show();
+ this->activateWindow();
+ this->raise();
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
Modified: freeswitch/trunk/fscomm/mainwindow.h (16428 => 16429)
--- freeswitch/trunk/fscomm/mainwindow.h 2010-01-21 02:36:28 UTC (rev 16428)
+++ freeswitch/trunk/fscomm/mainwindow.h 2010-01-21 02:48:53 UTC (rev 16429)
@@ -34,6 +34,7 @@
#include <QMainWindow>
#include <QListWidgetItem>
#include <QSignalMapper>
+#include <QSystemTrayIcon>
#include <switch.h>
#include <fshost.h>
#include <call.h>
@@ -44,7 +45,6 @@
class MainWindow;
}
-
class MainWindow : public QMainWindow {
Q_OBJECT
public:
@@ -61,7 +61,7 @@
void showAbout();
void prefTriggered();
void coreLoadingError(QString);
- void dialDTMF(QString);
+ void sendDTMF(QString);
void callListDoubleClick(QListWidgetItem *);
void makeCall();
void fshostReady();
@@ -78,11 +78,13 @@
void accountAdd(QSharedPointer<Account>);
void accountDel(QSharedPointer<Account>);
void accountStateChanged(QSharedPointer<Account>);
+ void sysTrayActivated(QSystemTrayIcon::ActivationReason reason);
private:
Ui::MainWindow *ui;
QSignalMapper *dialpadMapper;
PrefDialog *preferences;
+ QSystemTrayIcon *sysTray;
};
#endif // MAINWINDOW_H