2 * hfdialer - Hands Free Voice Call Manager
3 * Copyright (c) 2012, Intel Corporation.
5 * This program is licensed under the terms and conditions of the
6 * Apache License, version 2.0. The full text of the Apache License is at
7 * http://www.apache.org/licenses/LICENSE-2.0
12 #include "dialercontext.h"
14 #define AUTOSELECT OfonoModem::AutomaticSelect
16 #ifndef CONFIG_KEY_TARGET_MODE
17 #define CONFIG_KEY_TARGET_MODE "/apps/dialer/mode"
22 DialerContext *DialerContext::gContext = 0;
24 class DialerContextPrivate
27 DialerContextPrivate()
32 modesKey(CONFIG_KEY_TARGET_MODE)
35 ~DialerContextPrivate() {
38 delete voicemailManager;
46 OfonoModemManager *modemManager;
47 OfonoCallVolume *volumeManager;
48 OfonoMessageWaiting *voicemailManager;
49 CallManager *callManager;
55 DialerContext::DialerContext(QObject *parent)
57 d(new DialerContextPrivate)
60 qFatal(__func__, ": There can be only one!");
62 // Read and configure default runtime modes
63 setModes(d->modesKey.value().toStringList());
65 // Create misc services
66 // TODO: We may not actually need this, since OfonoModem class
67 // allows for "auto selection" and switching of modems
68 d->modemManager = new OfonoModemManager(parent);
69 d->volumeManager = new OfonoCallVolume(AUTOSELECT,"");
70 d->voicemailManager = new OfonoMessageWaiting(AUTOSELECT,"");
71 d->callManager = new CallManager();
73 // OfonoModemManager signals to monitor
74 connect(d->modemManager, SIGNAL(modemAdded(const QString&)),
75 SLOT(onModemAdded(const QString&)));
76 connect(d->modemManager, SIGNAL(modemRemoved(const QString&)),
77 SLOT(onModemRemoved(const QString&)));
79 // CallManager signals to monitor
80 connect(d->callManager, SIGNAL(validityChanged(bool)),
81 SLOT(onCallManagerValidityChanged(bool)));
82 connect(d->callManager, SIGNAL(callsChanged()), SLOT(onCallsChanged()));
84 // OfonoCallVolume signals to monitor
85 connect(d->volumeManager, SIGNAL(validityChanged(bool)),
86 SLOT(onCallVolumeValidityChanged(bool)));
88 // OfonoMessageWaiting signals to monitor
89 connect(d->voicemailManager, SIGNAL(validityChanged(bool)),
90 SLOT(onVoicemailValidityChanged(bool)));
91 connect(d->voicemailManager, SIGNAL(voicemailWaitingChanged(bool)),
92 SLOT(onVoicemailWaitingChanged(bool)));
93 connect(d->voicemailManager, SIGNAL(voicemailMessageCountChanged(int)),
94 SLOT(onVoicemailCountChanged(int)));
96 // GConf Key change signals to monitor
97 connect(&d->modesKey, SIGNAL(valueChanged()), SLOT(onModesChanged()));
100 qDebug() << __func__ << ": Using modem - "
101 << d->callManager->modem()->path();
109 DialerContext::~DialerContext()
116 DialerContext *DialerContext::instance()
119 gContext = new DialerContext();
123 OfonoModemManager* DialerContext::modemManager() const
125 return d->modemManager;
128 OfonoCallVolume* DialerContext::volumeManager() const
130 return d->volumeManager;
133 OfonoMessageWaiting* DialerContext::voicemailManager() const
135 return d->voicemailManager;
138 CallManager* DialerContext::callManager() const
140 return d->callManager;
143 QStringList DialerContext::modes() const
148 void DialerContext::setModes(const QStringList &modelist)
151 d->modes.removeDuplicates();
156 * Private methods/slots
159 void DialerContext::onModemAdded(const QString &path)
162 // TODO: Handle modem additions, maybe...
163 qWarning() << __func__ << ": Unhandled ModemAdded - " << path;
166 void DialerContext::onModemRemoved(const QString &path)
169 // TODO: Handle modem removals, currently active for sure, others, maybe...
170 qWarning() << __func__ << ": Unhandled ModemAdded - " << path;
173 void DialerContext::onCallVolumeValidityChanged(bool valid)
176 // TODO: Reset the volumeManager service reference
177 qWarning() << __func__ << ": valid? " << ((valid)?"true":"false");
180 void DialerContext::onVoicemailValidityChanged(bool valid)
183 // TODO: Reset the voicemailManager service reference
184 qWarning() << __func__ << ": valid? " << ((valid)?"true":"false");
187 void DialerContext::onVoicemailWaitingChanged(bool waiting)
190 // TODO: Send notifications (or bubble this up for UI to handle?)
191 qDebug() << __func__ << ": Messages? " << ((waiting)?"true":"false");
194 void DialerContext::onVoicemailCountChanged(int count)
197 // TODO: Send notifications (or bubble this up for UI to handle?)
198 qDebug() << __func__ << ": Message count == " << count;
201 void DialerContext::onCallManagerValidityChanged(bool valid)
204 // TODO: Reset the callManager service reference
205 qWarning() << __func__ << ": valid? " << ((valid)?"true":"false");
208 void DialerContext::onCallsChanged()
211 // TODO: Send notifications (or bubble this up for UI to handle?)
212 qDebug() << __func__ << ": Calls count == "
213 << d->callManager->getCalls().count();
216 void DialerContext::onModesChanged()
219 setModes(d->modesKey.value().toStringList());
220 // Send notification of change
222 qDebug() << __func__ << ": New modes == " << d->modes.join(", ");
225 /* Local Variables: */
227 /* c-basic-offset:4 */
228 /* indent-tabs-mode: nil */