Commit 32aa4bdd authored by Emmanuel Lepage's avatar Emmanuel Lepage

Merging the last changes to the stable qt-client branch

parent 4e6573f2
......@@ -32,7 +32,6 @@ SET( sflphone_client_kde_SRCS
CallTreeItem.cpp
configurationmanager_interface_singleton.cpp
callmanager_interface_singleton.cpp
#calllist_interface_singleton.cpp
instance_interface_singleton.cpp
AccountWizard.cpp
AccountItemWidget.cpp
......
......@@ -715,6 +715,18 @@ void Call::setConfId(QString value) {
QString Call::getCurrentCodecName() {
CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
qDebug() << "Codec name: " << callManager.getCurrentCodecName(callId); sleep(5);
return callManager.getCurrentCodecName(callId);
}
\ No newline at end of file
}
//This function could also be called mayBeSecure or haveChancesToBeEncryptedButWeCantTell.
bool Call::isSecure() {
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
//MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value();
AccountList accountList;
Account* currentAccount = accountList.getAccountById(account);
if ((currentAccount->getAccountDetail(TLS_ENABLE ) == "true") || (currentAccount->getAccountDetail(TLS_METHOD).toInt())) {
return true;
}
return false;
}
......@@ -259,6 +259,7 @@ public:
QString getStopTimeStamp() const;
QString getStartTimeStamp() const;
QString getCurrentCodecName();
bool isSecure();
bool isConference() const;
void setConference(bool value);
......
......@@ -87,11 +87,11 @@ bool CallModel::dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData
QByteArray encodedData = data->data(MIME_CALLID);
if (!QString(encodedData).isEmpty()) {
clearArtefact(privateCallList_callId[encodedData]->currentItem);
clearArtefact(privateCallList_callId[encodedData]->treeItem);
if (!parent) {
qDebug() << "Call dropped on empty space";
if (privateCallList_callId[encodedData]->currentItem->parent())
if (privateCallList_callId[encodedData]->treeItem->parent())
detachParticipant(privateCallList_callId[encodedData]->call_real);
else
qDebug() << "The call is not in a conversation (doing nothing)";
......@@ -106,12 +106,12 @@ bool CallModel::dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData
if ((parent->parent()) || (parent->childCount())) {
qDebug() << "Call dropped on a conference";
if ((privateCallList_callId[encodedData]->currentItem->childCount()) && (!parent->childCount())) {
if ((privateCallList_callId[encodedData]->treeItem->childCount()) && (!parent->childCount())) {
qDebug() << "Conference dropped on a call (doing nothing)";
return true;
}
QTreeWidgetItem* call1 = privateCallList_callId[encodedData]->currentItem;
QTreeWidgetItem* call1 = privateCallList_callId[encodedData]->treeItem;
QTreeWidgetItem* call2 = (parent->parent())?parent->parent():parent;
if (call1->parent()) {
......@@ -119,7 +119,7 @@ bool CallModel::dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData
qDebug() << "Call dropped on it's own conversation (doing nothing)";
return true;
}
else if (privateCallList_item[call1]->currentItem->childCount()) {
else if (privateCallList_item[call1]->treeItem->childCount()) {
qDebug() << "Merging two conferences";
mergeConferences(privateCallList_item[call1]->call_real,privateCallList_item[call2]->call_real);
}
......@@ -208,8 +208,8 @@ void CallModel::setTitle(QString title)
///Select an item in the TreeView
bool CallModel::selectItem(Call* item)
{
if (privateCallList_call[item]->currentItem) {
setCurrentItem(privateCallList_call[item]->currentItem);
if (privateCallList_call[item]->treeItem) {
setCurrentItem(privateCallList_call[item]->treeItem);
return true;
}
else
......@@ -228,8 +228,8 @@ Call* CallModel::getCurrentItem()
///Remove a TreeView item and delete it
bool CallModel::removeItem(Call* item)
{
if (indexOfTopLevelItem(privateCallList_call[item]->currentItem) != -1) {//TODO To remove once safe
removeItemWidget(privateCallList_call[item]->currentItem,0);
if (indexOfTopLevelItem(privateCallList_call[item]->treeItem) != -1) {//TODO To remove once safe
removeItemWidget(privateCallList_call[item]->treeItem,0);
return true;
}
else
......@@ -245,7 +245,7 @@ QWidget* CallModel::getWidget()
///Convenience wrapper around extractItem(QTreeWidgetItem*)
QTreeWidgetItem* CallModel::extractItem(QString callId)
{
QTreeWidgetItem* currentItem = privateCallList_callId[callId]->currentItem;
QTreeWidgetItem* currentItem = privateCallList_callId[callId]->treeItem;
return extractItem(currentItem);
}
......@@ -271,7 +271,7 @@ QTreeWidgetItem* CallModel::extractItem(QTreeWidgetItem* item)
///Convenience wrapper around insertItem(QTreeWidgetItem*, QTreeWidgetItem*)
CallTreeItem* CallModel::insertItem(QTreeWidgetItem* item, Call* parent)
{
return insertItem(item,(parent)?privateCallList_call[parent]->currentItem:0);
return insertItem(item,(parent)?privateCallList_call[parent]->treeItem:0);
}
///Insert a TreeView item in the TreeView as child of parent or as a top level item, also restore the item Widget
......@@ -301,13 +301,13 @@ CallTreeItem* CallModel::insertItem(QTreeWidgetItem* item, QTreeWidgetItem* pare
///Remove a call from the interface
void CallModel::destroyCall(Call* toDestroy)
{
if (privateCallList_call[toDestroy]->currentItem == currentItem())
if (privateCallList_call[toDestroy]->treeItem == currentItem())
setCurrentItem(0);
if (indexOfTopLevelItem(privateCallList_call[toDestroy]->currentItem) != -1)
takeTopLevelItem(indexOfTopLevelItem(privateCallList_call[toDestroy]->currentItem));
else if (privateCallList_call[toDestroy]->currentItem->parent())
privateCallList_call[toDestroy]->currentItem->parent()->removeChild(privateCallList_call[toDestroy]->currentItem);
if (indexOfTopLevelItem(privateCallList_call[toDestroy]->treeItem) != -1)
takeTopLevelItem(indexOfTopLevelItem(privateCallList_call[toDestroy]->treeItem));
else if (privateCallList_call[toDestroy]->treeItem->parent())
privateCallList_call[toDestroy]->treeItem->parent()->removeChild(privateCallList_call[toDestroy]->treeItem);
else
qDebug() << "Call not found";
}
......@@ -333,7 +333,7 @@ Call* CallModel::addCall(Call* call, Call* parent)
aNewStruct->call_real = call;
QTreeWidgetItem* callItem = new QTreeWidgetItem();
aNewStruct->currentItem = callItem;
aNewStruct->treeItem = callItem;
aNewStruct->conference = false;
privateCallList_item[callItem] = aNewStruct;
......@@ -419,7 +419,7 @@ Call* CallModel::addConference(const QString & confID)
aNewStruct->conference = true;
QTreeWidgetItem* confItem = new QTreeWidgetItem();
aNewStruct->currentItem = confItem;
aNewStruct->treeItem = confItem;
privateCallList_item[confItem] = aNewStruct;
privateCallList_call[newConf] = aNewStruct;
......@@ -431,7 +431,7 @@ Call* CallModel::addConference(const QString & confID)
setCurrentItem(confItem);
foreach (QString callId, callList) {
insertItem(extractItem(privateCallList_callId[callId]->currentItem),confItem);
insertItem(extractItem(privateCallList_callId[callId]->treeItem),confItem);
}
return newConf;
}
......@@ -487,7 +487,7 @@ void CallModel::conferenceChanged(const QString &confId, const QString &state)
return;
}
if (!privateCallList_callId[confId]->currentItem) {
if (!privateCallList_callId[confId]->treeItem) {
qDebug() << "The conference item does not exist";
return;
}
......@@ -495,32 +495,32 @@ void CallModel::conferenceChanged(const QString &confId, const QString &state)
QList<QTreeWidgetItem*> buffer;
foreach (QString callId, callList) {
if (privateCallList_callId[callId]) {
QTreeWidgetItem* item3 = extractItem(privateCallList_callId[callId]->currentItem);
insertItem(item3, privateCallList_callId[confId]->currentItem);
buffer << privateCallList_callId[callId]->currentItem;
QTreeWidgetItem* item3 = extractItem(privateCallList_callId[callId]->treeItem);
insertItem(item3, privateCallList_callId[confId]->treeItem);
buffer << privateCallList_callId[callId]->treeItem;
}
else
qDebug() << "Call " << callId << " does not exist";
}
for (int j =0; j < privateCallList_callId[confId]->currentItem->childCount();j++) {
if (buffer.indexOf(privateCallList_callId[confId]->currentItem->child(j)) == -1)
insertItem(extractItem(privateCallList_callId[confId]->currentItem->child(j)));
for (int j =0; j < privateCallList_callId[confId]->treeItem->childCount();j++) {
if (buffer.indexOf(privateCallList_callId[confId]->treeItem->child(j)) == -1)
insertItem(extractItem(privateCallList_callId[confId]->treeItem->child(j)));
}
}
///Remove a conference from the model and the TreeView
void CallModel::conferenceRemoved(const QString &confId)
{
qDebug() << "Ending conversation containing " << privateCallList_callId[confId]->currentItem->childCount() << " participants";
for (int j =0; j < privateCallList_callId[confId]->currentItem->childCount();j++) {
insertItem(extractItem(privateCallList_callId[confId]->currentItem->child(j)));
qDebug() << "Ending conversation containing " << privateCallList_callId[confId]->treeItem->childCount() << " participants";
for (int j =0; j < privateCallList_callId[confId]->treeItem->childCount();j++) {
insertItem(extractItem(privateCallList_callId[confId]->treeItem->child(j)));
}
privateCallList_call.remove(privateCallList_callId[confId]->call_real);
privateCallList_widget.remove(privateCallList_callId[confId]->call);
privateCallList_item.remove(privateCallList_callId[confId]->currentItem);
takeTopLevelItem(indexOfTopLevelItem(privateCallList_callId[confId]->currentItem));
delete privateCallList_callId[confId]->currentItem;
privateCallList_item.remove(privateCallList_callId[confId]->treeItem);
takeTopLevelItem(indexOfTopLevelItem(privateCallList_callId[confId]->treeItem));
delete privateCallList_callId[confId]->treeItem;
privateCallList_callId.remove(confId);
}
......@@ -546,4 +546,4 @@ MapStringString CallModel::getHistoryMap()
void CallModel::clearHistory()
{
historyCalls.clear();
}
\ No newline at end of file
}
......@@ -25,10 +25,12 @@
#include <QHash>
#include <QTreeWidgetItem>
#include <QVector>
#include <QTreeWidget>
#include <QItemDelegate>
#include <QDragEnterEvent>
#include "CallTreeItem.h"
#include "Call.h"
#include "CallTreeWidget.h"
#include "dbus/metatypes.h"
/** Note from the author: It was previously done by a QAbstractModel + QTreeView, but the sip-call use case is incompatible
......@@ -44,7 +46,7 @@ struct InternalCallModelStruct {
InternalCallModelStruct* parent;
CallTreeItem* call;
Call* call_real;
QTreeWidgetItem* currentItem;
QTreeWidgetItem* treeItem;
QList<InternalCallModelStruct*> children;
bool conference;
};
......@@ -66,7 +68,8 @@ class CallModel : private QTreeWidget {
public:
enum ModelType {
ActiveCall,
History
History,
Address
};
CallModel(ModelType type, QWidget* parent =0);
......@@ -120,4 +123,4 @@ class CallModel : private QTreeWidget {
public slots:
void clearHistory();
};
#endif
\ No newline at end of file
#endif
......@@ -72,19 +72,21 @@ void CallTreeItem::setCall(Call *call)
labelCallNumber2 = new QLabel(itemCall->getPeerPhoneNumber());
labelTransferPrefix = new QLabel(i18n("Transfer to : "));
labelTransferNumber = new QLabel();
QSpacerItem * verticalSpacer = new QSpacerItem(16777215, 20, QSizePolicy::Expanding, QSizePolicy::Expanding);
QSpacerItem* verticalSpacer = new QSpacerItem(16777215, 20, QSizePolicy::Expanding, QSizePolicy::Expanding);
QHBoxLayout * mainLayout = new QHBoxLayout();
QHBoxLayout* mainLayout = new QHBoxLayout();
mainLayout->setContentsMargins ( 3, 1, 2, 1);
labelCodec = new QLabel(this);
labelCodec->setText("Codec: "+itemCall->getCurrentCodecName());
//labelCodec->setText("Codec: "+itemCall->getCurrentCodecName());
labelSecure = new QLabel(this);
mainLayout->setSpacing(4);
QVBoxLayout * descr = new QVBoxLayout();
QVBoxLayout* descr = new QVBoxLayout();
descr->setMargin(1);
descr->setSpacing(1);
QHBoxLayout * transfer = new QHBoxLayout();
QHBoxLayout* transfer = new QHBoxLayout();
transfer->setMargin(0);
transfer->setSpacing(0);
mainLayout->addWidget(labelIcon);
......@@ -95,6 +97,7 @@ void CallTreeItem::setCall(Call *call)
}
descr->addWidget(labelCallNumber2);
descr->addWidget(labelSecure);
descr->addWidget(labelCodec);
transfer->addWidget(labelTransferPrefix);
transfer->addWidget(labelTransferNumber);
......@@ -136,6 +139,11 @@ void CallTreeItem::updated()
if(state == CALL_STATE_DIALING) {
labelCallNumber2->setText(itemCall->getCallNumber());
}
else {
labelCodec->setText("Codec: "+itemCall->getCurrentCodecName());
if (itemCall->isSecure())
labelSecure->setText("⚷");
}
}
else {
qDebug() << "Updating item of call of state OVER. Doing nothing.";
......@@ -153,4 +161,4 @@ void CallTreeItem::setConference(bool value) {
bool CallTreeItem::isConference() {
return conference;
}
\ No newline at end of file
......@@ -63,6 +63,7 @@ class CallTreeItem : public QWidget
QLabel* labelTransferPrefix;
QLabel* labelTransferNumber;
QLabel* labelCodec;
QLabel* labelSecure;
QWidget* historyItemWidget;
QLabel* labelHistoryIcon;
......
......@@ -35,7 +35,7 @@
#include <QActionGroup>
// #include "ui_SFLPhoneView_base.h"
#include "CallList.h"
//#include "CallList.h"
#include "AccountWizard.h"
#include "Contact.h"
#include "SFLPhoneView.h"
......
......@@ -41,7 +41,6 @@
#include "sflphone_const.h"
#include "conf/ConfigurationSkeleton.h"
#include "configurationmanager_interface_singleton.h"
#include "calllist_interface_singleton.h"
#include "callmanager_interface_singleton.h"
#include "instance_interface_singleton.h"
#include "ActionSetAccountFirst.h"
......@@ -49,7 +48,6 @@
#include "SFLPhone.h"
#include "typedefs.h"
#include "Dialpad.h"
#include "CallTreeView.h"
#include "CallTreeItem.h"
......@@ -62,7 +60,8 @@ QString SFLPhoneView::priorAccountId;
SFLPhoneView::SFLPhoneView(QWidget *parent)
: QWidget(parent),
callTreeModel(CallModel::ActiveCall),
historyTreeModel(CallModel::History)
historyTreeModel(CallModel::History),
addressBookTree(CallModel::Address)
{
setupUi(this);
......@@ -308,7 +307,8 @@ void SFLPhoneView::backspace()
else {
call->backspaceItemText();
if(call->getState() == CALL_STATE_OVER) {
callTreeModel.removeItem(callTreeModel.getCurrentItem());
if (callTreeModel.getCurrentItem())
callTreeModel.removeItem(callTreeModel.getCurrentItem());
if(call->getHistoryState() != NONE) {
//historyTree->insert(call);
......
......@@ -32,10 +32,10 @@
#include "ui_SFLPhoneView_base.h"
#include "conf/ConfigurationDialog.h"
#include "CallList.h"
//#include "CallList.h"
#include "CallTreeItem.h"
#include "CallTreeView.h"
#include "CallTreeWidget.h"
//#include "CallTreeView.h"
//#include "CallTreeWidget.h"
#include "AccountWizard.h"
#include "Contact.h"
#include "AccountList.h"
......@@ -67,7 +67,7 @@ private:
AccountWizard * wizard;
//List of calls in the window, and past ones.
//Handles both current calls (dialing, ringing...) and history.
CallList * callList;
//CallList * callList;
QErrorMessage * errorWindow;
//Account used prioritary if defined and registered. If not, the first registered account in accountList is used.
static QString priorAccountId;
......@@ -144,7 +144,7 @@ public:
//CallTreeView *addressBookTree;
//CallTreeWidget *callTree;
//CallTreeWidget *historyTree;
CallTreeWidget *addressBookTree;
CallModel addressBookTree;
CallModel callTreeModel;
CallModel historyTreeModel;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment