diff --git a/sflphone-client-kde/src/CMakeLists.txt b/sflphone-client-kde/src/CMakeLists.txt index 4735bad48c72823e776fe79da1b45fbf93f7c5ca..f2a721f3a845d23e840112dafe6b286267eac3f6 100644 --- a/sflphone-client-kde/src/CMakeLists.txt +++ b/sflphone-client-kde/src/CMakeLists.txt @@ -27,6 +27,9 @@ SET( sflphone_client_kde_SRCS AccountList.cpp Call.cpp CallList.cpp + CallTreeView.cpp + CallTreeModel.cpp + CallTreeItem.cpp configurationmanager_interface_singleton.cpp callmanager_interface_singleton.cpp instance_interface_singleton.cpp diff --git a/sflphone-client-kde/src/CallList.cpp b/sflphone-client-kde/src/CallList.cpp index 6894ae2f7cc734eb254ae31cce8f9f694338901c..72a7d2fd4e64ae64726278c57a55c9944ced713f 100644 --- a/sflphone-client-kde/src/CallList.cpp +++ b/sflphone-client-kde/src/CallList.cpp @@ -82,6 +82,8 @@ CallList::~CallList() delete calls; } +/* + Call * CallList::operator[](const QListWidgetItem * item) { for(int i = 0 ; i < size() ; i++) @@ -116,7 +118,7 @@ Call * CallList::findCallByHistoryItem(const QListWidgetItem * item) } } return NULL; -} + }*/ Call * CallList::findCallByCallId(const QString & callId) { diff --git a/sflphone-client-kde/src/CallList.h b/sflphone-client-kde/src/CallList.h index ffee7a9937b10708e837d35fdf7eee870cc60e6a..b411267bb8fb73864f690e091d8d76680b935e2d 100644 --- a/sflphone-client-kde/src/CallList.h +++ b/sflphone-client-kde/src/CallList.h @@ -25,7 +25,6 @@ #include <QtCore/QVector> #include <QtCore/QString> -#include "CallTreeItem.h" #include "Call.h" #include "dbus/metatypes.h" @@ -44,10 +43,10 @@ public: ~CallList(); //Getters - Call * findCallByItem(const QListWidgetItem * item); - Call * findCallByHistoryItem(const QListWidgetItem * item); + // Call * findCallByItem(const QListWidgetItem * item); + // Call * findCallByHistoryItem(const QListWidgetItem * item); Call * findCallByCallId(const QString & callId); - Call * operator[](const QListWidgetItem * item); + // Call * operator[](const QListWidgetItem * item); Call * operator[](const QString & callId); Call * operator[](int ind); int size(); diff --git a/sflphone-client-kde/src/CallTreeItem.cpp b/sflphone-client-kde/src/CallTreeItem.cpp index 50facfe87b8f37732a0369eb82a1ac84def7f350..f14b619a4ca17dc0d1ae16d9507e5e93af156a1f 100644 --- a/sflphone-client-kde/src/CallTreeItem.cpp +++ b/sflphone-client-kde/src/CallTreeItem.cpp @@ -23,10 +23,15 @@ #include "CallTreeItem.h" + CallTreeItem::CallTreeItem(CallTreeItem *parent) + : parentItem(parent) + { + } + CallTreeItem::CallTreeItem(const Call &data, CallTreeItem *parent) + : parentItem(parent), + itemData(data) { - parentItem = parent; - itemData = data; } CallTreeItem::~CallTreeItem() @@ -63,6 +68,11 @@ return itemData.value(column); } + QVariant CallTreeItem::data() const + { + return data(0); + } + bool CallTreeItem::insertChildren(int position, int count, int columns) { if (position < 0 || position > childItems.size()) diff --git a/sflphone-client-kde/src/CallTreeItem.h b/sflphone-client-kde/src/CallTreeItem.h index cc0aea12324a43ffe9d6c1f82fe1406a08c2e69f..44e5e33f277eb0237c77e8499160449a9d636f3d 100644 --- a/sflphone-client-kde/src/CallTreeItem.h +++ b/sflphone-client-kde/src/CallTreeItem.h @@ -34,25 +34,27 @@ class Call; class CallTreeItem : public QTreeWidget { public: - CallTreeItem(const Call &data, CallTreeItem *parent = 0); - ~CallTreeItem(); - - CallTreeItem *child(int number); - int childCount() const; - int columnCount() const; - Call* data(int column) const; - bool insertChildren(int position, int count, int columns); - bool insertColumns(int position, int columns); - CallTreeItem *parent(); - bool removeChildren(int position, int count); - bool removeColumns(int position, int columns); - int childNumber() const; - bool setData(int column, const Call &value); + CallTreeItem(CallTreeItem *parent = 0); + CallTreeItem(const Call &data, CallTreeItem *parent = 0); + ~CallTreeItem(); + + CallTreeItem *child(int number); + int childCount() const; + int columnCount() const; + Call* data(int column) const; + Call* data() const; + bool insertChildren(int position, int count, int columns); + bool insertColumns(int position, int columns); + CallTreeItem *parent(); + bool removeChildren(int position, int count); + bool removeColumns(int position, int columns); + int childNumber() const; + bool setData(int column, const Call &value); private: - QList<CallTreeItem*> childItems; - Call *itemData; - CallTreeItem *parentItem; + QList<CallTreeItem*> childItems; + Call *itemData; + CallTreeItem *parentItem; }; #endif // CALLTREE_ITEM_H diff --git a/sflphone-client-kde/src/CallTreeModel.cpp b/sflphone-client-kde/src/CallTreeModel.cpp index d64088edf5b21f8cad9361b7251252faee8adbce..d5c854070f8761e839a046f4d97acbd7b8eda013 100644 --- a/sflphone-client-kde/src/CallTreeModel.cpp +++ b/sflphone-client-kde/src/CallTreeModel.cpp @@ -20,23 +20,21 @@ ***************************************************************************/ #include <QtGui> +#include <klocale.h> #include "CallTreeModel.h" #include "CallTreeItem.h" +#include "Call.h" CallTreeModel::CallTreeModel(QObject *parent) : QAbstractItemModel(parent) { - QStringList headers << i18n("Calls"); + QStringList data = QString("Calls").split("\n"); QVector<QVariant> rootData; + rootData << i18n("Calls"); - foreach (QString header, headers) - { - rootData << header; - } - - rootItem = new TreeItem(rootData); - setupModelData(data.split(QString("\n")), rootItem); + rootItem = new CallTreeItem(); + setupModelData(data, rootItem); } CallTreeModel::~CallTreeModel() @@ -53,12 +51,12 @@ QVariant CallTreeModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { - return QVariant(); + return 0; } if (role != Qt::DisplayRole && role != Qt::EditRole) { - return QVariant(); + return 0; } CallTreeItem *item = getItem(index); @@ -80,7 +78,7 @@ CallTreeItem *CallTreeModel::getItem(const QModelIndex &index) const { if (index.isValid()) { - CallTreeItem *item = static_cast<TreeItem*>(index.internalPointer()); + CallTreeItem *item = static_cast<CallTreeItem*>(index.internalPointer()); if (item) { return item; @@ -194,6 +192,13 @@ int CallTreeModel::rowCount(const QModelIndex &parent) const return parentItem->childCount(); } +bool CallTreeModel::setData(const QModelIndex &index, const Call *call, int role) +{ + QVariant value = QVariant(&*value); + + return setData(index, value, role); +} + bool CallTreeModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role != Qt::EditRole) @@ -201,7 +206,7 @@ bool CallTreeModel::setData(const QModelIndex &index, const QVariant &value, int return false; } - TreeItem *item = getItem(index); + CallTreeItem *item = getItem(index); bool result = item->setData(index.column(), value); if (result) diff --git a/sflphone-client-kde/src/CallTreeModel.h b/sflphone-client-kde/src/CallTreeModel.h index e62ec4b99307e04b73b268a8a5ff9906bbce9c0c..be79cf7ad879e2db11f93bb46d41087745cd83a5 100644 --- a/sflphone-client-kde/src/CallTreeModel.h +++ b/sflphone-client-kde/src/CallTreeModel.h @@ -31,14 +31,14 @@ #include <QtCore/QVariant> class CallTreeItem; +class Call; class CallTreeModel : public QAbstractItemModel { Q_OBJECT public: - CallTreeModel(const QStringList &headers, const QString &data, - QObject *parent = 0); + CallTreeModel(QObject *parent = 0); ~CallTreeModel(); QVariant data(const QModelIndex &index, int role) const; @@ -53,8 +53,8 @@ public: int columnCount(const QModelIndex &parent = QModelIndex()) const; Qt::ItemFlags flags(const QModelIndex &index) const; - bool setData(const QModelIndex &index, const QVariant &value, - int role = Qt::EditRole); + bool setData(const QModelIndex &index, const Call *call, int role = Qt::EditRole); + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); @@ -67,9 +67,11 @@ public: bool removeRows(int position, int rows, const QModelIndex &parent = QModelIndex()); + CallTreeItem *getItem(const QModelIndex &index) const; + private: + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); void setupModelData(const QStringList &lines, CallTreeItem *parent); - CallTreeItem *getItem(const QModelIndex &index) const; CallTreeItem *rootItem; }; diff --git a/sflphone-client-kde/src/CallTreeView.cpp b/sflphone-client-kde/src/CallTreeView.cpp index f4c179fcc0a85573e57a51113e49c4121a314c72..5be278206783769d0e8b02cf9b9f6156d30d2c76 100644 --- a/sflphone-client-kde/src/CallTreeView.cpp +++ b/sflphone-client-kde/src/CallTreeView.cpp @@ -26,72 +26,110 @@ CallTreeView::CallTreeView(QWidget * parent) : QTreeView(parent) -{ - model = new TreeModel(this); - - setModel(model) +{ + setModel(new CallTreeModel(this)); } CallTreeView::~CallTreeView() { - delete modele; + // } CallTreeItem* CallTreeView::insert(Call *call) { QModelIndex index = selectionModel()->currentIndex(); - QAbstractItemModel *model = model(); - if (!model->insertRow(index.row()+1, index.parent())) + if (!model()->insertRow(index.row()+1, index.parent())) { - return; + return 0; } - for (int column = 0; column < model->columnCount(index.parent()); ++column) + for (int column = 0; column < model()->columnCount(index.parent()); ++column) { - QModelIndex child = model->index(index.row()+1, column, index.parent()); - model->setData(child, call, Qt::EditRole); + QModelIndex child = model()->index(index.row()+1, column, index.parent()); + // TODO + //AAAAAAAAAAARRGG//model()->setData(child, call, Qt::EditRole); } + + QModelIndex child = model()->index(index.row()+1, 0, index.parent()); + + // TODO + return ((CallTreeModel*)model())->getItem(child); +// return ((CallTreeModel*)model())->getItem(index.row()+1); } CallTreeItem* CallTreeView::insert(CallTreeItem *parent, Call *call) { + QModelIndex index = selectionModel()->currentIndex(); + + if (model()->columnCount(index) == 0) + { + if (!model()->insertColumn(0, index)) + { + return 0; + } + + } + + if (!model()->insertRow(0, index)) + { + return 0; + } + + for (int column = 0; column < model()->columnCount(index); ++column) + { + QModelIndex child = model()->index(0, column, index); + //arrgg + //TODO + //model()->setData(child, call, Qt::EditRole); + + if (!model()->headerData(column, Qt::Horizontal).isValid()) + { + model()->setHeaderData(column, Qt::Horizontal, QVariant("[No header]"), Qt::EditRole); + } + } + + selectionModel()->setCurrentIndex(model()->index(0, 0, index), QItemSelectionModel::ClearAndSelect); +} - -QModelIndex index = view->selectionModel()->currentIndex(); +void CallTreeView::remove(CallTreeItem *item) { - QAbstractItemModel *model = model(); - - if (model->columnCount(index) == 0) - { - if (!model->insertColumn(0, index)) - { - return; - } - - } - - if (!model->insertRow(0, index)) - { - return; - } - - for (int column = 0; column < model->columnCount(index); ++column) - { - QModelIndex child = model->index(0, column, index); - model->setData(child, QVariant("[No data]"), Qt::EditRole); - if (!model->headerData(column, Qt::Horizontal).isValid()) - model->setHeaderData(column, Qt::Horizontal, QVariant("[No header]"), - Qt::EditRole); - } - - view->selectionModel()->setCurrentIndex(model->index(0, 0, index), - QItemSelectionModel::ClearAndSelect); + return; + // to implement } -void CallTreeView::remove(CallTreeItem *item) +CallTreeItem* CallTreeView::getItem(Call *call) { // to implement + return 0; } +CallTreeItem* CallTreeView::currentItem() +{ + QModelIndex index = selectionModel()->currentIndex(); + + CallTreeModel * treeModel = static_cast<CallTreeModel*>(model()); + + CallTreeItem *item = treeModel->getItem(index); + + return item; +} + +void CallTreeView::setCurrentRow(int row) +{ + CallTreeModel * treeModel = static_cast<CallTreeModel*>(model()); + + QModelIndex currentIndex = selectionModel()->currentIndex(); + QModelIndex index = treeModel->index(row, 0, currentIndex); + + // TODO: check + + selectionModel()->setCurrentIndex(index, QItemSelectionModel::Current); +} + + +int CallTreeView::count() +{ + return model()->rowCount(); +} diff --git a/sflphone-client-kde/src/CallTreeView.h b/sflphone-client-kde/src/CallTreeView.h index a55decc6d6d6fa8f4ccffe24aaa5e0e639abc046..a89353ad2736f85449274caa651ba855773998c8 100644 --- a/sflphone-client-kde/src/CallTreeView.h +++ b/sflphone-client-kde/src/CallTreeView.h @@ -35,14 +35,17 @@ class Call; class CallTreeView : public QTreeView { Q_OBJECT -private: - CallTreeModel *model; public: CallTreeView(QWidget *parent); ~CallTreeView(); + CallTreeItem* insert(CallTreeItem *item, Call* call); CallTreeItem* insert(Call* call); + CallTreeItem* getItem(Call *call); void remove(CallTreeItem* item); + CallTreeItem* currentItem(); + void setCurrentRow(int row); + int count(); }; diff --git a/sflphone-client-kde/src/SFLPhone.cpp b/sflphone-client-kde/src/SFLPhone.cpp index 68d2ddeff6611af1fdbb3ebb2a1bf15ba7a2d5b2..8c7d73c31edf42351058d1c0dcc7977fa12dc9c8 100644 --- a/sflphone-client-kde/src/SFLPhone.cpp +++ b/sflphone-client-kde/src/SFLPhone.cpp @@ -217,9 +217,9 @@ bool SFLPhone::queryClose() void SFLPhone::quitButton() { InstanceInterface & instance = InstanceInterfaceSingleton::getInstance(); - qDebug() << "quitButton : " << view->listWidget_callList->count() << " calls open."; + qDebug() << "quitButton : " << view->callTree->count() << " calls open."; - if(view->listWidget_callList->count() > 0 && instance.getRegistrationCount() <= 1) + if(view->callTree->count() > 0 && instance.getRegistrationCount() <= 1) { qDebug() << "Attempting to quit when still having some calls open."; } diff --git a/sflphone-client-kde/src/SFLPhoneView.cpp b/sflphone-client-kde/src/SFLPhoneView.cpp index 8b60297c02aa44293a676f290fb4f4a1978daf00..324e262d5015ccfdb782d8ba9c7497d5f3ead6c5 100644 --- a/sflphone-client-kde/src/SFLPhoneView.cpp +++ b/sflphone-client-kde/src/SFLPhoneView.cpp @@ -48,6 +48,7 @@ #include "typedefs.h" #include "Dialpad.h" #include "CallTreeView.h" +#include "CallTreeItem.h" using namespace KABC; @@ -200,26 +201,24 @@ QErrorMessage * SFLPhoneView::getErrorWindow() return errorWindow; } -void SFLPhoneView::addCallToCallList(Call * call) -{ - CallTreeItem * item = call->getItem(); - QWidget * widget = call->getItemWidget(); - if(item && widget) - { - callTree->insert(item); - callTree->setItemWidget(item, widget); - } +CallTreeItem* SFLPhoneView::addCallToCallList(Call * call) +{ + return callTree->insert(call); + +// QWidget * widget = call->getItemWidget(); +// callTree->setItemWidget(item, widget); +// } } -void SFLPhoneView::addCallToCallHistory(Call * call) +CallTreeItem* SFLPhoneView::addCallToCallHistory(Call * call) { - QListWidgetItem * item = call->getHistoryItem(); - QWidget * widget = call->getHistoryItemWidget(); - if(item && widget) - { - listWidget_callHistory->insertItem(0, item); - listWidget_callHistory->setItemWidget(item, widget); - } + return historyTree->insert(call); + +// if(item) +// { +// QWidget * widget = call->getHistoryItemWidget(); +// historyTree->setItemWidget(item, widget); +// } } void SFLPhoneView::addContactToContactList(Contact * contact) @@ -240,14 +239,14 @@ void SFLPhoneView::typeString(QString str) if(stackedWidget_screen->currentWidget() == page_callList) { - QListWidgetItem * item = callTree->currentItem(); + CallTreeItem * item = callTree->currentItem(); callManager.playDTMF(str); Call *currentCall = 0; Call *candidate = 0; if(item) { - Call *call = callList->findCallByItem(callTree->currentItem()); + Call *call = callTree->currentItem()->data(); if(call->getState() == CALL_STATE_CURRENT) { @@ -280,7 +279,7 @@ void SFLPhoneView::typeString(QString str) if(!currentCall && candidate) { - callList->findCallByItem(callTree->currentItem())->appendItemText(str); + callTree->currentItem()->data(0)->appendItemText(str); } } if(stackedWidget_screen->currentWidget() == page_callHistory) @@ -303,14 +302,14 @@ void SFLPhoneView::backspace() if(stackedWidget_screen->currentWidget() == page_callList) { qDebug() << "In call list."; - QListWidgetItem * item = callTree->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Backspace when no item is selected. Doing nothing."; } else { - Call * call = callList->findCallByItem(callTree->currentItem()); + Call * call = callTree->currentItem()->data(0); if(!call) { qDebug() << "Error : Backspace on unexisting call."; @@ -330,14 +329,15 @@ void SFLPhoneView::escape() if(stackedWidget_screen->currentWidget() == page_callList ) { qDebug() << "In call list."; - QListWidgetItem * item = callTree->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Escape when no item is selected. Doing nothing."; } else { - Call * call = callList->findCallByItem(->currentItem()); + Call * call = item->data(0); + if(!call) { qDebug() << "Error : Escape on unexisting call."; @@ -374,14 +374,14 @@ void SFLPhoneView::enter() if(stackedWidget_screen->currentWidget() == page_callList ) { qDebug() << "In call list."; - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Enter when no item is selected. Doing nothing."; } else { - Call * call = callList->findCallByItem(listWidget_callList->currentItem()); + Call * call = item->data(0); if(!call) { qDebug() << "Error : Enter on unexisting call."; @@ -403,7 +403,7 @@ void SFLPhoneView::enter() if(stackedWidget_screen->currentWidget() == page_callHistory) { qDebug() << "In call history."; - QListWidgetItem * item = listWidget_callHistory->currentItem(); + CallTreeItem * item = historyTree->currentItem(); if(!item) { qDebug() << "Enter when no item is selected. Doing nothing."; @@ -412,7 +412,7 @@ void SFLPhoneView::enter() { changeScreen(SCREEN_MAIN); - Call * pastCall = callList->findCallByHistoryItem(item); + Call * pastCall = item->data(); if (!pastCall) { qDebug() << "pastCall null"; @@ -420,7 +420,7 @@ void SFLPhoneView::enter() Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId()); call->appendItemText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } } @@ -439,7 +439,7 @@ void SFLPhoneView::enter() Call * call = callList->addDialingCall(w->getContactName()); call->appendItemText(w->getContactNumber()); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } } @@ -477,12 +477,12 @@ void SFLPhoneView::updateCallItem(Call * call) call_state state = call->getState(); if(state == CALL_STATE_OVER) { - QListWidgetItem * item = call->getItem(); - qDebug() << "Updating call with CALL_STATE_OVER. Deleting item " << (*callList)[item]->getCallId(); - listWidget_callList->takeItem(listWidget_callList->row(item)); + CallTreeItem * item = callTree->getItem(call); + qDebug() << "Updating call with CALL_STATE_OVER. Deleting item " << call->getCallId(); + callTree->remove(item); if(call->getHistoryState() != NONE) { - addCallToCallHistory(call); + historyTree->insert(call); } } } @@ -496,7 +496,7 @@ void SFLPhoneView::updateWindowCallState() QString buttonIconFiles[6] = {ICON_CALL, ICON_HANGUP, ICON_HOLD, ICON_TRANSFER, ICON_REC_DEL_OFF, ICON_MAILBOX}; QString actionTexts[6] = {ACTION_LABEL_CALL, ACTION_LABEL_HANG_UP, ACTION_LABEL_HOLD, ACTION_LABEL_TRANSFER, ACTION_LABEL_RECORD, ACTION_LABEL_MAILBOX}; - QListWidgetItem * item; + CallTreeItem * item; bool transfer = false; //tells whether the call is in recording position @@ -504,7 +504,7 @@ void SFLPhoneView::updateWindowCallState() enabledActions[SFLPhone::Mailbox] = accountInUse() && ! accountInUse()->getAccountDetail(ACCOUNT_MAILBOX).isEmpty(); if(stackedWidget_screen->currentWidget() == page_callList) { - item = listWidget_callList->currentItem(); + item = callTree->currentItem(); if (!item) { qDebug() << "No item selected."; @@ -515,30 +515,30 @@ void SFLPhoneView::updateWindowCallState() } else { - Call * call = (*callList)[item]; + Call * call = item->data(); call_state state = call->getState(); recordActivated = call->getRecording(); switch (state) { case CALL_STATE_INCOMING: - qDebug() << "Reached CALL_STATE_INCOMING with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_INCOMING with call " << call->getCallId(); buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; buttonIconFiles[SFLPhone::Refuse] = ICON_REFUSE; actionTexts[SFLPhone::Accept] = ACTION_LABEL_ACCEPT; actionTexts[SFLPhone::Refuse] = ACTION_LABEL_REFUSE; break; case CALL_STATE_RINGING: - qDebug() << "Reached CALL_STATE_RINGING with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_RINGING with call " << call->getCallId(); enabledActions[SFLPhone::Hold] = false; enabledActions[SFLPhone::Transfer] = false; break; case CALL_STATE_CURRENT: qDebug() << "details = " << CallManagerInterfaceSingleton::getInstance().getCallDetails(call->getCallId()).value(); - qDebug() << "Reached CALL_STATE_CURRENT with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_CURRENT with call " << call->getCallId(); buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON; break; case CALL_STATE_DIALING: - qDebug() << "Reached CALL_STATE_DIALING with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_DIALING with call " << call->getCallId(); enabledActions[SFLPhone::Hold] = false; enabledActions[SFLPhone::Transfer] = false; enabledActions[SFLPhone::Record] = false; @@ -546,33 +546,33 @@ void SFLPhoneView::updateWindowCallState() buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; break; case CALL_STATE_HOLD: - qDebug() << "Reached CALL_STATE_HOLD with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_HOLD with call " << call->getCallId(); buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD; actionTexts[SFLPhone::Hold] = ACTION_LABEL_UNHOLD; break; case CALL_STATE_FAILURE: - qDebug() << "Reached CALL_STATE_FAILURE with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_FAILURE with call " << call->getCallId(); enabledActions[SFLPhone::Accept] = false; enabledActions[SFLPhone::Hold] = false; enabledActions[SFLPhone::Transfer] = false; enabledActions[SFLPhone::Record] = false; break; case CALL_STATE_BUSY: - qDebug() << "Reached CALL_STATE_BUSY with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_BUSY with call " << call->getCallId(); enabledActions[SFLPhone::Accept] = false; enabledActions[SFLPhone::Hold] = false; enabledActions[SFLPhone::Transfer] = false; enabledActions[SFLPhone::Record] = false; break; case CALL_STATE_TRANSFER: - qDebug() << "Reached CALL_STATE_TRANSFER with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_TRANSFER with call " << call->getCallId(); buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF; actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF; transfer = true; buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON; break; case CALL_STATE_TRANSF_HOLD: - qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << (*callList)[item]->getCallId(); + qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << call->getCallId(); buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF; buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD; actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF; @@ -580,20 +580,20 @@ void SFLPhoneView::updateWindowCallState() transfer = true; break; case CALL_STATE_OVER: - qDebug() << "Error : Reached CALL_STATE_OVER with call " << (*callList)[item]->getCallId() << "!"; + qDebug() << "Error : Reached CALL_STATE_OVER with call " << call->getCallId() << "!"; break; case CALL_STATE_ERROR: - qDebug() << "Error : Reached CALL_STATE_ERROR with call " << (*callList)[item]->getCallId() << "!"; + qDebug() << "Error : Reached CALL_STATE_ERROR with call " << call->getCallId() << "!"; break; default: - qDebug() << "Error : Reached unexisting state for call " << (*callList)[item]->getCallId() << "!"; + qDebug() << "Error : Reached unexisting state for call " << call->getCallId() << "!"; break; } } } if(stackedWidget_screen->currentWidget() == page_callHistory) { - item = listWidget_callHistory->currentItem(); + item = historyTree->currentItem(); buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; actionTexts[SFLPhone::Accept] = ACTION_LABEL_CALL_BACK; if (!item) @@ -615,7 +615,7 @@ void SFLPhoneView::updateWindowCallState() } if(stackedWidget_screen->currentWidget() == page_addressBook) { - item = listWidget_addressBook->currentItem(); + item = addressBookTree->currentItem(); buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT; if (!item) { @@ -1024,10 +1024,10 @@ void SFLPhoneView::on_listWidget_callList_itemChanged() stackedWidget_screen->setCurrentWidget(page_callList); } -void SFLPhoneView::on_listWidget_callList_itemDoubleClicked(QListWidgetItem * item) +void SFLPhoneView::on_listWidget_callList_itemDoubleClicked(CallTreeItem * item) { qDebug() << "on_listWidget_callList_itemDoubleClicked"; - Call * call = callList->findCallByItem(item); + Call * call = item->data(); call_state state = call->getCurrentState(); switch(state) { @@ -1042,29 +1042,30 @@ void SFLPhoneView::on_listWidget_callList_itemDoubleClicked(QListWidgetItem * it } } -void SFLPhoneView::on_listWidget_callHistory_itemDoubleClicked(QListWidgetItem * item) +void SFLPhoneView::on_listWidget_callHistory_itemDoubleClicked(CallTreeItem * item) { qDebug() << "on_listWidget_callHistory_itemDoubleClicked"; changeScreen(SCREEN_MAIN); - Call * pastCall = callList->findCallByHistoryItem(item); + Call * pastCall = item->data(); Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId()); call->appendItemText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } -void SFLPhoneView::on_listWidget_addressBook_itemDoubleClicked(QListWidgetItem * item) +void SFLPhoneView::on_listWidget_addressBook_itemDoubleClicked(CallTreeItem * item) { qDebug() << "on_listWidget_addressBook_itemDoubleClicked"; changeScreen(SCREEN_MAIN); - ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item)); - Call * call = callList->addDialingCall(w->getContactName()); - call->appendItemText(w->getContactNumber()); - addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); - action(call, CALL_ACTION_ACCEPT); +// TOFIX +// ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item)); +// Call * call = callList->addDialingCall(w->getContactName()); +// call->appendItemText(w->getContactNumber()); +// addCallToCallList(call); +// callTree->setCurrentRow(callTree->count() - 1); +// action(call, CALL_ACTION_ACCEPT); } void SFLPhoneView::on_stackedWidget_screen_currentChanged(int index) @@ -1144,10 +1145,10 @@ void SFLPhoneView::editBeforeCall() QString number; if(stackedWidget_screen->currentWidget() == page_callHistory) { - QListWidgetItem * item = listWidget_callHistory->currentItem(); + CallTreeItem * item = historyTree->currentItem(); if(item) { - Call * call = callList->findCallByHistoryItem(item); + Call * call = item->data(); if(call) { name = call->getPeerName(); @@ -1175,7 +1176,7 @@ void SFLPhoneView::editBeforeCall() Call * call = callList->addDialingCall(name); call->appendItemText(newNumber); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } } @@ -1223,17 +1224,17 @@ void SFLPhoneView::accept() { if(stackedWidget_screen->currentWidget() == page_callList) { - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Calling when no item is selected. Opening an item."; Call * call = callList->addDialingCall(); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); } else { - Call * call = callList->findCallByItem(item); + Call * call = item->data(); if(!call) { qDebug() << "Error : Accept triggered on unexisting call."; @@ -1246,7 +1247,7 @@ void SFLPhoneView::accept() qDebug() << "Calling when item currently ringing, current, hold or busy. Opening an item."; Call * call = callList->addDialingCall(); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); } else { @@ -1258,11 +1259,11 @@ void SFLPhoneView::accept() if(stackedWidget_screen->currentWidget() == page_callHistory) { changeScreen(SCREEN_MAIN); - Call * pastCall = callList->findCallByHistoryItem(listWidget_callHistory->currentItem()); + Call * pastCall = historyTree->currentItem()->data(); Call * call = callList->addDialingCall(pastCall->getPeerName()); call->appendItemText(pastCall->getPeerPhoneNumber()); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } if(stackedWidget_screen->currentWidget() == page_addressBook) @@ -1272,7 +1273,7 @@ void SFLPhoneView::accept() Call * call = callList->addDialingCall(w->getContactName()); call->appendItemText(w->getContactNumber()); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } } @@ -1281,14 +1282,14 @@ void SFLPhoneView::refuse() { if(stackedWidget_screen->currentWidget() == page_callList) { - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Error : Hanging up when no item selected. Should not happen."; } else { - action(callList->findCallByItem(item), CALL_ACTION_REFUSE); + action(item->data(), CALL_ACTION_REFUSE); } } if(stackedWidget_screen->currentWidget() == page_callHistory) @@ -1303,40 +1304,40 @@ void SFLPhoneView::refuse() void SFLPhoneView::hold() { - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Error : Holding when no item selected. Should not happen."; } else { - action(callList->findCallByItem(item), CALL_ACTION_HOLD); + action(item->data(), CALL_ACTION_HOLD); } } void SFLPhoneView::transfer() { - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Error : Transfering when no item selected. Should not happen."; } else { - action(callList->findCallByItem(item), CALL_ACTION_TRANSFER); + action(item->data(), CALL_ACTION_TRANSFER); } } void SFLPhoneView::record() { - QListWidgetItem * item = listWidget_callList->currentItem(); + CallTreeItem * item = callTree->currentItem(); if(!item) { qDebug() << "Error : Recording when no item selected. Should not happen."; } else { - action(callList->findCallByItem(item), CALL_ACTION_RECORD); + action(item->data(), CALL_ACTION_RECORD); } } @@ -1347,7 +1348,7 @@ void SFLPhoneView::mailBox() Call * call = callList->addDialingCall(); call->appendItemText(mailBoxNumber); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); action(call, CALL_ACTION_ACCEPT); } @@ -1386,7 +1387,7 @@ void SFLPhoneView::on1_incomingCall(const QString & /*accountID*/, const QString qDebug() << "Signal : Incoming Call ! ID = " << callID; Call * call = callList->addIncomingCall(callID); addCallToCallList(call); - listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); + callTree->setCurrentRow(callTree->count() - 1); changeScreen(SCREEN_MAIN); diff --git a/sflphone-client-kde/src/SFLPhoneView.h b/sflphone-client-kde/src/SFLPhoneView.h index 738eb400df2e0402fa78e8999c8b55510f1e3764..0ba19f793e0d08174eeb9e726d4c91062cd99b08 100644 --- a/sflphone-client-kde/src/SFLPhoneView.h +++ b/sflphone-client-kde/src/SFLPhoneView.h @@ -26,7 +26,6 @@ #include <QtCore/QString> #include <QtCore/QVector> #include <QtCore/QList> -#include <QtGui/QListWidgetItem> #include <QtGui/QKeyEvent> #include <QErrorMessage> #include <KXmlGuiWindow> @@ -66,7 +65,6 @@ private: //List of calls in the window, and past ones. //Handles both current calls (dialing, ringing...) and history. CallList * callList; - CallTreeView *callTree; QErrorMessage * errorWindow; //Account used prioritary if defined and registered. If not, the first registered account in accountList is used. static QString priorAccountId; @@ -138,6 +136,10 @@ public: */ void saveState(); + CallTreeView *callTree; + CallTreeView *historyTree; + CallTreeView *addressBookTree; + private slots: /** * Performs the action action on the call call, then updates window. @@ -203,13 +205,13 @@ private slots: * This function doesn't add anything to the callList object. * @param call the call to add to the call-list's listwidget */ - void addCallToCallList(Call * call); + CallTreeItem* addCallToCallList(Call * call); /** * Adds the call's history-item to the call-history's listwidget. * This function doesn't add anything to the callList object. * @param call the past call to add to the call-history's listwidget */ - void addCallToCallHistory(Call * call); + CallTreeItem* addCallToCallHistory(Call * call); /** * Adds the contact's item to the addressbook's listwidget. * @param contact the contact to add to the addressbook's listwidget @@ -242,7 +244,7 @@ private slots: void updateVolumeBar(); void updateVolumeControls(); void updateDialpad(); - + public slots: /** * Updates all the display @@ -319,11 +321,11 @@ public slots: void on_listWidget_callList_currentItemChanged(); void on_listWidget_callList_itemChanged(); - void on_listWidget_callList_itemDoubleClicked(QListWidgetItem * item); + void on_listWidget_callList_itemDoubleClicked(CallTreeItem * item); void on_listWidget_callHistory_currentItemChanged(); - void on_listWidget_callHistory_itemDoubleClicked(QListWidgetItem * item); + void on_listWidget_callHistory_itemDoubleClicked(CallTreeItem * item); void on_listWidget_addressBook_currentItemChanged(); - void on_listWidget_addressBook_itemDoubleClicked(QListWidgetItem * item); + void on_listWidget_addressBook_itemDoubleClicked(CallTreeItem * item); void on_stackedWidget_screen_currentChanged(int index);