From d2a1f356fc4f07c303c9e5dd291a57823a68c9e4 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage <emmanuel.lepage@savoirfairelinux.com> Date: Tue, 29 May 2012 15:51:50 -0400 Subject: [PATCH] [ #11435 ] Fix trasfer, it apparently never worked, there was a bug in the state machine path --- kde/src/CallView.cpp | 23 ++++++++++++----------- kde/src/lib/Call.cpp | 6 +++--- kde/src/lib/CallModel.cpp | 1 - kde/src/lib/CallModel.hpp | 5 ++--- kde/src/widgets/CallTreeItem.cpp | 2 +- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/kde/src/CallView.cpp b/kde/src/CallView.cpp index a71aa41d9c..20829835d6 100644 --- a/kde/src/CallView.cpp +++ b/kde/src/CallView.cpp @@ -89,7 +89,6 @@ CallView::CallView(QWidget* parent) : QTreeWidget(parent),m_pActiveOverlay(0),m_ addConference(active); } - qDebug() << "\n\n\nHERE"; //User Interface even // SENDER SIGNAL RECEIVER SLOT / /**/connect(this , SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int) ) , this, SLOT( itemDoubleClicked(QTreeWidgetItem*,int)) ); @@ -180,7 +179,7 @@ bool CallView::callToCall(QTreeWidgetItem *parent, int index, const QMimeData *d else if ((parent->parent()) || (parent->childCount())) { kDebug() << "Call dropped on a conference"; - if ((SFLPhone::model()->getIndex(encodedCallId)->childCount()) && (!parent->childCount())) { + if (SFLPhone::model()->getIndex(encodedCallId)->childCount() && (SFLPhone::model()->getIndex(encodedCallId)->childCount()) && (!parent->childCount())) { kDebug() << "Conference dropped on a call (doing nothing)"; return true; } @@ -215,7 +214,7 @@ bool CallView::callToCall(QTreeWidgetItem *parent, int index, const QMimeData *d SFLPhone::model()->addParticipant(SFLPhone::model()->getCall(call1),SFLPhone::model()->getCall(call2)); return true; } - else if ((SFLPhone::model()->getIndex(encodedCallId)->childCount()) && (!parent->childCount())) { + else if (SFLPhone::model()->getIndex(encodedCallId) && (SFLPhone::model()->getIndex(encodedCallId)->childCount()) && (!parent->childCount())) { kDebug() << "Call dropped on it's own conference (doing nothing)"; return true; } @@ -383,6 +382,7 @@ void CallView::transfer() m_pCallPendingTransfer = 0; m_pTransferLE->clear(); + m_pTransferOverlay->setVisible(false); } @@ -414,14 +414,13 @@ bool CallView::haveOverlay() ///Remove the active overlay void CallView::hideOverlay() { - if (m_pActiveOverlay) + if (m_pActiveOverlay){ + disconnect(m_pCallPendingTransfer,SIGNAL(changed()),this,SLOT(hideOverlay())); m_pActiveOverlay->setVisible(false); - m_pActiveOverlay = 0; - - if (m_pCallPendingTransfer && m_pCallPendingTransfer->getState() == CALL_STATE_TRANSFER ) { - m_pCallPendingTransfer->actionPerformed(CALL_ACTION_TRANSFER); } + m_pActiveOverlay = 0; + m_pCallPendingTransfer = 0; } //hideOverlay @@ -489,6 +488,8 @@ QTreeWidgetItem* CallView::extractItem(const QString& callId) ///Extract an item from the TreeView and return it, the item is -not- deleted QTreeWidgetItem* CallView::extractItem(QTreeWidgetItem* item) { + if (!item) + return nullptr; QTreeWidgetItem* parentItem = item->parent(); if (parentItem) { @@ -514,7 +515,7 @@ CallTreeItem* CallView::insertItem(QTreeWidgetItem* item, Call* parent) ///Insert a TreeView item in the TreeView as child of parent or as a top level item, also restore the item Widget CallTreeItem* CallView::insertItem(QTreeWidgetItem* item, QTreeWidgetItem* parent) { - if (!dynamic_cast<QTreeWidgetItem*>(item) && !dynamic_cast<QTreeWidgetItem*>(parent)) + if (!dynamic_cast<QTreeWidgetItem*>(item) && SFLPhone::model()->getCall(item) && !dynamic_cast<QTreeWidgetItem*>(parent)) return nullptr; if (!item) { @@ -620,8 +621,8 @@ void CallView::itemClicked(QTreeWidgetItem* item, int column) { ///Add a new conference, get the call list and update the interface as needed Call* CallView::addConference(Call* conf) { - kDebug() << "\n\n\nConference created"; - Call* newConf = conf;//SFLPhone::model()->addConference(confID);//TODO ELV? + kDebug() << "Conference created"; + Call* newConf = conf; QTreeWidgetItem* confItem = new QTreeWidgetItem(); SFLPhone::model()->updateIndex(conf,confItem); diff --git a/kde/src/lib/Call.cpp b/kde/src/lib/Call.cpp index ede7b5399c..809c244183 100644 --- a/kde/src/lib/Call.cpp +++ b/kde/src/lib/Call.cpp @@ -56,8 +56,8 @@ const function Call::actionPerformedFunctionMap[11][5] = /*HOLD */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::unhold , &Call::setRecord },/**/ /*FAILURE */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::nothing , &Call::nothing },/**/ /*BUSY */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::nothing , &Call::nothing },/**/ -/*TRANSFERT */ {&Call::transfer , &Call::hangUp , &Call::nothing , &Call::hold , &Call::setRecord },/**/ -/*TRANSFERT_HOLD */ {&Call::transfer , &Call::hangUp , &Call::nothing , &Call::unhold , &Call::setRecord },/**/ +/*TRANSFERT */ {&Call::transfer , &Call::hangUp , &Call::transfer , &Call::hold , &Call::setRecord },/**/ +/*TRANSFERT_HOLD */ {&Call::transfer , &Call::hangUp , &Call::transfer , &Call::unhold , &Call::setRecord },/**/ /*OVER */ {&Call::nothing , &Call::nothing , &Call::nothing , &Call::nothing , &Call::nothing },/**/ /*ERROR */ {&Call::nothing , &Call::nothing , &Call::nothing , &Call::nothing , &Call::nothing } /**/ };// @@ -712,7 +712,7 @@ void Call::call() void Call::transfer() { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); - qDebug() << "Transferring call to number : " << m_TransferNumber << ". callId : " << m_CallId; + qDebug() << "\n\n\nTransferring call to number : " << m_TransferNumber << ". callId : " << m_CallId << "\n\n\n"; callManager.transfer(m_CallId, m_TransferNumber); this->m_pStopTime = new QDateTime(QDateTime::currentDateTime()); } diff --git a/kde/src/lib/CallModel.cpp b/kde/src/lib/CallModel.cpp index 7a466f05e3..76db9efe2a 100644 --- a/kde/src/lib/CallModel.cpp +++ b/kde/src/lib/CallModel.cpp @@ -136,7 +136,6 @@ Call* CallModelBase::addCall(Call* call, Call* parent) Call* CallModelBase::addConferenceS(Call* conf) { - qDebug() << "-----Emitting conference" << conf->getConfId(); emit conferenceCreated(conf); return conf; } diff --git a/kde/src/lib/CallModel.hpp b/kde/src/lib/CallModel.hpp index 39e910f5bc..b456f551f2 100644 --- a/kde/src/lib/CallModel.hpp +++ b/kde/src/lib/CallModel.hpp @@ -322,8 +322,7 @@ CALLMODEL_TEMPLATE void CALLMODEL_T::transfer(Call* toTransfer, QString target) { qDebug() << "Transferring call " << toTransfer->getCallId() << "to" << target; toTransfer->setTransferNumber(target); - toTransfer->changeCurrentState(CALL_STATE_TRANSFER); - toTransfer->actionPerformed(CALL_ACTION_ACCEPT); + toTransfer->actionPerformed(CALL_ACTION_TRANSFER); toTransfer->changeCurrentState(CALL_STATE_OVER); } //transfer @@ -345,7 +344,7 @@ CALLMODEL_TEMPLATE Call* CALLMODEL_T::addConference(const QString & confID) qDebug() << "This conference (" + confID + ") contain no call"; return 0; } - + if (!m_sPrivateCallList_callId[callList[0]]) { qDebug() << "Invalid call"; return 0; diff --git a/kde/src/widgets/CallTreeItem.cpp b/kde/src/widgets/CallTreeItem.cpp index c62b65c2c1..09eaa12276 100644 --- a/kde/src/widgets/CallTreeItem.cpp +++ b/kde/src/widgets/CallTreeItem.cpp @@ -228,7 +228,7 @@ void CallTreeItem::updated() else { //kDebug() << "Updating item of call of state OVER. Doing nothing."; } - if (state == CALL_STATE_TRANSFER) { + if (state == CALL_STATE_TRANSFER || state == CALL_STATE_TRANSF_HOLD) { kDebug() << "emmiting tranfer signal"; emit askTransfer(m_pItemCall); } -- GitLab