]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Make UI enhancements and refactor some code. We still have bugs on handling multiple...
authorJoão Mesquita <jmesquita@freeswitch.org>
Thu, 21 Jan 2010 05:05:56 +0000 (05:05 +0000)
committerJoão Mesquita <jmesquita@freeswitch.org>
Thu, 21 Jan 2010 05:05:56 +0000 (05:05 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16431 d0543943-73ff-0310-b7d9-9358b9ac24b2

fscomm/call.h
fscomm/mainwindow.cpp
fscomm/mainwindow.h
fscomm/mainwindow.ui

index 544882e7998b00cb145b44ab985a52d5e138874e..6ec45d2076d968816094f0d19e55b1505d93affe 100644 (file)
@@ -45,10 +45,9 @@ typedef enum {
         FSCOMM_CALL_DIRECTION_OUTBOUND = 1
 } fscomm_call_direction_t;
 
-class Call
-{
+class Call {
 public:
-    Call(void);
+    Call();
     Call(int call_id, QString cid_name, QString cid_number, fscomm_call_direction_t direction, QString uuid);
     QString getCidName(void) { return _cid_name; }
     QString getCidNumber(void) { return _cid_number; }
index d51327e919dda1700da7593471e75a68eaf69669..c246964963ffd6844e05079d7d71f07fbedbedf4 100644 (file)
@@ -97,7 +97,7 @@ MainWindow::MainWindow(QWidget *parent) :
     connect(ui->answerBtn, SIGNAL(clicked()), this, SLOT(paAnswer()));
     connect(ui->hangupBtn, SIGNAL(clicked()), this, SLOT(paHangup()));
     connect(ui->recoredCallBtn, SIGNAL(toggled(bool)), SLOT(recordCall(bool)));
-    connect(ui->listCalls, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(callListDoubleClick(QListWidgetItem*)));
+    connect(ui->tableCalls, SIGNAL(itemDoubleClicked(QTableWidgetItem*)), this, SLOT(callTableDoubleClick(QTableWidgetItem*)));
     connect(ui->action_Preferences, SIGNAL(triggered()), this, SLOT(prefTriggered()));
     connect(ui->action_Exit, SIGNAL(triggered()), this, SLOT(close()));
     connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(showAbout()));
@@ -199,7 +199,8 @@ void MainWindow::sendDTMF(QString dtmf)
     g_FSHost.getCurrentActiveCall().data()->sendDTMF(dtmf);
 }
 
-void MainWindow::callListDoubleClick(QListWidgetItem *item)
+/* TODO: Update the timers and the item text! */
+void MainWindow::callTableDoubleClick(QTableWidgetItem *item)
 {
     QSharedPointer<Call> lastCall = g_FSHost.getCurrentActiveCall();
     QSharedPointer<Call> call = g_FSHost.getCallByUUID(item->data(Qt::UserRole).toString());
@@ -301,9 +302,20 @@ void MainWindow::recordCall(bool pressed)
 void MainWindow::newOutgoingCall(QSharedPointer<Call> call)
 {
     ui->textEdit->setText(QString("Calling %1 (%2)").arg(call.data()->getCidName(), call.data()->getCidNumber()));
-    QListWidgetItem *item = new QListWidgetItem(tr("%1 (%2) - Calling").arg(call.data()->getCidName(), call.data()->getCidNumber()));
-    item->setData(Qt::UserRole, call.data()->getUUID());
-    ui->listCalls->addItem(item);
+
+    ui->tableCalls->setRowCount(ui->tableCalls->rowCount()+1);
+    QTableWidgetItem *item0 = new QTableWidgetItem(QString("%1 (%2)").arg(call.data()->getCidName(), call.data()->getCidNumber()));
+    item0->setData(Qt::UserRole, call.data()->getUUID());
+    ui->tableCalls->setItem(ui->tableCalls->rowCount()-1,0,item0);
+
+    QTableWidgetItem *item1 = new QTableWidgetItem(tr("Dialing..."));
+    item1->setData(Qt::UserRole, call.data()->getUUID());
+    ui->tableCalls->setItem(ui->tableCalls->rowCount()-1,1,item1);
+
+    ui->tableCalls->resizeColumnsToContents();
+    ui->tableCalls->resizeRowsToContents();
+    ui->tableCalls->horizontalHeader()->setStretchLastSection(true);
+
     ui->hangupBtn->setEnabled(true);
     call.data()->setActive(true);
 }
@@ -311,42 +323,48 @@ void MainWindow::newOutgoingCall(QSharedPointer<Call> call)
 void MainWindow::ringing(QSharedPointer<Call> call)
 {
 
-    for (int i=0; i<ui->listCalls->count(); i++)
+    for (int i=0; i<ui->tableCalls->rowCount(); i++)
     {
-        QListWidgetItem *item = ui->listCalls->item(i);
+        QTableWidgetItem *item = ui->tableCalls->item(i, 1);
         if (item->data(Qt::UserRole).toString() == call.data()->getUUID())
         {
-            item->setText(tr("%1 - Ringing").arg(call.data()->getCidNumber()));
+            item->setText(tr("Ringing"));
             ui->textEdit->setText(QString("Call from %1 (%2)").arg(call.data()->getCidName(), call.data()->getCidNumber()));
             return;
         }
     }
 
     ui->textEdit->setText(QString("Call from %1 (%2)").arg(call.data()->getCidName(), call.data()->getCidNumber()));
-    QListWidgetItem *item = new QListWidgetItem(tr("%1 (%2) - Ringing").arg(call.data()->getCidName(), call.data()->getCidNumber()));
-    item->setData(Qt::UserRole, call.data()->getUUID());
-    ui->listCalls->addItem(item);
+
+    ui->tableCalls->setRowCount(ui->tableCalls->rowCount()+1);
+    QTableWidgetItem *item0 = new QTableWidgetItem(QString("%1 (%2)").arg(call.data()->getCidName(), call.data()->getCidNumber()));
+    item0->setData(Qt::UserRole, call.data()->getUUID());
+    ui->tableCalls->setItem(ui->tableCalls->rowCount()-1,0,item0);
+
+    QTableWidgetItem *item1 = new QTableWidgetItem(tr("Ringing"));
+    item1->setData(Qt::UserRole, call.data()->getUUID());
+    ui->tableCalls->setItem(ui->tableCalls->rowCount()-1,1,item1);
+
+    ui->tableCalls->resizeColumnsToContents();
+    ui->tableCalls->resizeRowsToContents();
+    ui->tableCalls->horizontalHeader()->setStretchLastSection(true);
+
     ui->answerBtn->setEnabled(true);
     call.data()->setActive(true);
 }
 
 void MainWindow::answered(QSharedPointer<Call> call)
 {
-    for (int i=0; i<ui->listCalls->count(); i++)
+    for (int i=0; i<ui->tableCalls->rowCount(); i++)
     {
-        QListWidgetItem *item = ui->listCalls->item(i);
+        QTableWidgetItem *item = ui->tableCalls->item(i, 1);
         if (item->data(Qt::UserRole).toString() == call.data()->getUUID())
         {
-            if (call.data()->getDirection() == FSCOMM_CALL_DIRECTION_INBOUND)
-            {
-                item->setText(tr("%1 (%2) - Active").arg(call.data()->getCidName(), call.data()->getCidNumber()));
-                break;
-            }
-            else
-            {
-                item->setText(tr("%1 - Active").arg(call.data()->getCidNumber()));
-                break;
-            }
+            item->setText(tr("Answered"));
+            ui->tableCalls->resizeColumnsToContents();
+            ui->tableCalls->resizeRowsToContents();
+            ui->tableCalls->horizontalHeader()->setStretchLastSection(true);
+            break;
         }
     }
     ui->recoredCallBtn->setEnabled(true);
@@ -371,12 +389,15 @@ void MainWindow::answered(QSharedPointer<Call> call)
 
 void MainWindow::callFailed(QSharedPointer<Call> call)
 {
-    for (int i=0; i<ui->listCalls->count(); i++)
+    for (int i=0; i<ui->tableCalls->rowCount(); i++)
     {
-        QListWidgetItem *item = ui->listCalls->item(i);
+        QTableWidgetItem *item = ui->tableCalls->item(i, 1);
         if (item->data(Qt::UserRole).toString() == call.data()->getUUID())
         {
-            delete ui->listCalls->takeItem(i);
+            ui->tableCalls->removeRow(i);
+            ui->tableCalls->resizeColumnsToContents();
+            ui->tableCalls->resizeRowsToContents();
+            ui->tableCalls->horizontalHeader()->setStretchLastSection(true);
             break;
         }
     }
@@ -410,12 +431,15 @@ void MainWindow::callFailed(QSharedPointer<Call> call)
 
 void MainWindow::hungup(QSharedPointer<Call> call)
 {
-    for (int i=0; i<ui->listCalls->count(); i++)
+    for (int i=0; i<ui->tableCalls->rowCount(); i++)
     {
-        QListWidgetItem *item = ui->listCalls->item(i);
+        QTableWidgetItem *item = ui->tableCalls->item(i, 1);
         if (item->data(Qt::UserRole).toString() == call.data()->getUUID())
         {
-            delete ui->listCalls->takeItem(i);
+            ui->tableCalls->removeRow(i);
+            ui->tableCalls->resizeColumnsToContents();
+            ui->tableCalls->resizeRowsToContents();
+            ui->tableCalls->horizontalHeader()->setStretchLastSection(true);
             break;
         }
     }
index ea9c212454ab5452d450170fd33a405167ec9336..61e081cffcbbb254f92638e80182aa76d683860b 100644 (file)
@@ -32,7 +32,7 @@
 #define MAINWINDOW_H
 
 #include <QMainWindow>
-#include <QListWidgetItem>
+#include <QTableWidgetItem>
 #include <QSignalMapper>
 #include <QSystemTrayIcon>
 #include <switch.h>
@@ -62,7 +62,7 @@ private slots:
     void prefTriggered();
     void coreLoadingError(QString);
     void sendDTMF(QString);
-    void callListDoubleClick(QListWidgetItem *);
+    void callTableDoubleClick(QTableWidgetItem*);
     void makeCall();
     void fshostReady();
     void paAnswer();
index 819430b586f453e66d100b50f8ae9bedde097119..b8707f6d06e97cd213f613db5f401703d2897e3b 100644 (file)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>670</width>
+    <width>716</width>
     <height>541</height>
    </rect>
   </property>
         </property>
         <layout class="QHBoxLayout" name="horizontalLayout_3">
          <item>
-          <widget class="QListWidget" name="listCalls"/>
+          <widget class="QTableWidget" name="tableCalls">
+           <property name="editTriggers">
+            <set>QAbstractItemView::NoEditTriggers</set>
+           </property>
+           <property name="selectionMode">
+            <enum>QAbstractItemView::SingleSelection</enum>
+           </property>
+           <property name="selectionBehavior">
+            <enum>QAbstractItemView::SelectRows</enum>
+           </property>
+           <property name="showGrid">
+            <bool>false</bool>
+           </property>
+           <column>
+            <property name="text">
+             <string>To/From</string>
+            </property>
+           </column>
+           <column>
+            <property name="text">
+             <string>Status</string>
+            </property>
+           </column>
+           <column>
+            <property name="text">
+             <string>Time</string>
+            </property>
+           </column>
+          </widget>
          </item>
         </layout>
        </widget>
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>670</width>
+     <width>716</width>
      <height>24</height>
     </rect>
    </property>