diff --git a/fscomm/call.h b/fscomm/call.h index 544882e799..6ec45d2076 100644 --- a/fscomm/call.h +++ b/fscomm/call.h @@ -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; } diff --git a/fscomm/mainwindow.cpp b/fscomm/mainwindow.cpp index d51327e919..c246964963 100644 --- a/fscomm/mainwindow.cpp +++ b/fscomm/mainwindow.cpp @@ -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 lastCall = g_FSHost.getCurrentActiveCall(); QSharedPointer call = g_FSHost.getCallByUUID(item->data(Qt::UserRole).toString()); @@ -301,9 +302,20 @@ void MainWindow::recordCall(bool pressed) void MainWindow::newOutgoingCall(QSharedPointer 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) void MainWindow::ringing(QSharedPointer call) { - for (int i=0; ilistCalls->count(); i++) + for (int i=0; itableCalls->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) { - for (int i=0; ilistCalls->count(); i++) + for (int i=0; itableCalls->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) void MainWindow::callFailed(QSharedPointer call) { - for (int i=0; ilistCalls->count(); i++) + for (int i=0; itableCalls->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) void MainWindow::hungup(QSharedPointer call) { - for (int i=0; ilistCalls->count(); i++) + for (int i=0; itableCalls->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; } } diff --git a/fscomm/mainwindow.h b/fscomm/mainwindow.h index ea9c212454..61e081cffc 100644 --- a/fscomm/mainwindow.h +++ b/fscomm/mainwindow.h @@ -32,7 +32,7 @@ #define MAINWINDOW_H #include -#include +#include #include #include #include @@ -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(); diff --git a/fscomm/mainwindow.ui b/fscomm/mainwindow.ui index 819430b586..b8707f6d06 100644 --- a/fscomm/mainwindow.ui +++ b/fscomm/mainwindow.ui @@ -6,7 +6,7 @@ 0 0 - 670 + 716 541 @@ -256,7 +256,35 @@ - + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + false + + + + To/From + + + + + Status + + + + + Time + + + @@ -329,7 +357,7 @@ 0 0 - 670 + 716 24