X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Futils%2Ffreesound.cpp;fp=src%2Futils%2Ffreesound.cpp;h=bf313d49d35c5ca5e87eb14237a0fc719f4fc676;hb=6952b4c0b67f2a4fb1aeeef7a2b84c8b55849016;hp=542549fdc67620d87d5a088b99e07da786a4334d;hpb=86c076b216a77db8ac8900086d0579a27f0ca490;p=kdenlive 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)