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 "dbustypes.h"
13 #include "dialerapplication.h"
14 #include "dialercontext.h"
15 #include "dbusdialeradapter.h"
16 #include "hfdialer_adaptor.h"
17 #include "pacontrol.h"
18 #include "qmlmainwindow.h"
21 #include <QApplication>
23 #define OFONO_VOICECALLMANAGER_INTERFACE "org.ofono.VoiceCallManager"
25 DialerApplication::DialerApplication(int &argc, char **argv)
26 : QApplication(argc, argv)
32 void DialerApplication::releasePrestart()
35 // Now is the time for set up and display of information
36 // that needs to be done to allow the dialeror other
37 // pages to display correctly when opened. GenericPage has a
38 // activateWidgets() method for common setup and
39 // each Page type (dialer, people, favorites, etc) can also
40 // implement the method for Page specific setup and signal
41 // and slot connections
46 void DialerApplication::restorePrestart()
49 // Now is the time for clean up and resetting an information
50 // that needs to be done to allow the dialer pages to display
51 // correctly when reopened. GenericPage has a
52 // deactivateAndResetWidgets() method for common setup and
53 // each Page type (dialer, people, favorites, etc) can also
54 // implement the method for Page specific clean up
56 // Call the default implementation to hide the window.
59 void DialerApplication::connectAll()
63 ManagerProxy *m_manager = ManagerProxy::instance();
64 if (m_manager->modem() &&
65 m_manager->modem()->isValid() &&
66 !m_manager->modem()->path().isEmpty())
68 qDebug() << QString("Connecting to CallManager....");
69 m_manager->setNetwork(m_manager->modem()->path());
70 m_manager->setCallManager(m_manager->modem()->path());
71 m_manager->setVolumeManager(m_manager->modem()->path());
72 m_manager->setVoicemail(m_manager->modem()->path());
74 connect(m_manager->network(), SIGNAL(connected()), this,
75 SLOT(networkConnected()));
76 connect(m_manager->network(), SIGNAL(disconnected()), this,
77 SLOT(networkDisconnected()));
78 connect(m_manager->callManager(), SIGNAL(connected()), this,
79 SLOT(callManagerConnected()));
80 connect(m_manager->callManager(), SIGNAL(disconnected()), this,
81 SLOT(callManagerDisconnected()));
82 connect(m_manager->callManager(), SIGNAL(callsChanged()), this,
83 SLOT(onCallsChanged()));
84 connect(m_manager->voicemail(), SIGNAL(messagesWaitingChanged()), this,
85 SLOT(messagesWaitingChanged()));
86 PAControl* paControl = PAControl::instance();
87 qDebug()<<"UBER DEBUG!!! I can has connect with paControl onCallsChanged";
88 connect(m_manager->callManager(), SIGNAL(callsChanged()), paControl,
89 SLOT(onCallsChanged()));
93 bool DialerApplication::isConnected()
99 bool DialerApplication::hasError() const
102 return !m_lastError.isEmpty();
105 QString DialerApplication::lastError() const
111 void DialerApplication::setError(const QString msg)
115 m_lastError = QString(msg);
118 DialerApplication *DialerApplication::instance()
121 return qobject_cast<DialerApplication *>(QApplication::instance());
124 void DialerApplication::init()
128 m_lastError = QString();
130 // Notify Qt of our custom DBus MetaTypes
131 registerMyDataTypes();
133 m_manager = ManagerProxy::instance();
134 if (!m_manager || !m_manager->isValid())
135 //% "Failed to connect to org.ofono.Manager: is ofonod running?"
136 setError(qtTrId("xx_no_ofono_error"));
140 HfdialerAdaptor *adapter = new HfdialerAdaptor(this);
143 qWarning() << "DBus adapter instantiation failed.";
146 if(!QDBusConnection::systemBus().registerService("com.hfdialer"))
148 qCritical() << "Error registering on zee bus: " <<
149 QDBusConnection::systemBus().lastError().message();
152 if(!QDBusConnection::systemBus().registerObject(DBUS_SERVICE_PATH, this))
154 qCritical() << "Error registering dbus object:" <<
155 QDBusConnection::systemBus().lastError().message();
157 connect(m_manager, SIGNAL(modemChanged()),
158 SLOT(modemChanged()));
162 m_mainWindow = QMLMainWindow::instance();
163 connect(m_mainWindow, SIGNAL(closeWindow()),this, SLOT(closeWindow()));
166 void DialerApplication::modemChanged()
169 if (m_manager->modem() != NULL)
171 connect(m_manager->modem(), SIGNAL(connected()),
172 SLOT(modemConnected()));
173 connect(m_manager->modem(), SIGNAL(disconnected()),
174 SLOT(modemDisconnected()));
178 qDebug()<<"modem is null";
182 void DialerApplication::modemConnected()
185 //TODO: Handle multiple modems
186 if (m_manager->modem() && m_manager->modem()->isValid())
188 m_modem = m_manager->modem();
190 m_modem->setPowered(true);
192 qDebug() << QString("Modem connected");
193 connect(m_modem, SIGNAL(interfacesChanged(QStringList)), this,
194 SLOT(modemInterfacesChanged(QStringList)));
195 connect(m_modem, SIGNAL(poweredChanged(bool)), this,
196 SLOT(modemPowered(bool)));
198 if (m_modem->powered() &&
199 m_modem->interfaces().contains(OFONO_VOICECALLMANAGER_INTERFACE))
201 /* connect all now, modem is enabled */
207 void DialerApplication::modemDisconnected()
210 //TODO: Handle multiple modems
213 void DialerApplication::modemInterfacesChanged(QStringList interfaces)
216 qDebug() << QString("Modem Interfaces: ") << interfaces;
218 if (interfaces.contains(OFONO_VOICECALLMANAGER_INTERFACE) &&
219 m_manager->modem()->powered())
225 void DialerApplication::modemPowered(bool isPowered)
228 qDebug() << QString("Modem Powered: ") << isPowered;
231 m_manager->modem()->interfaces().contains(OFONO_VOICECALLMANAGER_INTERFACE))
237 void DialerApplication::networkConnected()
240 if (m_manager->network() && m_manager->network()->isValid())
241 m_network = m_manager->network();
244 void DialerApplication::networkDisconnected()
249 void DialerApplication::callManagerConnected()
252 if (m_manager->callManager() && m_manager->callManager()->isValid())
253 m_callManager = m_manager->callManager();
256 qDebug() << QString("Disconnect calls changed signal");
257 disconnect(m_callManager, SIGNAL(callsChanged()));
259 qDebug() << QString("Disconnect incoming signal");
260 disconnect(m_callManager, SIGNAL(incomingCall(CallItem*)));
262 qDebug() << QString("Disconnect resource lost");
263 disconnect(m_callManager, SIGNAL(callResourceLost(const QString)));
266 void DialerApplication::callManagerDisconnected()
269 qDebug() << QString("CallMgr disconnected");
272 void DialerApplication::messagesWaitingChanged()
277 void DialerApplication::onCallsChanged()
280 QMLMainWindow::instance()->tryToShow();
283 void DialerApplication::raise()
286 QMLMainWindow::instance()->tryToShow();
289 void DialerApplication::closeWindow()
292 m_mainWindow->hide();
295 /* Local Variables: */
297 /* c-basic-offset:4 */
298 /* indent-tabs-mode: nil */