# HG changeset patch # User Chris Cannam # Date 1416570519 0 # Node ID a67245dce0d4014d16e14b02b8aba2169f999895 # Parent 03fd6990ab52a7193c56ef13bb3b003e0b2b13e5 Permit loading a whole directory of audio on the command line or through drag and drop diff -r 03fd6990ab52 -r a67245dce0d4 framework/MainWindowBase.cpp --- 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); diff -r 03fd6990ab52 -r a67245dce0d4 framework/MainWindowBase.h --- a/framework/MainWindowBase.h Fri Nov 21 10:36:44 2014 +0000 +++ b/framework/MainWindowBase.h Fri Nov 21 11:48:39 2014 +0000 @@ -102,6 +102,8 @@ virtual FileOpenStatus openLayer(FileSource source); virtual FileOpenStatus openImage(FileSource source); + virtual FileOpenStatus openDirOfAudio(QString dirPath); + virtual FileOpenStatus openSession(FileSource source); virtual FileOpenStatus openSessionPath(QString fileOrUrl); virtual FileOpenStatus openSessionTemplate(QString templateName);