Revision
16431
Author
jmesquita
Date
2010-01-20 23:05:56 -0600 (Wed, 20 Jan 2010)

Log Message

Make UI enhancements and refactor some code. We still have bugs on handling multiple calls and switching between them.

Modified Paths

Diff

Modified: freeswitch/trunk/fscomm/call.h (16430 => 16431)


--- freeswitch/trunk/fscomm/call.h	2010-01-21 02:51:04 UTC (rev 16430)
+++ freeswitch/trunk/fscomm/call.h	2010-01-21 05:05:56 UTC (rev 16431)
@@ -45,10 +45,9 @@
         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; }

Modified: freeswitch/trunk/fscomm/mainwindow.cpp (16430 => 16431)


--- freeswitch/trunk/fscomm/mainwindow.cpp	2010-01-21 02:51:04 UTC (rev 16430)
+++ freeswitch/trunk/fscomm/mainwindow.cpp	2010-01-21 05:05:56 UTC (rev 16431)
@@ -97,7 +97,7 @@
     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 @@
     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::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::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::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::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;
         }
     }

Modified: freeswitch/trunk/fscomm/mainwindow.h (16430 => 16431)


--- freeswitch/trunk/fscomm/mainwindow.h	2010-01-21 02:51:04 UTC (rev 16430)
+++ freeswitch/trunk/fscomm/mainwindow.h	2010-01-21 05:05:56 UTC (rev 16431)
@@ -32,7 +32,7 @@
 #define MAINWINDOW_H
 
 #include <QMainWindow>
-#include <QListWidgetItem>
+#include <QTableWidgetItem>
 #include <QSignalMapper>
 #include <QSystemTrayIcon>
 #include <switch.h>
@@ -62,7 +62,7 @@
     void prefTriggered();
     void coreLoadingError(QString);
     void sendDTMF(QString);
-    void callListDoubleClick(QListWidgetItem *);
+    void callTableDoubleClick(QTableWidgetItem*);
     void makeCall();
     void fshostReady();
     void paAnswer();

Modified: freeswitch/trunk/fscomm/mainwindow.ui (16430 => 16431)


--- freeswitch/trunk/fscomm/mainwindow.ui	2010-01-21 02:51:04 UTC (rev 16430)
+++ freeswitch/trunk/fscomm/mainwindow.ui	2010-01-21 05:05:56 UTC (rev 16431)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>670</width>
+    <width>716</width>
     <height>541</height>
    </rect>
   </property>
@@ -256,7 +256,35 @@
         </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>
@@ -329,7 +357,7 @@
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>670</width>
+     <width>716</width>
      <height>24</height>
     </rect>
    </property>