]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Add a taskbar icon. We need a designer, please...
authorJoão Mesquita <jmesquita@freeswitch.org>
Thu, 21 Jan 2010 02:48:53 +0000 (02:48 +0000)
committerJoão Mesquita <jmesquita@freeswitch.org>
Thu, 21 Jan 2010 02:48:53 +0000 (02:48 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16429 d0543943-73ff-0310-b7d9-9358b9ac24b2

fscomm/call.cpp
fscomm/call.h
fscomm/mainwindow.cpp
fscomm/mainwindow.h
fscomm/resources.qrc
fscomm/resources/taskbar_icon.png [new file with mode: 0644]

index 8bcd47deeacd91f35e7b9ea263bee1d6fab58f33..f177bc32784da625cac8234afd77adafbd810f1a 100644 (file)
@@ -28,6 +28,7 @@
  */
 
 #include "call.h"
+#include <QtGui>
 #include <fshost.h>
 
 Call::Call()
@@ -67,3 +68,13 @@ switch_status_t Call::toggleRecord(bool startRecord)
 
     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);
+    }
+}
index 4e6aeb682d23af57cb85fcf4ee5d2aa68b18c0ac..544882e7998b00cb145b44ab985a52d5e138874e 100644 (file)
@@ -63,6 +63,7 @@ public:
     void setActive(bool isActive) { _isActive = isActive; }
     bool isActive() { return _isActive == true; }
     switch_status_t toggleRecord(bool);
+    void sendDTMF(QString digit);
 
 private:
     int _call_id;
index c58fbd581978a3a7c6f5b44a54dd63d09a23b042..d51327e919dda1700da7593471e75a68eaf69669 100644 (file)
@@ -40,6 +40,11 @@ MainWindow::MainWindow(QWidget *parent) :
 {
     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 @@ MainWindow::MainWindow(QWidget *parent) :
     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 @@ MainWindow::MainWindow(QWidget *parent) :
     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 @@ MainWindow::MainWindow(QWidget *parent) :
     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::accountStateChanged(QSharedPointer<Account> acc)
     }
 }
 
-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 @@ void MainWindow::fshostReady()
     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 @@ void MainWindow::showAbout()
                           "<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;
+    }
+}
index a895c0876fdb1fa9a812ce74e5fb54210c43b237..ea9c212454ab5452d450170fd33a405167ec9336 100644 (file)
@@ -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 @@ namespace Ui {
     class MainWindow;
 }
 
-
 class MainWindow : public QMainWindow {
     Q_OBJECT
 public:
@@ -61,7 +61,7 @@ private slots:
     void showAbout();
     void prefTriggered();
     void coreLoadingError(QString);
-    void dialDTMF(QString);
+    void sendDTMF(QString);
     void callListDoubleClick(QListWidgetItem *);
     void makeCall();
     void fshostReady();
@@ -78,11 +78,13 @@ private slots:
     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
index 483fa2528daf5479007468e8bbb72c8d14e979a0..5ba703c47fd63433a00a50dc94e38fd528ec2cf1 100644 (file)
@@ -5,6 +5,7 @@
         <file alias="pref_audio.gif">resources/pref_audio.gif</file>
         <file alias="pref_general.jpg">resources/pref_general.jpg</file>
         <file alias="pref_accounts.jpg">resources/pref_accounts.jpg</file>
+        <file alias="taskbar_icon.png">resources/taskbar_icon.png</file>
     </qresource>
     <qresource prefix="/confs">
         <file alias="freeswitch.xml">conf/freeswitch.xml</file>
diff --git a/fscomm/resources/taskbar_icon.png b/fscomm/resources/taskbar_icon.png
new file mode 100644 (file)
index 0000000..1705e6b
Binary files /dev/null and b/fscomm/resources/taskbar_icon.png differ