You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mainwindow.cpp 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QMenu>
  4. void clearLayout(QLayout *layout)
  5. {
  6. QLayoutItem *item;
  7. while((item = layout->takeAt(0))) {
  8. if (item->layout()) {
  9. clearLayout(item->layout());
  10. delete item->layout();
  11. }
  12. if (item->widget()) {
  13. delete item->widget();
  14. }
  15. delete item;
  16. }
  17. }
  18. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), nrj(0)
  19. {
  20. ui->setupUi(this);
  21. tray = new QSystemTrayIcon(this);
  22. QMenu* menu = new QMenu(this);
  23. menu->addAction("Quit", qApp, SLOT(quit()));
  24. tray->setContextMenu(menu);
  25. connect(tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(sysTrayActivated(QSystemTrayIcon::ActivationReason)));
  26. connect(ui->comboWebRadio, SIGNAL(currentIndexChanged(int)), this, SLOT(setWebRadio(int)));
  27. ui->comboWebRadio->addItem("Nostalgie", "nosta");
  28. ui->comboWebRadio->addItem("NRJ", "nrj");
  29. ui->comboWebRadio->addItem("Cherie FM", "cfm");
  30. }
  31. MainWindow::~MainWindow()
  32. {
  33. delete ui;
  34. }
  35. void MainWindow::MainWindow::closeEvent(QCloseEvent *event)
  36. {
  37. event->ignore();
  38. hide();
  39. }
  40. void MainWindow::setupFinished()
  41. {
  42. int i = 0;
  43. foreach(Radio* r, nrj->getRadios())
  44. {
  45. RadioWidget* w = new RadioWidget();
  46. ui->layRadios->addWidget(w, i / 2, i % 2);
  47. connect(w, SIGNAL(clicked(Radio*)), this, SLOT(radioChanged(Radio*)));
  48. w->setRadio(r);
  49. ++i;
  50. }
  51. nrj->getAllCur();
  52. }
  53. void MainWindow::radioChanged(Radio *r)
  54. {
  55. if(currentRadio != 0)
  56. {
  57. currentRadio->stopStream();
  58. currentRadio->disconnect(this);
  59. }
  60. currentRadio = r;
  61. if(currentRadio != 0)
  62. {
  63. currentRadio->startStream();
  64. }
  65. }
  66. void MainWindow::setWebRadio(int i)
  67. {
  68. QString radio = ui->comboWebRadio->itemData(i).toString();
  69. tray->setIcon(QIcon(":/" + radio + ".ico"));
  70. tray->show();
  71. clearLayout(ui->layRadios);
  72. if (nrj)
  73. {
  74. nrj->disconnect();
  75. nrj->deleteLater();
  76. }
  77. currentRadio = 0;
  78. nrj = new NRJ(this);
  79. connect(nrj, SIGNAL(setupFinished()), this, SLOT(setupFinished()));
  80. nrj->setRadio(radio);
  81. nrj->setupPlayer();
  82. }
  83. void MainWindow::sysTrayActivated(QSystemTrayIcon::ActivationReason r)
  84. {
  85. if (r == QSystemTrayIcon::DoubleClick)
  86. setVisible(!isVisible());
  87. }