blob: 65a04cd5b91a50b35d8297444087687d290af59a [file] [log] [blame]
Ilya Moiseenko656d52d2013-10-25 14:19:10 -07001/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
2/*
3 * @copyright See LICENCE for copyright and license information.
4 *
5 * @author Ilya Moiseenko <iliamo@ucla.edu>
6 */
7
Alexander Afanasyev669ea1a2013-11-08 22:25:23 -08008#include "config.h"
Ilya Moiseenko656d52d2013-10-25 14:19:10 -07009#include "network-manager.h"
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070010
11NetworkManager::NetworkManager()
Alexander Afanasyev50bea562013-11-09 20:09:03 -080012 : isAutoconfigRunning(false)
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070013{
14 if (!QDBusConnection::systemBus().isConnected())
15 {
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070016 return;
17 }
18
Ilya Moiseenko69abb972013-11-04 16:02:20 -080019 autoconfigProcess = new QProcess(this);
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070020 connect(autoconfigProcess,SIGNAL(finished(int)),this,SLOT(autoconfigFinished()));
21 connect(autoconfigProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(autoconfigFinished()));
22
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070023 QDBusConnection::systemBus().connect("org.freedesktop.NetworkManager",
24 "/org/freedesktop/NetworkManager",
25 "org.freedesktop.NetworkManager",
26 "StateChanged", this, SLOT(stateChanged(uint)));
Ilya Moiseenkoee3cde72013-11-10 13:17:00 -080027
28 QDBusConnection::systemBus().connect("org.freedesktop.UPower",
29 "/org/freedesktop/UPower",
30 "org.freedesktop.UPower",
31 "Resuming", this, SLOT(autoconfigDaemon()));
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070032}
33
34void NetworkManager::stateChanged(uint state)
35{
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070036 if(state == NM_STATE_CONNECTED_GLOBAL)
37 autoconfigDaemon();
38}
39
40void NetworkManager::autoconfigDaemon()
41{
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070042 if(IsAutoconfigRunning())
43 return;
44
Ilya Moiseenko69abb972013-11-04 16:02:20 -080045 isAutoconfigRunning = true;
46
47 if(autoconfigProcess != NULL)
48 autoconfigProcess->start(NDND_AUTOCONFIG_COMMAND);
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070049}
50
51void NetworkManager::autoconfigFinished()
52{
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070053 isAutoconfigRunning = false;
54}
55
56bool NetworkManager::IsAutoconfigRunning()
57{
58 return isAutoconfigRunning;
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070059}
Alexander Afanasyeva822b572013-11-04 12:36:34 -080060
61#if WAF
62#include "network-manager.moc"
63#include "network-manager.cpp.moc"
64#endif