14
14
You should have received a copy of the GNU General Public License
15
15
along with this program. If not, see <http://www.gnu.org/licenses/>. */
17
#include <util/network.h>
17
18
#include <widgets/CBroadcastDiscoveryWidget.h>
18
19
#include "ui_CBroadcastDiscoveryWidget.h"
20
21
CBroadcastDiscoveryWidget::CBroadcastDiscoveryWidget(QWidget * parent)
21
: QWidget(parent), ui(new Ui::CBroadcastDiscoveryWidget)
22
: QWidget(parent), ui(new Ui::CBroadcastDiscoveryWidget), m_listener(NULL)
26
27
CBroadcastDiscoveryWidget::~CBroadcastDiscoveryWidget()
29
/* Free everything. */
35
void CBroadcastDiscoveryWidget::StartBroadcasting()
37
ui->DiscoveryLabel->setText(tr("Broadcast discovery in progress..."));
39
/* For each of the usable network interfaces, create a broadcaster
40
that immediately begins listening / broadcasting. */
41
QList<QNetworkInterface> interfaces = Network::FindUsableInterfaces();
42
foreach(QNetworkInterface interface, interfaces)
44
CBasicBroadcaster * broadcaster = new CBasicBroadcaster;
45
broadcaster->Init(interface);
47
m_broadcasters.append(broadcaster);
50
/* And we also listen for any incoming pings. */
51
m_listener = new CBasicListener;
52
connect(m_listener, SIGNAL(Ping(QHostAddress,QByteArray)), SLOT(OnPing(QHostAddress)));
57
void CBroadcastDiscoveryWidget::StopBroadcasting()
59
/* Free all of the broadcasters and the listener. */
60
qDeleteAll(m_broadcasters);
69
void CBroadcastDiscoveryWidget::OnPing(QHostAddress address)
71
/* Loop through each of the network interfaces we are broadcasting
72
on and check to see if this address is in its subnet. */
73
foreach(CBasicBroadcaster * broadcaster, m_broadcasters)
74
if(broadcaster->HasAddress(address))
76
ui->DiscoveryLabel->setText(tr("Found interface broadcasting to us."));