From 329879d09e290ee25f3d61378c02632ef44b0c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Quentin?= <jquentin@jquentin-laptop-kub2.(none)> Date: Tue, 17 Mar 2009 10:34:51 -0400 Subject: [PATCH] commit before merge asavard for isRecording. --- sflphone_kde/Call.cpp | 97 ++++++++++++++++++++----- sflphone_kde/Call.h | 32 +++++--- sflphone_kde/CallList.cpp | 18 ++++- sflphone_kde/CallList.h | 6 +- sflphone_kde/ConfigDialog.ui | 16 ---- sflphone_kde/SFLPhone.cpp | 16 +++- sflphone_kde/SFLPhone.h | 2 - sflphone_kde/callmanager-introspec.xml | 4 + sflphone_kde/callmanager_interface.cpp | 2 +- sflphone_kde/callmanager_interface_p.h | 13 +++- sflphone_kde/sflphone_const.h | 9 ++- sflphone_kde/sflphone_kde.kdevelop.pcs | Bin 180763 -> 187789 bytes sflphone_kde/sflphone_kde.kdevses | 52 ++++++++----- sflphone_kde/templates/cpp | 7 +- sflphone_kde/templates/h | 7 +- 15 files changed, 198 insertions(+), 83 deletions(-) diff --git a/sflphone_kde/Call.cpp b/sflphone_kde/Call.cpp index 5ef9f7fe04..a726e00654 100644 --- a/sflphone_kde/Call.cpp +++ b/sflphone_kde/Call.cpp @@ -3,22 +3,38 @@ #include "callmanager_interface_p.h" #include "callmanager_interface_singleton.h" #include "SFLPhone.h" +#include "sflphone_const.h" - -const call_state Call::stateMap [11][5] = +const call_state Call::stateActionMap [11][5] = { // ACCEPT REFUSE TRANSFER HOLD RECORD -/*INCOMING */ {CALL_STATE_CURRENT , CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_INCOMING }, -/*RINGING */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_RINGING }, -/*CURRENT */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSFER , CALL_STATE_HOLD , CALL_STATE_CURRENT }, -/*DIALING */ {CALL_STATE_RINGING , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_DIALING }, -/*HOLD */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSFER_HOLD , CALL_STATE_CURRENT , CALL_STATE_HOLD }, -/*FAILURE */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, -/*BUSY */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, -/*TRANSFER */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_CURRENT , CALL_STATE_TRANSFER_HOLD , CALL_STATE_TRANSFER }, -/*TRANSFER_HOLD */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_TRANSFER , CALL_STATE_TRANSFER_HOLD }, -/*OVER */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, -/*ERROR */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR } +/*INCOMING */ {CALL_STATE_CURRENT , CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_INCOMING }, +/*RINGING */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_RINGING }, +/*CURRENT */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSFER , CALL_STATE_HOLD , CALL_STATE_CURRENT }, +/*DIALING */ {CALL_STATE_RINGING , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_DIALING }, +/*HOLD */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSF_HOLD , CALL_STATE_CURRENT , CALL_STATE_HOLD }, +/*FAILURE */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*BUSY */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*TRANSFER */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_CURRENT , CALL_STATE_TRANSF_HOLD , CALL_STATE_TRANSFER }, +/*TRANSF_HOLD */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_TRANSFER , CALL_STATE_TRANSF_HOLD }, +/*OVER */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*ERROR */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR } +}; + +const call_state Call::stateChangedMap [11][6] = +{ +// RINGING CURRENT BUSY HOLD HUNGUP FAILURE +/*INCOMING */ {CALL_STATE_CURRENT , CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_INCOMING }, +/*RINGING */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_RINGING }, +/*CURRENT */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSFER , CALL_STATE_HOLD , CALL_STATE_CURRENT }, +/*DIALING */ {CALL_STATE_RINGING , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_DIALING }, +/*HOLD */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_TRANSF_HOLD , CALL_STATE_CURRENT , CALL_STATE_HOLD }, +/*FAILURE */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*BUSY */ {CALL_STATE_ERROR , CALL_STATE_OVER , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*TRANSFER */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_CURRENT , CALL_STATE_TRANSF_HOLD , CALL_STATE_TRANSFER }, +/*TRANSF_HOLD */ {CALL_STATE_OVER , CALL_STATE_OVER , CALL_STATE_HOLD , CALL_STATE_TRANSFER , CALL_STATE_TRANSF_HOLD }, +/*OVER */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR }, +/*ERROR */ {CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR , CALL_STATE_ERROR } }; const function Call::functionMap[11][5] = @@ -46,11 +62,11 @@ Call::Call(call_state startState, QString callId) this->currentState = startState; } -Call::Call(call_state startState, QString callId, QString from, Account & account) +Call::Call(call_state startState, QString callId, QString from, QString account) { this->callId = callId; this->item = new QListWidgetItem(from); - this->account = & account; + this->account = account; this->recording = false; this->currentState = startState; } @@ -66,7 +82,7 @@ Call * Call::buildDialingCall(QString callId) return call; } -Call * Call::buildIncomingCall(QString callId, QString from, Account & account) +Call * Call::buildIncomingCall(const QString & callId, const QString & from, const QString & account) { Call * call = new Call(CALL_STATE_INCOMING, callId, from, account); return call; @@ -82,8 +98,42 @@ call_state Call::getState() const return currentState; } +call_state Call::stateChanged(const QString & newState) +{ + if(newState == QString(CALL_STATE_CHANGE_HUNG_UP)) + { + this->currentState = CALL_STATE_OVER; + } + else if(newState == QString(CALL_STATE_CHANGE_HOLD)) + { + this->currentState = CALL_STATE_HOLD; + } + else if(newState == QString(CALL_STATE_CHANGE_UNHOLD_CURRENT)) + { + this->currentState = CALL_STATE_CURRENT; + } + else if(newState == QString(CALL_STATE_CHANGE_CURRENT)) + { + this->currentState = CALL_STATE_CURRENT; + } + else if(newState == QString(CALL_STATE_CHANGE_RINGING)) + { + this->currentState = CALL_STATE_RINGING; + } + else if(newState == QString(CALL_STATE_CHANGE_UNHOLD_RECORD)) + { + this->currentState = CALL_STATE_CURRENT; + this->recording = true; + } + return this->currentState; +} + call_state Call::action(call_action action, QString number) { + if(action == CALL_ACTION_STATE_CHANGED) + { + return stateChanged(number); + } call_state previousState = currentState; //execute the action associated with this transition (this->*(functionMap[currentState][action]))(number); @@ -125,6 +175,8 @@ void Call::accept(QString number) CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); qDebug() << "Accepting call. callId : " << callId; callManager.accept(callId); + this->startTime = & QDateTime::currentDateTime(); + this->historyState = INCOMING; } void Call::refuse(QString number) @@ -132,6 +184,8 @@ void Call::refuse(QString number) CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); qDebug() << "Refusing call. callId : " << callId; callManager.refuse(callId); + this->startTime = & QDateTime::currentDateTime(); + this->historyState = MISSED; } void Call::acceptTransf(QString number) @@ -140,6 +194,7 @@ void Call::acceptTransf(QString number) qDebug() << "Accepting call and transfering it to number : " << number << ". callId : " << callId; callManager.accept(callId); callManager.transfert(callId, number); + //this->historyState = TRANSFERED; } void Call::acceptHold(QString number) @@ -148,6 +203,7 @@ void Call::acceptHold(QString number) qDebug() << "Accepting call and holding it. callId : " << callId; callManager.accept(callId); callManager.hold(callId); + this->historyState = INCOMING; } void Call::hangUp(QString number) @@ -167,9 +223,10 @@ void Call::hold(QString number) void Call::call(QString number) { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); - QString account = SFLPhone::firstAccount(); - qDebug() << "Calling " << number << " with account " << account << ". callId : " << callId; + this->account = SFLPhone::firstAccount(); + qDebug() << "Calling " << number << " with account " << this->account << ". callId : " << callId; callManager.placeCall(account, callId, number); + this->historyState = OUTGOING; } void Call::transfer(QString number) @@ -178,6 +235,7 @@ void Call::transfer(QString number) QString account = SFLPhone::firstAccount(); qDebug() << "Transfering call to number : " << number << ". callId : " << callId; callManager.transfert(callId, number); + this->stopTime = & QDateTime::currentDateTime(); } void Call::unhold(QString number) @@ -197,6 +255,7 @@ void Call::setRecord(QString number) { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); qDebug() << "Setting record for call. callId : " << callId; - callManager.unhold(callId); + callManager.setRecording(callId); + recording = !recording; } diff --git a/sflphone_kde/Call.h b/sflphone_kde/Call.h index cdbb3d0667..0525371b5b 100644 --- a/sflphone_kde/Call.h +++ b/sflphone_kde/Call.h @@ -25,7 +25,7 @@ typedef enum /** Call is being transfered. During this state, the user can enter the new number. */ CALL_STATE_TRANSFER, /** Call is on hold for transfer */ - CALL_STATE_TRANSFER_HOLD, + CALL_STATE_TRANSF_HOLD, /** Call is over and should not be used */ CALL_STATE_OVER, /** This state should never be reached */ @@ -46,9 +46,23 @@ typedef enum /** Blue-green button, hold or unhold the call */ CALL_ACTION_HOLD, /** Record button, enable or disable recording */ - CALL_ACTION_RECORD + CALL_ACTION_RECORD, + /** Other user state changes */ + CALL_ACTION_STATE_CHANGED } call_action; +/** + * @enum history_state + * This enum have all the state a call can take in the history + */ +typedef enum +{ + NONE, + INCOMING, + OUTGOING, + MISSED +} history_state; + class Call; @@ -59,15 +73,14 @@ class Call private: //Call attributes - Account * account; + QString account; QString callId; QString from; QString to; -// HistoryState * historyState; - QTime start; - QTime stop; + history_state historyState; + QDateTime * startTime; + QDateTime * stopTime; QListWidgetItem * item; - //Automate * automate; //Automate attributes static const call_state stateMap [11][5]; @@ -76,7 +89,7 @@ private: bool recording; Call(call_state startState, QString callId); - Call(call_state startState, QString callId, QString from, Account & account); + Call(call_state startState, QString callId, QString from, QString account); //Automate functions void nothing(QString number); @@ -96,10 +109,11 @@ public: ~Call(); static Call * buildDialingCall(QString callId); - static Call * buildIncomingCall(QString callId, QString from, Account & account); + static Call * buildIncomingCall(const QString & callId, const QString & from, const QString & account); QListWidgetItem * getItem(); call_state getState() const; QString getCallId(); + call_state stateChanged(const QString & newState); call_state action(call_action action, QString number = NULL); call_state getCurrentState() const; diff --git a/sflphone_kde/CallList.cpp b/sflphone_kde/CallList.cpp index d4461fdb4c..ac1023e509 100644 --- a/sflphone_kde/CallList.cpp +++ b/sflphone_kde/CallList.cpp @@ -7,7 +7,7 @@ CallList::CallList() } -Call * CallList::operator[](QListWidgetItem * item) +Call * CallList::operator[](const QListWidgetItem * item) { for(int i = 0 ; i < size() ; i++) { @@ -19,9 +19,21 @@ Call * CallList::operator[](QListWidgetItem * item) return NULL; } +Call * CallList::operator[](const QString & callId) +{ + for(int i = 0 ; i < size() ; i++) + { + if ((*calls)[i]->getCallId() == callId) + { + return (*calls)[i]; + } + } + return NULL; +} + QString CallList::getAndIncCallId() { - QString res = QString::number(callIdCpt); + QString res = QString::number(callIdCpt++); return res; } @@ -38,7 +50,7 @@ QListWidgetItem * CallList::addDialingCall() return call->getItem(); } -QListWidgetItem * CallList::addIncomingCall(QString callId, QString from, Account & account) +QListWidgetItem * CallList::addIncomingCall(const QString & callId, const QString & from, const QString & account) { Call * call = Call::buildIncomingCall(callId, from, account); calls->append(call); diff --git a/sflphone_kde/CallList.h b/sflphone_kde/CallList.h index 7f43e6dc6d..07b646ae1b 100644 --- a/sflphone_kde/CallList.h +++ b/sflphone_kde/CallList.h @@ -14,10 +14,12 @@ public: CallList(); ~CallList(); - Call * operator[](QListWidgetItem * item); + Call * operator[](const QListWidgetItem * item); + Call * operator[](const QString & callId); + void remove(Call * call); QListWidgetItem * addDialingCall(); - QListWidgetItem * addIncomingCall(QString callId, QString from, Account & account); + QListWidgetItem * addIncomingCall(const QString & callId, const QString & from, const QString & account); QString getAndIncCallId(); int size(); diff --git a/sflphone_kde/ConfigDialog.ui b/sflphone_kde/ConfigDialog.ui index 1cb26c092d..520fe9a465 100644 --- a/sflphone_kde/ConfigDialog.ui +++ b/sflphone_kde/ConfigDialog.ui @@ -124,37 +124,21 @@ <property name="text" > <string>Général</string> </property> - <property name="icon" > - <iconset> - <normaloff>:/Images/sflphone.png</normaloff>:/Images/sflphone.png</iconset> - </property> </item> <item> <property name="text" > <string>Affichage</string> </property> - <property name="icon" > - <iconset> - <normaloff>:/Images/sflphone.png</normaloff>:/Images/sflphone.png</iconset> - </property> </item> <item> <property name="text" > <string>Comptes</string> </property> - <property name="icon" > - <iconset> - <normaloff>:/Images/stock_person.svg</normaloff>:/Images/stock_person.svg</iconset> - </property> </item> <item> <property name="text" > <string>Audio</string> </property> - <property name="icon" > - <iconset> - <normaloff>:/Images/icon_volume_off.svg</normaloff>:/Images/icon_volume_off.svg</iconset> - </property> </item> </widget> </item> diff --git a/sflphone_kde/SFLPhone.cpp b/sflphone_kde/SFLPhone.cpp index 95cab2bbc4..8d8d23d320 100644 --- a/sflphone_kde/SFLPhone.cpp +++ b/sflphone_kde/SFLPhone.cpp @@ -87,6 +87,7 @@ void SFLPhone::action(QListWidgetItem * item, call_action action) updateWindowCallState(); } + /******************************************* ******** Update Display Functions ********** *******************************************/ @@ -100,6 +101,7 @@ void SFLPhone::updateWindowCallState() char * iconFile; char * buttonIconFiles[3] = {ICON_CALL, ICON_HANGUP, ICON_HOLD}; bool transfer = false; + bool record = false; if (!item) { @@ -173,7 +175,8 @@ void SFLPhone::updateWindowCallState() break; case CALL_STATE_OVER: qDebug() << "Reached CALL_STATE_OVER. Deleting call " << (*callList)[item]->getCallId(); - delete (*callList)[item]; + //delete (*callList)[item]; + callList->remove((*callList)[item]); return; break; case CALL_STATE_ERROR: @@ -500,17 +503,22 @@ void SFLPhone::on_actionBoite_vocale_triggered() void SFLPhone::on_callStateChanged(const QString &callID, const QString &state) { - qDebug() << "on_callStateChanged !"; + qDebug() << "on_callStateChanged " << callID << " . New state : " << state; + (*callList)[callID]->action(CALL_ACTION_STATE_CHANGED, state); + updateWindowCallState(); } void SFLPhone::on_error(MapStringString details) { - qDebug() << "on_error !"; + qDebug() << "Daemon error : " << details; } -void SFLPhone::on_incomingCall(const QString &accountID, const QString &callID, const QString &from) +void SFLPhone::on_incomingCall(const QString &accountID, const QString & callID, const QString &from) { qDebug() << "Incoming Call !"; + QListWidgetItem * item = callList->addIncomingCall(callID, from, accountID); + listWidget_callList->addItem(item); + listWidget_callList->setCurrentRow(listWidget_callList->count() - 1); } void SFLPhone::on_incomingMessage(const QString &accountID, const QString &message) diff --git a/sflphone_kde/SFLPhone.h b/sflphone_kde/SFLPhone.h index 2502d7bb91..7691fd3e10 100644 --- a/sflphone_kde/SFLPhone.h +++ b/sflphone_kde/SFLPhone.h @@ -49,8 +49,6 @@ private slots: void on_actionBoite_vocale_triggered(); //void on_actionAbout(); - - void on_pushButton_1_clicked(); void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); diff --git a/sflphone_kde/callmanager-introspec.xml b/sflphone_kde/callmanager-introspec.xml index 82e1a36b4e..99069d5a28 100644 --- a/sflphone_kde/callmanager-introspec.xml +++ b/sflphone_kde/callmanager-introspec.xml @@ -56,6 +56,10 @@ <arg type="d" name="value" direction="out"/> </method> + <method name="setRecording"> + <arg type="s" name="callID" direction="in"/> + </method> + <method name="getCallDetails"> <arg type="s" name="callID" direction="in"/> <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/> diff --git a/sflphone_kde/callmanager_interface.cpp b/sflphone_kde/callmanager_interface.cpp index 22eb57bcbd..6b0c117886 100644 --- a/sflphone_kde/callmanager_interface.cpp +++ b/sflphone_kde/callmanager_interface.cpp @@ -1,6 +1,6 @@ /* * This file was generated by dbusxml2cpp version 0.6 - * Command line was: dbusxml2cpp -c CallManagerInterface -p call_manager_interface_p.h:call_manager_interface.cpp -i metatypes.h callmanager-introspec.xml + * Command line was: dbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h callmanager-introspec.xml * * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). * diff --git a/sflphone_kde/callmanager_interface_p.h b/sflphone_kde/callmanager_interface_p.h index 890b62968b..9b46b659ac 100644 --- a/sflphone_kde/callmanager_interface_p.h +++ b/sflphone_kde/callmanager_interface_p.h @@ -1,6 +1,6 @@ /* * This file was generated by dbusxml2cpp version 0.6 - * Command line was: dbusxml2cpp -c CallManagerInterface -p call_manager_interface_p.h:call_manager_interface.cpp -i metatypes.h callmanager-introspec.xml + * Command line was: dbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h callmanager-introspec.xml * * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). * @@ -8,8 +8,8 @@ * Do not edit! All changes made to it will be lost. */ -#ifndef CALL_MANAGER_INTERFACE_P_H_1236370787 -#define CALL_MANAGER_INTERFACE_P_H_1236370787 +#ifndef CALLMANAGER_INTERFACE_P_H_1237229754 +#define CALLMANAGER_INTERFACE_P_H_1237229754 #include <QtCore/QObject> #include <QtCore/QByteArray> @@ -99,6 +99,13 @@ public Q_SLOTS: // METHODS return callWithArgumentList(QDBus::Block, QLatin1String("refuse"), argumentList); } + inline QDBusReply<void> setRecording(const QString &callID) + { + QList<QVariant> argumentList; + argumentList << qVariantFromValue(callID); + return callWithArgumentList(QDBus::Block, QLatin1String("setRecording"), argumentList); + } + inline QDBusReply<void> setVolume(const QString &device, double value) { QList<QVariant> argumentList; diff --git a/sflphone_kde/sflphone_const.h b/sflphone_kde/sflphone_const.h index 6712987d46..8dd14f4f96 100644 --- a/sflphone_kde/sflphone_const.h +++ b/sflphone_kde/sflphone_const.h @@ -48,7 +48,7 @@ #define ICON_FAILURE ":/images/icons/fail.svg" #define ICON_BUSY ":/images/icons/busy.svg" #define ICON_TRANSFER ":/images/icons/transfert.svg" -#define ICON_TRANSFER_HOLD ":/images/icons/transfert.svg" +#define ICON_TRANSF_HOLD ":/images/icons/transfert.svg" #define ICON_CALL ":/images/icons/call.svg" #define ICON_HANGUP ":/images/icons/hang_up.svg" @@ -94,6 +94,13 @@ #define ACCOUNT_STATE_ERROR_CONF_STUN "ERROR_CONF_STUN" #define ACCOUNT_STATE_ERROR_EXIST_STUN "ERROR_EXIST_STUN" +#define CALL_STATE_CHANGE_HUNG_UP "HUNGUP" +#define CALL_STATE_CHANGE_RINGING "RINGING" +#define CALL_STATE_CHANGE_CURRENT "CURRENT" +#define CALL_STATE_CHANGE_HOLD "HOLD" +#define CALL_STATE_CHANGE_BUSY "BUSY" +#define CALL_STATE_CHANGE_FAILURE "FAILURE" + #define MAX_HISTORY_CAPACITY 60 #define CODEC_NAME 0 diff --git a/sflphone_kde/sflphone_kde.kdevelop.pcs b/sflphone_kde/sflphone_kde.kdevelop.pcs index 138d43272375023ed724ff6185edf28f20cf4bae..5cf3843acd6e956ea3ec16566a78099c89fdfe76 100644 GIT binary patch delta 8222 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 S7cg;v`b6^ERhBS4=LG<qvf+{d delta 10612 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 diff --git a/sflphone_kde/sflphone_kde.kdevses b/sflphone_kde/sflphone_kde.kdevses index 4e3fa3cbed..113d271ce9 100644 --- a/sflphone_kde/sflphone_kde.kdevses +++ b/sflphone_kde/sflphone_kde.kdevses @@ -1,31 +1,49 @@ <?xml version = '1.0' encoding = 'UTF-8'?> <!DOCTYPE KDevPrjSession> <KDevPrjSession> - <DocsAndViews NumberOfDocuments="8" > - <Doc0 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.cpp" > - <View0 Encoding="" line="526" Type="Source" /> - </Doc0> - <Doc1 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_singleton.cpp" > + <DocsAndViews NumberOfDocuments="14" > + <Doc0 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_singleton.cpp" > <View0 Encoding="" line="0" Type="Source" /> + </Doc0> + <Doc1 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_p.h" > + <View0 Encoding="" line="140" Type="Source" /> </Doc1> - <Doc2 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_p.h" > - <View0 Encoding="" line="135" Type="Source" /> + <Doc2 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Call.h" > + <View0 Encoding="" line="27" Type="Source" /> </Doc2> - <Doc3 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface.cpp" > - <View0 Encoding="" line="17" Type="Source" /> + <Doc3 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.cpp" > + <View0 Encoding="" line="503" Type="Source" /> </Doc3> - <Doc4 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/main.cpp" > - <View0 Encoding="" line="19" Type="Source" /> + <Doc4 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/sflphone_const.h" > + <View0 Encoding="" line="50" Type="Source" /> </Doc4> - <Doc5 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.h" > - <View0 Encoding="" line="74" Type="Source" /> + <Doc5 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager-introspec.xml" > + <View0 Encoding="" line="80" Type="Source" /> </Doc5> - <Doc6 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager-introspec.xml" > - <View0 Encoding="" line="78" Type="Source" /> + <Doc6 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.h" > + <View0 Encoding="" line="23" Type="Source" /> </Doc6> - <Doc7 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/build/moc_SFLPhone.cpp" > - <View0 Encoding="" line="191" Type="Source" /> + <Doc7 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/CallList.h" > + <View0 Encoding="" line="18" Type="Source" /> </Doc7> + <Doc8 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/CallList.cpp" > + <View0 Encoding="" line="42" Type="Source" /> + </Doc8> + <Doc9 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Call.cpp" > + <View0 Encoding="" line="26" Type="Source" /> + </Doc9> + <Doc10 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Automate.h" > + <View0 Encoding="" line="0" Type="Source" /> + </Doc10> + <Doc11 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Automate.cpp" > + <View0 Encoding="" line="0" Type="Source" /> + </Doc11> + <Doc12 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/templates/cpp" > + <View0 Encoding="" line="17" Type="Source" /> + </Doc12> + <Doc13 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/templates/h" > + <View0 Encoding="" line="7" Type="Source" /> + </Doc13> </DocsAndViews> <pluginList> <kdevdebugger> diff --git a/sflphone_kde/templates/cpp b/sflphone_kde/templates/cpp index 43862e93cc..7f440b5afe 100644 --- a/sflphone_kde/templates/cpp +++ b/sflphone_kde/templates/cpp @@ -1,10 +1,11 @@ /*************************************************************************** - * Copyright (C) 2009 by Jérémy Quentin * - * jeremy.quentin@gmail.com * + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * + * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * diff --git a/sflphone_kde/templates/h b/sflphone_kde/templates/h index 43862e93cc..7f440b5afe 100644 --- a/sflphone_kde/templates/h +++ b/sflphone_kde/templates/h @@ -1,10 +1,11 @@ /*************************************************************************** - * Copyright (C) 2009 by Jérémy Quentin * - * jeremy.quentin@gmail.com * + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * + * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * -- GitLab