Mercurial > hg > svapp
diff framework/MainWindowBase.cpp @ 520:c3648c667a0b 3.0-integration
Merge from branch "alignment-simple"
author | Chris Cannam |
---|---|
date | Thu, 21 Apr 2016 15:06:43 +0100 |
parents | b926f08909b8 |
children | 3ab6a5f7aca8 |
line wrap: on
line diff
--- a/framework/MainWindowBase.cpp Fri Mar 18 14:25:05 2016 +0000 +++ b/framework/MainWindowBase.cpp Thu Apr 21 15:06:43 2016 +0100 @@ -157,6 +157,7 @@ m_defaultFfwdRwdStep(2, 0), m_audioRecordMode(RecordCreateAdditionalModel), m_statusLabel(0), + m_iconsVisibleInMenus(true), m_menuShortcutMapper(0) { Profiler profiler("MainWindowBase::MainWindowBase"); @@ -334,12 +335,12 @@ } void -MainWindowBase::finaliseMenu(QMenu * -#ifdef Q_OS_MAC - menu -#endif - ) +MainWindowBase::finaliseMenu(QMenu *menu) { + foreach (QAction *a, menu->actions()) { + a->setIconVisibleInMenu(m_iconsVisibleInMenus); + } + #ifdef Q_OS_MAC // See https://bugreports.qt-project.org/browse/QTBUG-38256 and // our issue #890 http://code.soundsoftware.ac.uk/issues/890 -- @@ -1787,6 +1788,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); @@ -2273,8 +2319,10 @@ this, SLOT(modelGenerationFailed(QString, QString))); connect(m_document, SIGNAL(modelRegenerationWarning(QString, QString, QString)), this, SLOT(modelRegenerationWarning(QString, QString, QString))); - connect(m_document, SIGNAL(alignmentFailed(QString, QString)), - this, SLOT(alignmentFailed(QString, QString))); + connect(m_document, SIGNAL(alignmentComplete(AlignmentModel *)), + this, SLOT(alignmentComplete(AlignmentModel *))); + connect(m_document, SIGNAL(alignmentFailed(QString)), + this, SLOT(alignmentFailed(QString))); emit replacedDocument(); } @@ -2658,7 +2706,8 @@ void MainWindowBase::play() { - if (m_recordTarget->isRecording() || m_playSource->isPlaying()) { + if ((m_recordTarget && m_recordTarget->isRecording()) || + (m_playSource && m_playSource->isPlaying())) { stop(); QAction *action = qobject_cast<QAction *>(sender()); if (action) action->setChecked(false); @@ -3037,10 +3086,13 @@ void MainWindowBase::stop() { - if (m_recordTarget->isRecording()) { + if (m_recordTarget && + m_recordTarget->isRecording()) { m_recordTarget->stopRecording(); } - + + if (!m_playSource) return; + m_playSource->stop(); if (m_audioIO) m_audioIO->suspend(); @@ -3578,6 +3630,12 @@ } void +MainWindowBase::alignmentComplete(AlignmentModel *model) +{ + cerr << "MainWindowBase::alignmentComplete(" << model << ")" << endl; +} + +void MainWindowBase::pollOSC() { if (!m_oscQueue || m_oscQueue->isEmpty()) return;