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 } 65