Mercurial > hg > svapp
diff framework/MainWindowBase.cpp @ 427:a67245dce0d4 alignment_view
Permit loading a whole directory of audio on the command line or through drag and drop
author | Chris Cannam |
---|---|
date | Fri, 21 Nov 2014 11:48:39 +0000 |
parents | 03fd6990ab52 |
children | a9141963b580 |
line wrap: on
line diff
--- a/framework/MainWindowBase.cpp Fri Nov 21 10:36:44 2014 +0000 +++ b/framework/MainWindowBase.cpp Fri Nov 21 11:48:39 2014 +0000 @@ -1743,6 +1743,51 @@ } MainWindowBase::FileOpenStatus +MainWindowBase::openDirOfAudio(QString dirPath) +{ + QDir dir(dirPath); + QStringList files = dir.entryList(QDir::Files | QDir::Readable); + files.sort(); + + FileOpenStatus status = FileOpenFailed; + bool first = true; + bool cancelled = false; + + foreach (QString file, files) { + + FileSource source(dir.filePath(file)); + if (!source.isAvailable()) { + continue; + } + + if (AudioFileReaderFactory::getKnownExtensions().contains + (source.getExtension().toLower())) { + + AudioFileOpenMode mode = CreateAdditionalModel; + if (first) mode = ReplaceSession; + + switch (openAudio(source, mode)) { + case FileOpenSucceeded: + status = FileOpenSucceeded; + first = false; + break; + case FileOpenFailed: + break; + case FileOpenCancelled: + cancelled = true; + break; + case FileOpenWrongMode: + break; + } + } + + if (cancelled) break; + } + + return status; +} + +MainWindowBase::FileOpenStatus MainWindowBase::openSessionPath(QString fileOrUrl) { ProgressDialog dialog(tr("Opening session..."), true, 2000, this);