1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#include "manager.h"
#include <QDebug>
Manager::Manager(watch::WatchConnector *watch, VoiceCallManager *voice) :
QObject(0), watch(watch), voice(voice)
{
connect(voice, SIGNAL(activeVoiceCallChanged()), SLOT(onActiveVoiceCallChanged()));
connect(voice, SIGNAL(error(const QString &)), SLOT(onVoiceError(const QString &)));
// Watch instantiated hangup, follow the orders
connect(watch, SIGNAL(hangup()), SLOT(hangupAll()));
if (btDevice.isValid()) {
qDebug() << "BT local name:" << btDevice.name();
}
}
void Manager::onActiveVoiceCallChanged()
{
qDebug() << "Manager::onActiveVoiceCallChanged()";
VoiceCallHandler* handler = voice->activeVoiceCall();
if (handler) {
connect(handler, SIGNAL(statusChanged()), SLOT(onActiveVoiceCallStatusChanged()));
return;
}
}
void Manager::onActiveVoiceCallStatusChanged()
{
VoiceCallHandler* handler = voice->activeVoiceCall();
if (!handler) {
qWarning() << "ActiveVoiceCallStatusChanged but no activeVoiceCall??";
return;
}
qDebug() << "handlerId:" << handler->handlerId()
<< "providerId:" << handler->providerId()
<< "status:" << handler->status()
<< "statusText:" << handler->statusText()
<< "lineId:" << handler->lineId()
<< "incoming:" << handler->isIncoming();
if (!watch->isConnected()) {
qDebug() << "Watch is not connected";
return;
}
switch ((VoiceCallHandler::VoiceCallStatus)handler->status()) {
case VoiceCallHandler::STATUS_ALERTING:
case VoiceCallHandler::STATUS_DIALING:
qDebug() << "Tell outgoing:" << handler->lineId();
watch->ring("+48123123123", "person", false);
break;
case VoiceCallHandler::STATUS_INCOMING:
case VoiceCallHandler::STATUS_WAITING:
qDebug() << "Tell incoming:" << handler->lineId();
watch->ring("+48123123123", "person");
break;
case VoiceCallHandler::STATUS_NULL:
case VoiceCallHandler::STATUS_DISCONNECTED:
qDebug() << "Endphone";
watch->endPhoneCall();
break;
case VoiceCallHandler::STATUS_ACTIVE:
qDebug() << "Startphone";
watch->startPhoneCall();
break;
case VoiceCallHandler::STATUS_HELD:
break;
}
}
void Manager::onVoiceError(const QString &message)
{
qWarning() << "Error: " << message;
}
void Manager::hangupAll()
{
foreach (VoiceCallHandler* handler, voice->voiceCalls()) {
handler->hangup();
}
}
|