Imported Upstream version 0.9.0
[deb_shairplay.git] / AirTV-Qt / mainapplication.cpp
1 #include "mainapplication.h"
2
3 #include <QDebug>
4 #include <QCoreApplication>
5
6 MainApplication::MainApplication(QObject *parent) :
7 QObject(parent)
8 {
9 raopService = new RaopService(0);
10 dnssdService = new DnssdService(0);
11 trayIconMenu = new QMenu(0);
12
13 quitAction = new QAction(tr("&Quit"), trayIconMenu);
14 connect(quitAction, SIGNAL(triggered()), this, SIGNAL(quitRequested()));
15 trayIconMenu->addAction(quitAction);
16
17 // Construct the actual system tray icon
18 trayIcon = new QSystemTrayIcon(this);
19 trayIcon->setContextMenu(trayIconMenu);
20 trayIcon->setIcon(QIcon(":icons/airtv.svg"));
21 }
22
23 MainApplication::~MainApplication()
24 {
25 trayIcon->setContextMenu(0);
26 delete trayIconMenu;
27 delete raopService;
28 }
29
30 bool MainApplication::start()
31 {
32 // Initialize the service
33 bool initSuccess = false;
34 initSuccess = raopService->init(10, &m_callbacks);
35 if(!initSuccess) {
36 qDebug() << "Error initializing raop service";
37 return false;
38 }
39 initSuccess &= dnssdService->init();
40 if(!initSuccess) {
41 qDebug() << "Error initializing dnssd service";
42 return false;
43 }
44
45 char chwaddr[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB };
46 QByteArray hwaddr(chwaddr, sizeof(chwaddr));
47
48 raopService->start(5000, hwaddr);
49 dnssdService->registerRaop("Shairplay", 5000, hwaddr);
50 trayIcon->show();
51 return true;
52 }
53
54 void MainApplication::stop()
55 {
56 dnssdService->unregisterRaop();
57 raopService->stop();
58 trayIcon->hide();
59 }
60
61 void MainApplication::aboutToQuit()
62 {
63 this->stop();
64 }