1
#include "sflphonEngine.h"
3
#include <Plasma/DataContainer>
5
#include "../../src/lib/Call.h"
6
#include "../../src/lib/dbus/metatypes.h"
7
#include "../../src/lib/instance_interface_singleton.h"
8
#include "../../src/lib/configurationmanager_interface_singleton.h"
9
#include "../../src/lib/callmanager_interface_singleton.h"
10
#include "../../src/lib/sflphone_const.h"
12
SFLPhoneEngine::SFLPhoneEngine(QObject* parent, const QVariantList& args)
13
: Plasma::DataEngine(parent, args)
16
m_pModel = new CallModelConvenience(CallModelConvenience::ActiveCall);
18
m_pModel->initHistory();
20
CallManagerInterface& callManager = CallManagerInterfaceSingleton::getInstance();
22
connect(m_pModel , SIGNAL( callStateChanged(Call*)) , this , SLOT(callStateChangedSignal(Call*) ));
23
connect(&callManager , SIGNAL( incomingCall(Call*)) , this , SLOT(incomingCallSignal(Call*) ));
24
connect(&callManager , SIGNAL( conferenceCreated(Call*)) , this , SLOT(conferenceCreatedSignal(Call*) ));
25
connect(&callManager , SIGNAL( conferenceChanged(Call*)) , this , SLOT(conferenceChangedSignal(Call*) ));
28
bool SFLPhoneEngine::sourceRequestEvent(const QString &name)
30
if ( name == "history" ) {
33
else if ( name == "calls" ) {
36
else if ( name == "conferences" ) {
37
updateConferenceList();
39
else if ( name == "info" ) {
42
return true;//updateSourceEvent(name);
45
bool SFLPhoneEngine::updateSourceEvent(const QString &name)
51
QStringList SFLPhoneEngine::sources() const {
53
toReturn << "calls" << "history" << "conferences" << "info";
57
QString SFLPhoneEngine::getCallStateName(call_state state)
59
if (state == CALL_STATE_INCOMING) {
60
return I18N_NOOP("Ringing (in)");
61
} else if (state == CALL_STATE_RINGING) {
62
return I18N_NOOP("Ringing (out)");
63
} else if (state == CALL_STATE_CURRENT) {
64
return I18N_NOOP("Talking");
65
} else if (state == CALL_STATE_DIALING) {
66
return I18N_NOOP("Dialing");
67
} else if (state == CALL_STATE_HOLD) {
68
return I18N_NOOP("Hold");
69
} else if (state == CALL_STATE_FAILURE) {
70
return I18N_NOOP("Failed");
71
} else if (state == CALL_STATE_BUSY) {
72
return I18N_NOOP("Busy");
73
} else if (state == CALL_STATE_TRANSFER) {
74
return I18N_NOOP("Transfer");
75
} else if (state == CALL_STATE_TRANSF_HOLD) {
76
return I18N_NOOP("Transfer hold");
77
} else if (state == CALL_STATE_OVER) {
78
return I18N_NOOP("Over");
79
} else if (state == CALL_STATE_ERROR) {
80
return I18N_NOOP("Error");
85
void SFLPhoneEngine::updateHistory()
87
foreach (Call* oldCall, m_pModel->getHistory()) {
88
historyCall[oldCall->getCallId()][ "Name" ] = oldCall->getPeerName();
89
historyCall[oldCall->getCallId()][ "Number" ] = oldCall->getPeerPhoneNumber();
90
historyCall[oldCall->getCallId()][ "Date" ] = oldCall->getStopTimeStamp();
91
setData("history", I18N_NOOP(oldCall->getCallId()), historyCall[oldCall->getCallId()]);
95
void SFLPhoneEngine::updateCallList()
97
foreach (Call* call, m_pModel->getCalls()) {
98
if ((!m_pModel->isConference(call)) && (call->getState() != CALL_STATE_OVER)) {
99
currentCall[call->getCallId()][ "Name" ] = call->getPeerName();
100
currentCall[call->getCallId()][ "Number" ] = call->getPeerPhoneNumber();
101
currentCall[call->getCallId()][ "StateName" ] = getCallStateName(call->getState());
102
currentCall[call->getCallId()][ "State" ] = call->getState();
103
setData("calls", call->getCallId(), currentCall[call->getCallId()]);
108
void SFLPhoneEngine::updateConferenceList()
110
foreach (Call* call, m_pModel->getCalls()) {
111
if (m_pModel->isConference(call)) {
112
CallManagerInterface& callManager = CallManagerInterfaceSingleton::getInstance();
113
currentConferences[call->getConfId()] = callManager.getParticipantList(call->getConfId());
114
setData("conferences", call->getConfId(), currentConferences[call->getConfId()]);
119
void SFLPhoneEngine::updateContacts()
124
void SFLPhoneEngine::updateInfo()
126
qDebug() << "Currentaccount: " << m_pModel->getCurrentAccountId();
127
setData("info", I18N_NOOP("Account"), m_pModel->getCurrentAccountId());
130
void SFLPhoneEngine::callStateChangedSignal(Call* call)
136
void SFLPhoneEngine::incomingCallSignal(Call* call)
142
void SFLPhoneEngine::conferenceCreatedSignal(Call* conf)
145
updateConferenceList();
148
void SFLPhoneEngine::conferenceChangedSignal(Call* conf)
151
updateConferenceList();
154
void SFLPhoneEngine::incomingMessageSignal(const QString& accountId, const QString& message)
161
void SFLPhoneEngine::voiceMailNotifySignal(const QString& accountId, int count)
168
void SFLPhoneEngine::accountChanged()
173
K_EXPORT_PLASMA_DATAENGINE(sflphone, SFLPhoneEngine)