diff --git a/kde/src/CallView.cpp b/kde/src/CallView.cpp index 20829835d60849f10882f89883a992253c81f5e7..92e2b037337f92ef5f81a04d78712ea1e5b595b3 100644 --- a/kde/src/CallView.cpp +++ b/kde/src/CallView.cpp @@ -86,7 +86,8 @@ CallView::CallView(QWidget* parent) : QTreeWidget(parent),m_pActiveOverlay(0),m_ } foreach(Call* active, SFLPhone::model()->getConferenceList()) { - addConference(active); + if (qobject_cast<Call*>(active)) //As of May 2012, the deamon still produce fake conferences + addConference(active); } //User Interface even @@ -557,10 +558,6 @@ void CallView::destroyCall(Call* toDestroy) SFLPhone::model()->getIndex(toDestroy)->parent()->removeChild(SFLPhone::model()->getIndex(toDestroy)); if (parent->childCount() == 0) /*This should never happen, but it does*/ takeTopLevelItem(indexOfTopLevelItem(parent)); - else if (parent->childCount() == 1) { - addTopLevelItem(extractItem(parent->child(0))); - takeTopLevelItem(indexOfTopLevelItem(parent)); - } //TODO make sure it just never happen and remove this logic code } else kDebug() << "Call not found"; @@ -649,8 +646,6 @@ bool CallView::conferenceChanged(Call* conf) { if (!dynamic_cast<Call*>(conf)) return false; kDebug() << "Conference changed"; - //if (!SFLPhone::model()->conferenceChanged(confId, state)) - // return false; CallManagerInterface& callManager = CallManagerInterfaceSingleton::getInstance(); QStringList callList = callManager.getParticipantList(conf->getConfId()); @@ -666,10 +661,11 @@ bool CallView::conferenceChanged(Call* conf) kDebug() << "Call " << callId << " does not exist"; } - if (SFLPhone::model()->getIndex(conf)) /*Can happen is the daemon crashed*/ - for (int j =0; j < SFLPhone::model()->getIndex(conf)->childCount();j++) { - if (buffer.indexOf(SFLPhone::model()->getIndex(conf)->child(j)) == -1) - insertItem(extractItem(SFLPhone::model()->getIndex(conf)->child(j))); + QTreeWidgetItem* item = SFLPhone::model()->getIndex(conf); + if (item) /*Can happen if the daemon crashed*/ + for (int j =0; j < item->childCount();j++) { + if (buffer.indexOf(item->child(j)) == -1) + insertItem(extractItem(item->child(j))); } Q_ASSERT_X(SFLPhone::model()->getIndex(conf)->childCount() == 0,"changing conference","A conference can't have no participants"); diff --git a/kde/src/lib/CallModel.hpp b/kde/src/lib/CallModel.hpp index 89c8893aa74f316f4d5304c0de28197a960aad91..5bd00bb6ce076f98dbf5bc9c5f6d76919911f6b8 100644 --- a/kde/src/lib/CallModel.hpp +++ b/kde/src/lib/CallModel.hpp @@ -785,6 +785,8 @@ CALLMODEL_TEMPLATE bool CALLMODEL_T::updateWidget (Call* call, CallWidget va CALLMODEL_TEMPLATE bool CALLMODEL_T::updateIndex (Call* call, Index value ) { updateCommon(call); + if (!m_sPrivateCallList_call[call]) + return false; m_sPrivateCallList_call[call]->index = value ; m_sPrivateCallList_index[value] = m_sPrivateCallList_call[call] ; return true; diff --git a/kde/src/widgets/CallTreeItem.cpp b/kde/src/widgets/CallTreeItem.cpp index 4076381b5a0d5a50caa150b22dc97a4970bf86ab..c76787ffaaa130326d5c601aba63bcede12cc28e 100644 --- a/kde/src/widgets/CallTreeItem.cpp +++ b/kde/src/widgets/CallTreeItem.cpp @@ -92,6 +92,9 @@ Call* CallTreeItem::call() const ///Set the call item void CallTreeItem::setCall(Call *call) { + if (!call) + return; + m_pItemCall = call; setAcceptDrops(true);