diff options
Diffstat (limited to 'sigmodr/widgets/SoundUI.cpp')
| -rw-r--r-- | sigmodr/widgets/SoundUI.cpp | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/sigmodr/widgets/SoundUI.cpp b/sigmodr/widgets/SoundUI.cpp index 891b0d07..a2980ffd 100644 --- a/sigmodr/widgets/SoundUI.cpp +++ b/sigmodr/widgets/SoundUI.cpp @@ -29,6 +29,7 @@ #include <KMessageBox> #include <KPushButton> #include <KUrl> +#include <KIO/NetAccess> // Phonon includes #include <Phonon/AudioOutput> @@ -123,13 +124,44 @@ void SoundUI::Private::nameChanged(const QString& name) void SoundUI::Private::browse() { - QFile file(KFileDialog::getOpenFileName(KUrl("kfiledialog:///audio"), "audio/*|Audio files", NULL)); - if (file.open(QIODevice::ReadOnly)) + KFileDialog* dialog = new KFileDialog(KUrl("kfiledialog:///audio"), "audio/*|Audio Files", NULL); + dialog->setCaption("Use Audio File"); + dialog->setOperationMode(KFileDialog::Opening); + if (dialog->exec() == QDialog::Accepted) { - m_sound->setData(file.readAll()); - file.close(); - resetAudioData(); + KUrl url = dialog->selectedFile(); + if (url.isValid()) + { + QString path; + bool load = true; + bool removeTempFile = false; + if (url.isLocalFile()) + path = url.path(); + else + { + if (KIO::NetAccess::download(url, path, NULL)) + removeTempFile = true; + else + { + KMessageBox::error(NULL, KIO::NetAccess::lastErrorString(), "KIO Error"); + load = false; + } + } + if (load) + { + QFile file(url.path()); + file.open(QIODevice::ReadOnly); + m_sound->setData(file.readAll()); + file.close(); + resetAudioData(); + } + if (removeTempFile) + KIO::NetAccess::removeTempFile(path); + } + else + KMessageBox::error(NULL, "The URL is not valid", "Malformed URL"); } + delete dialog; } void SoundUI::Private::stateChanged(Phonon::State newState) |
