diff --git a/sflphone-client-kde/src/Call.cpp b/sflphone-client-kde/src/Call.cpp index 1b8a5c566096fa2b25dc18d27e7209b79fd7953c..a88ffa8bb16f175374d8e0221a56f5627aa42952 100644 --- a/sflphone-client-kde/src/Call.cpp +++ b/sflphone-client-kde/src/Call.cpp @@ -98,7 +98,7 @@ const function Call::stateChangedFunctionMap[11][6] = const char * Call::historyIcons[3] = {ICON_HISTORY_INCOMING, ICON_HISTORY_OUTGOING, ICON_HISTORY_MISSED}; -void Call::initCallItemWidget() +/*void Call::initCallItemWidget() { itemWidget = new QWidget(); labelIcon = new QLabel(); @@ -130,12 +130,12 @@ void Call::initCallItemWidget() mainLayout->addItem(horizontalSpacer); itemWidget->setLayout(mainLayout); -} +}*/ -void Call::setItemIcon(const QString pixmap) + /*void Call::setItemIcon(const QString pixmap) { labelIcon->setPixmap(QPixmap(pixmap)); -} + }*/ Call::Call(call_state startState, QString callId, QString peerName, QString peerNumber, QString account) @@ -146,10 +146,10 @@ Call::Call(call_state startState, QString callId, QString peerName, QString peer changeCurrentState(startState); this->account = account; this->recording = false; - this->historyItemWidget = NULL; + // this->historyItemWidget = NULL; this->startTime = NULL; this->stopTime = NULL; - this->initCallItemWidget(); + // this->initCallItemWidget(); } Call * Call::buildExistingCall(QString callId) @@ -172,8 +172,6 @@ Call::~Call() { delete startTime; delete stopTime; - delete itemWidget; - //delete historyItemWidget; } Call * Call::buildDialingCall(QString callId, const QString & peerName, QString account) @@ -376,10 +374,10 @@ Contact * Call::findContactForNumberInKAddressBook(QString number) return NULL; } -QWidget * Call::getItemWidget() +/*QWidget * Call::getItemWidget() { return itemWidget; -} + }*/ QString Call::getStopTimeStamp() const { @@ -395,7 +393,28 @@ QString Call::getStartTimeStamp() const return QString::number(startTime->toTime_t()); } -QWidget * Call::getHistoryItemWidget() +QString Call::getTransferNumber() const +{ + return transferNumber; +} + +void Call::setTransferNumber(QString number) +{ + transferNumber = number; +} + +QString Call::getCallNumber() const +{ + return callNumber; +} + +void Call::setCallNumber(QString number) +{ + callNumber = number; +} + + +/*QWidget * Call::getHistoryItemWidget() { historyItemWidget = new QWidget(); labelHistoryIcon = new QLabel(); @@ -427,7 +446,7 @@ QWidget * Call::getHistoryItemWidget() mainLayout->addItem(horizontalSpacer); historyItemWidget->setLayout(mainLayout); return historyItemWidget; -} + }*/ call_state Call::getState() const { @@ -540,11 +559,10 @@ void Call::refuse() void Call::acceptTransf() { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); - QString number = labelTransferNumber->text(); - qDebug() << "Accepting call and transfering it to number : " << number << ". callId : " << callId; + qDebug() << "Accepting call and transfering it to number : " << transferNumber << ". callId : " << callId; callManager.accept(callId); - callManager.transfert(callId, number); - //this->historyState = TRANSFERED; + callManager.transfert(callId, transferNumber); +// historyState = TRANSFERED; } void Call::acceptHold() @@ -581,7 +599,6 @@ void Call::hold() void Call::call() { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); - QString number = labelCallNumber->text(); qDebug() << "account = " << account; if(account.isEmpty()) { @@ -590,10 +607,10 @@ void Call::call() } if(!account.isEmpty()) { - qDebug() << "Calling " << number << " with account " << account << ". callId : " << callId; - callManager.placeCall(account, callId, number); + qDebug() << "Calling " << callNumber << " with account " << account << ". callId : " << callId; + callManager.placeCall(account, callId, callNumber); this->account = account; - this->peerPhoneNumber = number; + this->peerPhoneNumber = callNumber; // Contact * contact = findContactForNumberInKAddressBook(peerPhoneNumber); // if(contact) this->peerName = contact->getNickName(); this->startTime = new QDateTime(QDateTime::currentDateTime()); @@ -601,7 +618,7 @@ void Call::call() } else { - qDebug() << "Trying to call " << number << " with no account registered . callId : " << callId; + qDebug() << "Trying to call " << transferNumber << " with no account registered . callId : " << callId; this->historyState = NONE; throw "No account registered!"; } @@ -610,9 +627,8 @@ void Call::call() void Call::transfer() { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); - QString number = labelTransferNumber->text(); - qDebug() << "Transfering call to number : " << number << ". callId : " << callId; - callManager.transfert(callId, number); + qDebug() << "Transfering call to number : " << transferNumber << ". callId : " << callId; + callManager.transfert(callId, transferNumber); this->stopTime = new QDateTime(QDateTime::currentDateTime()); } @@ -670,50 +686,53 @@ void Call::warning() qDebug() << "Warning : call " << callId << " had an unexpected transition of state."; } -void Call::appendItemText(QString text) +void Call::appendText(QString str) { - QLabel * editNumber; - switch(currentState) + QString * editNumber; + + switch (currentState) { - case CALL_STATE_TRANSFER: - case CALL_STATE_TRANSF_HOLD: - editNumber = labelTransferNumber; - break; - case CALL_STATE_DIALING: - editNumber = labelCallNumber; - break; - case CALL_STATE_CURRENT: - text = QString(); - editNumber = labelCallNumber; - break; - default: - qDebug() << "Type key on call not editable. Doing nothing."; - return; + case CALL_STATE_TRANSFER: + case CALL_STATE_TRANSF_HOLD: + editNumber = &transferNumber; + break; + case CALL_STATE_DIALING: + editNumber = &callNumber; + break; + default: + qDebug() << "Backspace on call not editable. Doing nothing."; + return; } - editNumber->setText(editNumber->text() + text); + + editNumber->append(str); + + emit changed(); } void Call::backspaceItemText() { - QLabel * editNumber; + QString * editNumber; + switch (currentState) { case CALL_STATE_TRANSFER: case CALL_STATE_TRANSF_HOLD: - editNumber = labelTransferNumber; + editNumber = &transferNumber; break; case CALL_STATE_DIALING: - editNumber = labelCallNumber; + editNumber = &callNumber; break; default: qDebug() << "Backspace on call not editable. Doing nothing."; return; } - QString text = editNumber->text(); + QString text = *editNumber; int textSize = text.size(); if(textSize > 0) { - editNumber->setText(text.remove(textSize-1, 1)); + *editNumber = text.remove(textSize-1, 1); + + emit changed(); } else { @@ -724,5 +743,7 @@ void Call::backspaceItemText() void Call::changeCurrentState(call_state newState) { currentState = newState; + + emit changed(); } diff --git a/sflphone-client-kde/src/Call.h b/sflphone-client-kde/src/Call.h index b1dcad67bfce22e26222fad9be1b6a9220170670..c6ad60e6e725fbb35387d3238dfe7de006985bf5 100644 --- a/sflphone-client-kde/src/Call.h +++ b/sflphone-client-kde/src/Call.h @@ -137,8 +137,9 @@ typedef void (Call::*function)(); * keeping the information gathered by the call and needed by the history * call (history state, start time...). **/ -class Call +class Call : public QObject { + Q_OBJECT private: //Call attributes @@ -149,21 +150,18 @@ private: QString peerName; history_state historyState; QDateTime * startTime; - QDateTime * stopTime; - - QWidget * itemWidget; - QLabel * labelIcon; - QLabel * labelPeerName; - QLabel * labelCallNumber; - QLabel * labelTransferPrefix; - QLabel * labelTransferNumber; + QDateTime * stopTime; + /* QWidget * historyItemWidget; QLabel * labelHistoryIcon; QLabel * labelHistoryPeerName; QLabel * labelHistoryCallNumber; QLabel * labelHistoryTime; - + */ + + QString transferNumber; + QString callNumber; //Automate attributes /** @@ -233,7 +231,7 @@ public: //Constructors & Destructors ~Call(); - void initCallItemWidget(); +// void initCallItemWidget(); static Call * buildDialingCall(QString callId, const QString & peerName, QString account = ""); static Call * buildIncomingCall(const QString & callId); static Call * buildRingingCall(const QString & callId); @@ -246,8 +244,8 @@ public: static history_state getHistoryStateFromDaemonCallState(QString daemonCallState, QString daemonCallType); //Getters - QWidget * getItemWidget(); - QWidget * getHistoryItemWidget(); +// QWidget * getItemWidget(); +// QWidget * getHistoryItemWidget(); call_state getState() const; QString getCallId() const; QString getPeerPhoneNumber() const; @@ -259,21 +257,30 @@ public: bool isHistory() const; QString getStopTimeStamp() const; QString getStartTimeStamp() const; - + + QString getTransferNumber() const; + void setTransferNumber(QString number); + + QString getCallNumber() const; + void setCallNumber(QString number); + //Automate calls call_state stateChanged(const QString & newState); call_state actionPerformed(call_action action); //Setters - void appendItemText(QString text); +// void appendItemText(QString text); + void appendText(QString str); void backspaceItemText(); - void setItemIcon(const QString pixmap); +// void setItemIcon(const QString pixmap); // void setPeerName(const QString peerName); void changeCurrentState(call_state newState); //Utils Contact * findContactForNumberInKAddressBook(QString number); +signals: + void changed(); }; #endif diff --git a/sflphone-client-kde/src/CallTreeItem.cpp b/sflphone-client-kde/src/CallTreeItem.cpp index 9f2186bedc56a3e52eb4edde29ed3191eeb2993b..0fe333b13ee65b6fe06795b1308388944e292f31 100644 --- a/sflphone-client-kde/src/CallTreeItem.cpp +++ b/sflphone-client-kde/src/CallTreeItem.cpp @@ -206,10 +206,14 @@ void CallTreeItem::setCall(Call *call) mainLayout->addItem(horizontalSpacer); itemWidget->setLayout(mainLayout); - updateItem(); + + connect(itemCall, SIGNAL(changed()), + this, SLOT(updated())); + + updated(); } -void CallTreeItem::updateItem() +void CallTreeItem::updated() { call_state state = itemCall->getState(); bool recording = itemCall->getRecording(); @@ -233,9 +237,14 @@ void CallTreeItem::updateItem() { labelTransferNumber->setText(""); } + labelTransferNumber->setText(itemCall->getTransferNumber()); + labelCallNumber->setText(itemCall->getCallNumber()); } else { qDebug() << "Updating item of call of state OVER. Doing nothing."; } + + } + diff --git a/sflphone-client-kde/src/CallTreeItem.h b/sflphone-client-kde/src/CallTreeItem.h index b11a6881476fb7103c886e3a4f973cc44d1fc99e..f20aea6fe688227e7b8b16335cd627f676990108 100644 --- a/sflphone-client-kde/src/CallTreeItem.h +++ b/sflphone-client-kde/src/CallTreeItem.h @@ -38,8 +38,9 @@ #include "Call.h" -class CallTreeItem : QObject +class CallTreeItem : public QObject { + Q_OBJECT public: CallTreeItem(const QVector<QVariant> &data, CallTreeItem *parent); ~CallTreeItem(); @@ -58,7 +59,6 @@ class CallTreeItem : QObject int childNumber() const; bool setData(int column, const QVariant &value); void setCall(Call *call); - void updateItem(); static const char * callStateIcons[11]; private: @@ -80,6 +80,9 @@ class CallTreeItem : QObject QLabel * labelHistoryPeerName; QLabel * labelHistoryCallNumber; QLabel * labelHistoryTime; + +private slots: + void updated(); }; #endif // CALLTREE_ITEM_H diff --git a/sflphone-client-kde/src/CallTreeView.cpp b/sflphone-client-kde/src/CallTreeView.cpp index 42fc4bc888124361d8a2601c8569cd172f6e1f0b..ebfd3a2e21196fd9bfe3c48bee80c331fd2cdf7a 100644 --- a/sflphone-client-kde/src/CallTreeView.cpp +++ b/sflphone-client-kde/src/CallTreeView.cpp @@ -34,6 +34,7 @@ CallTreeView::CallTreeView(QWidget * parent) setSelectionMode(QAbstractItemView::SingleSelection); setDragEnabled(true); setAcceptDrops(true); + setUniformRowHeights(true); setDropIndicatorShown(true); } @@ -94,8 +95,8 @@ CallTreeItem* CallTreeView::insert(CallTreeItem *parent, Call *call) void CallTreeView::remove(CallTreeItem *item) { - return; - // to implement + QModelIndex index = selectionModel()->currentIndex(); + treeModel->removeRow(index.row(), index.parent()); } CallTreeItem* CallTreeView::getItem(Call *call) diff --git a/sflphone-client-kde/src/SFLPhoneView.cpp b/sflphone-client-kde/src/SFLPhoneView.cpp index 2ddc94bb717feab6e2c5e448bf7b0766b6c3c989..d6f935325b18b742dd2fec81415a33c5dca65dbf 100644 --- a/sflphone-client-kde/src/SFLPhoneView.cpp +++ b/sflphone-client-kde/src/SFLPhoneView.cpp @@ -279,7 +279,7 @@ void SFLPhoneView::typeString(QString str) if(!currentCall && candidate) { - candidate->appendItemText(str); + candidate->appendText(str); } } if(stackedWidget_screen->currentWidget() == page_callHistory) @@ -418,7 +418,7 @@ void SFLPhoneView::enter() qDebug() << "pastCall null"; } Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId()); - call->appendItemText(pastCall->getPeerPhoneNumber()); + call->appendText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -437,7 +437,7 @@ void SFLPhoneView::enter() changeScreen(SCREEN_MAIN); ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item)); Call * call = callList->addDialingCall(w->getContactName()); - call->appendItemText(w->getContactNumber()); + call->appendText(w->getContactNumber()); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -1052,7 +1052,7 @@ void SFLPhoneView::on_listWidget_callHistory_itemDoubleClicked(CallTreeItem * it changeScreen(SCREEN_MAIN); Call * pastCall = item->call(); Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId()); - call->appendItemText(pastCall->getPeerPhoneNumber()); + call->appendText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -1178,7 +1178,7 @@ void SFLPhoneView::editBeforeCall() { changeScreen(SCREEN_MAIN); Call * call = callList->addDialingCall(name); - call->appendItemText(newNumber); + call->appendText(newNumber); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -1265,7 +1265,7 @@ void SFLPhoneView::accept() changeScreen(SCREEN_MAIN); Call * pastCall = historyTree->currentItem()->call(); Call * call = callList->addDialingCall(pastCall->getPeerName()); - call->appendItemText(pastCall->getPeerPhoneNumber()); + call->appendText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -1275,7 +1275,7 @@ void SFLPhoneView::accept() changeScreen(SCREEN_MAIN); ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(listWidget_addressBook->currentItem())); Call * call = callList->addDialingCall(w->getContactName()); - call->appendItemText(w->getContactNumber()); + call->appendText(w->getContactNumber()); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); @@ -1350,7 +1350,7 @@ void SFLPhoneView::mailBox() Account * account = accountInUse(); QString mailBoxNumber = account->getAccountDetail(ACCOUNT_MAILBOX); Call * call = callList->addDialingCall(); - call->appendItemText(mailBoxNumber); + call->appendText(mailBoxNumber); addCallToCallList(call); callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT);