From: Jean-Baptiste Mardelle Date: Fri, 30 Dec 2011 09:51:01 +0000 (+0100) Subject: Fix freesound autoplay X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6952b4c0b67f2a4fb1aeeef7a2b84c8b55849016;p=kdenlive Fix freesound autoplay --- diff --git a/src/utils/freesound.cpp b/src/utils/freesound.cpp index 542549fd..bf313d49 100644 --- a/src/utils/freesound.cpp +++ b/src/utils/freesound.cpp @@ -81,6 +81,7 @@ FreeSound::FreeSound(const QString & folder, QWidget * parent) : connect(page_next, SIGNAL(clicked()), this, SLOT(slotNextPage())); connect(page_prev, SIGNAL(clicked()), this, SLOT(slotPreviousPage())); connect(page_number, SIGNAL(valueChanged(int)), this, SLOT(slotStartSearch(int))); + sound_box->setEnabled(false); } FreeSound::~FreeSound() @@ -194,7 +195,7 @@ void FreeSound::slotShowResults() void FreeSound::slotUpdateCurrentSound() { - if (!sound_autoplay->isChecked()) slotPlaySound(false); + if (!sound_autoplay->isChecked()) slotForcePlaySound(false); m_currentPreview.clear(); m_currentUrl.clear(); QListWidgetItem *item = search_results->currentItem(); @@ -204,7 +205,7 @@ void FreeSound::slotUpdateCurrentSound() } m_currentPreview = item->data(previewRole).toString(); m_currentUrl = item->data(downloadRole).toString(); - if (sound_autoplay->isChecked()) slotPlaySound(true); + if (sound_autoplay->isChecked()) slotForcePlaySound(true); button_preview->setEnabled(!m_currentPreview.isEmpty()); sound_box->setEnabled(true); sound_name->setText(item->text()); @@ -233,17 +234,26 @@ void FreeSound::slotUpdateCurrentSound() } } - -void FreeSound::slotPlaySound(bool play) +void FreeSound::slotPlaySound() { if (m_currentPreview.isEmpty()) return; - if (!play || (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning)) { + if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) { m_previewProcess->close(); - if (!play) return; + return; } m_previewProcess->start("ffplay", QStringList() << m_currentPreview << "-nodisp"); } + +void FreeSound::slotForcePlaySound(bool play) +{ + if (m_service != FREESOUND) return; + m_previewProcess->close(); + if (m_currentPreview.isEmpty()) return; + if (play) + m_previewProcess->start("ffplay", QStringList() << m_currentPreview << "-nodisp"); +} + void FreeSound::slotPreviewStatusChanged(QProcess::ProcessState state) { if (state == QProcess::NotRunning) diff --git a/src/utils/freesound.h b/src/utils/freesound.h index ca397b0f..48fbfaed 100644 --- a/src/utils/freesound.h +++ b/src/utils/freesound.h @@ -45,7 +45,8 @@ private slots: void slotDataIsHere(KIO::Job *,const QByteArray & data ); void slotShowResults(); void slotUpdateCurrentSound(); - void slotPlaySound(bool play = true); + void slotPlaySound(); + void slotForcePlaySound(bool play); void slotPreviewStatusChanged(QProcess::ProcessState state); void slotSaveSound(); void slotOpenUrl(const QString &url);