MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), timer(new QTimer(this)) { ui->setupUi(this); this->setWindowIcon(QIcon(":/icon.png")); Qt::WindowFlags flags = this->windowFlags(); this->setWindowFlags(flags | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); // this->setAttribute(Qt::WA_TranslucentBackground, true); timer->setTimerType(Qt::PreciseTimer); // fixes subtitle delay connect(timer, SIGNAL(timeout()), this, SLOT(update())); connect(ui->backwardButton, SIGNAL(clicked()), this, SLOT(fastBackward())); connect(ui->forwardButton, SIGNAL(clicked()), this, SLOT(fastForward())); connect(ui->toggleButton, SIGNAL(clicked()), this, SLOT(togglePlay())); connect(ui->loadButton, SIGNAL(clicked()), this, SLOT(openFileDialog())); connect(ui->prefButton, SIGNAL(clicked()), this, SLOT(openSettingsWindow())); connect(ui->quitButton, SIGNAL(clicked()), qApp, SLOT(quit())); connect(ui->horizontalSlider, SIGNAL(sliderMoved(int)), this, SLOT(sliderMoved(int))); if (QSystemTrayIcon::isSystemTrayAvailable()) { trayIcon = new QSystemTrayIcon(); trayIcon->setIcon(QIcon(":/icon.png")); connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); menu = new QMenu(); QAction *settings = new QAction("Preferences", 0); connect(settings, SIGNAL(triggered()), this, SLOT(openSettingsWindow())); menu->addAction(settings); QAction *quit = new QAction("Quit", 0); connect(quit, SIGNAL(triggered()), qApp, SLOT(quit())); menu->addAction(quit); trayIcon->setContextMenu(menu); trayIcon->show(); } this->setAttribute(Qt::WA_Hover, true); ui->bottomWidgets->setAttribute(Qt::WA_NoMousePropagation); // fix window disappear problem this->loadPref(); setAcceptDrops(true); }
ControlPanel::ControlPanel(QWidget *parent) : QWidget(parent), m_coverArt(new CoverArtDialog(this)), m_lyricsDialog(new LyricsDialog(this)), m_lastFm(new LastFmSubmitter(this)) { Q_ASSERT(m_coverArt); Q_ASSERT(m_lyricsDialog); Q_ASSERT(m_lastFm); setupUi(this); coverArtButton->setVisible(false); connect(prevButton, SIGNAL(clicked()), MPD::instance(), SLOT(prev())); connect(playButton, SIGNAL(clicked()), MPD::instance(), SLOT(play())); connect(pauseButton, SIGNAL(clicked()), MPD::instance(), SLOT(pause())); connect(stopButton, SIGNAL(clicked()), MPD::instance(), SLOT(stop())); connect(nextButton, SIGNAL(clicked()), MPD::instance(), SLOT(next())); connect(volumeSlider, SIGNAL(valueChanged(int)), MPD::instance(), SLOT(setVolume(int))); connect(timeSlider, SIGNAL(timeChanged(int)), MPD::instance(), SLOT(seek(int))); connect(timeSlider, SIGNAL(valueChanged(int)), elapsedLabel, SLOT(setTime(int))); connect(MPD::instance(), SIGNAL(volumeUpdated(int)), volumeSlider, SLOT(setValue(int))); connect(MPD::instance(), SIGNAL(timeUpdated(int, int)), elapsedLabel, SLOT(setTime(int, int))); connect(MPD::instance(), SIGNAL(timeUpdated(int, int)), totalLabel, SLOT(setTime(int, int))); connect(MPD::instance(), SIGNAL(timeUpdated(int, int)), timeSlider, SLOT(setTime(int, int))); connect(MPD::instance(), SIGNAL(playingSongUpdated(const MPDSong &)), this, SLOT(setSong(const MPDSong &))); connect(Config::instance(), SIGNAL(showCoverArtChanged(bool)), this, SLOT(showCoverArtChanged(bool))); connect(coverArtButton, SIGNAL(clicked()), m_coverArt, SLOT(show())); connect(lyricsButton, SIGNAL(clicked()), m_lyricsDialog, SLOT(show())); connect(m_lastFm, SIGNAL(infoMsg(QString)), this, SIGNAL(infoMsg(QString))); connect(scrobbleCheckBox, SIGNAL(toggled(bool)), Config::instance(), SLOT(setSubmitSongsToLastFm(bool))); connect(Config::instance(), SIGNAL(submitSongsToLastFmChanged(bool)), scrobbleCheckBox, SLOT(setChecked(bool))); scrobbleCheckBox->setChecked(Config::instance()->submitSongsToLastFm()); // Short cuts m_fwdKey = new QShortcut(Qt::CTRL | Qt::Key_Right, this); m_rwdKey = new QShortcut(Qt::CTRL | Qt::Key_Left, this); m_volUpKey = new QShortcut(Qt::CTRL | Qt::Key_Up, this); m_volDnKey = new QShortcut(Qt::CTRL | Qt::Key_Down, this); m_stopMultKey = new QShortcut(Qt::Key_MediaStop, this); m_togglePlayMultKey = new QShortcut(Qt::Key_MediaPlay, this); m_fwdMultKey = new QShortcut(Qt::Key_MediaNext, this); m_rwdMultKey = new QShortcut(Qt::Key_MediaPrevious, this); m_fwdKey->setObjectName("nextSongKey"); m_rwdKey->setObjectName("prevSongKey"); m_volUpKey->setObjectName("volumeUpKey"); m_volDnKey->setObjectName("volumeDownKey"); m_stopMultKey->setObjectName("stopKey"); m_togglePlayMultKey->setObjectName("togglePlayKey"); m_fwdMultKey->setObjectName("nextSongMultimediaKey"); m_rwdMultKey->setObjectName("prevSongMultimediaKey"); connect(m_fwdKey, SIGNAL(activated()), MPD::instance(), SLOT(seekForward())); connect(m_rwdKey, SIGNAL(activated()), MPD::instance(), SLOT(seekBackward())); connect(m_volUpKey, SIGNAL(activated()), MPD::instance(), SLOT(volumeUp())); connect(m_volDnKey, SIGNAL(activated()), MPD::instance(), SLOT(volumeDown())); connect(m_stopMultKey, SIGNAL(activated()), MPD::instance(), SLOT(stop())); connect(m_togglePlayMultKey, SIGNAL(activated()), MPD::instance(), SLOT(togglePlay())); connect(m_fwdMultKey, SIGNAL(activated()), MPD::instance(), SLOT(next())); connect(m_rwdMultKey, SIGNAL(activated()), MPD::instance(), SLOT(prev())); setSong(MPDSong()); }
PlaybackWidget::PlaybackWidget(QWidget *parent) : QWidget(parent) { if (HIWORD(BASS_GetVersion())!=BASSVERSION) { qDebug() << "Wrong bass version"; } db = &DBI::getInstance(); //Setup ui ui.setupUi(this); play = QPixmap(":/imgs/play"); pause = QPixmap(":/imgs/pause"); ui.prevBtn->setIcon(QIcon(QPixmap(":/imgs/prev"))); ui.nextBtn->setIcon(QIcon(QPixmap(":/imgs/next"))); ui.playBtn->setIcon(QIcon(play)); connect(ui.playBtn, SIGNAL(released()), SLOT(togglePlay())); //Setup Audio output if (!BASS_Init(-1,44100,0,0,NULL)) Error("Can't initialize device"); curchan = NULL; state = STOPPED; updateTimer = std::unique_ptr<QTimer>(new QTimer(this)); connect(updateTimer.get(), SIGNAL(timeout()), SLOT(update())); connect(ui.playSlider, SIGNAL(seekTo(float)), SLOT(seek(float))); updateTimer->setInterval(50); }
AudioTest::AudioTest() { QWidget *window = new QWidget; QVBoxLayout* layout = new QVBoxLayout; deviceBox = new QComboBox(this); foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo)); connect(deviceBox,SIGNAL(activated(int)),SLOT(deviceChanged(int))); layout->addWidget(deviceBox); button = new QPushButton(this); button->setText(tr("Click for Push Mode")); connect(button,SIGNAL(clicked()),SLOT(toggle())); layout->addWidget(button); button2 = new QPushButton(this); button2->setText(tr("Click To Suspend")); connect(button2,SIGNAL(clicked()),SLOT(togglePlay())); layout->addWidget(button2); window->setLayout(layout); setCentralWidget(window); window->show(); buffer = new char[BUFFER_SIZE]; gen = new Generator(this); pullMode = true; timer = new QTimer(this); connect(timer,SIGNAL(timeout()),SLOT(writeMore())); gen->start(); settings.setFrequency(SYSTEM_FREQ); settings.setChannels(1); settings.setSampleSize(16); settings.setCodec("audio/pcm"); settings.setByteOrder(QAudioFormat::LittleEndian); settings.setSampleType(QAudioFormat::SignedInt); QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice()); if (!info.isFormatSupported(settings)) { qWarning()<<"default format not supported try to use nearest"; settings = info.nearestFormat(settings); } if(settings.sampleSize() != 16) { qWarning()<<"audio device doesn't support 16 bit samples, example cannot run"; button->setDisabled(true); button2->setDisabled(true); audioOutput = 0; return; } audioOutput = new QAudioOutput(settings,this); connect(audioOutput,SIGNAL(notify()),SLOT(status())); connect(audioOutput,SIGNAL(stateChanged(QAudio::State)),SLOT(state(QAudio::State))); audioOutput->start(gen); }