Mercurial > hg > tony
changeset 424:ad8f94fb334d
Experiment with simple button logic for LevelPanWidget (separating out playback toggle again)
author | Chris Cannam |
---|---|
date | Mon, 30 Mar 2015 14:28:04 +0100 |
parents | bbe7ba53030e |
children | 835ce4c21362 |
files | .hgsubstate src/MainWindow.cpp src/MainWindow.h |
diffstat | 3 files changed, 74 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsubstate Wed Mar 25 17:02:40 2015 +0000 +++ b/.hgsubstate Mon Mar 30 14:28:04 2015 +0100 @@ -4,4 +4,4 @@ 55ece8862b6d3a54aad271a53f9c1615e5d3bcf8 sv-dependency-builds 345d41a3567f44ff4febf5ef4c4022e79d31eba4 svapp c49d52386cde0844cef30d8904a4fe409cec3d5c svcore -325a7aa6905538d36e9624fb5caa182d26e0f760 svgui +a61a779d73dfe483c7c0fc2f52c38e6ab3bc49c1 svgui
--- a/src/MainWindow.cpp Wed Mar 25 17:02:40 2015 +0000 +++ b/src/MainWindow.cpp Mon Mar 30 14:28:04 2015 +0100 @@ -1128,6 +1128,11 @@ connect(m_showAudio, SIGNAL(triggered()), this, SLOT(showAudioToggled())); connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); + m_playAudio = toolbar->addAction(il.load("speaker"), tr("Play Audio")); + m_playAudio->setCheckable(true); + connect(m_playAudio, SIGNAL(triggered()), this, SLOT(playAudioToggled())); + connect(this, SIGNAL(canPlayWaveform(bool)), m_playAudio, SLOT(setEnabled(bool))); + m_audioLPW->setImageSize(m_viewManager->scalePixelSize(26)); toolbar->addWidget(m_audioLPW); @@ -1142,8 +1147,15 @@ connect(this, SIGNAL(canPlay(bool)), m_showPitch, SLOT(setEnabled(bool))); if (m_withSonification) { + m_playPitch = toolbar->addAction(il.load("speaker"), tr("Play Pitch Track")); + m_playPitch->setCheckable(true); + connect(m_playPitch, SIGNAL(triggered()), this, SLOT(playPitchToggled())); + connect(this, SIGNAL(canPlayPitch(bool)), m_playPitch, SLOT(setEnabled(bool))); + m_pitchLPW->setImageSize(m_viewManager->scalePixelSize(26)); toolbar->addWidget(m_pitchLPW); + } else { + m_playPitch = 0; } // Notes @@ -1157,8 +1169,15 @@ connect(this, SIGNAL(canPlay(bool)), m_showNotes, SLOT(setEnabled(bool))); if (m_withSonification) { + m_playNotes = toolbar->addAction(il.load("speaker"), tr("Play Notes")); + m_playNotes->setCheckable(true); + connect(m_playNotes, SIGNAL(triggered()), this, SLOT(playNotesToggled())); + connect(this, SIGNAL(canPlayNotes(bool)), m_playNotes, SLOT(setEnabled(bool))); + m_notesLPW->setImageSize(m_viewManager->scalePixelSize(26)); toolbar->addWidget(m_notesLPW); + } else { + m_playNotes = 0; } // Spectrogram @@ -1382,11 +1401,22 @@ { m_analyser->toggleVisible(Analyser::Audio); - bool playOn = (m_analyser->isVisible(Analyser::Audio)); + QSettings settings; + settings.beginGroup("MainWindow"); + + bool playOn = false; + if (m_analyser->isVisible(Analyser::Audio)) { + // just switched layer on; check whether playback was also on previously + playOn = settings.value("playaudiowas", true).toBool(); + } else { + settings.setValue("playaudiowas", m_playAudio->isChecked()); + } m_analyser->setAudible(Analyser::Audio, playOn); - m_audioLPW->setEnabled(playOn); + + settings.endGroup(); updateMenuStates(); + updateLayerStatuses(); } void @@ -1394,11 +1424,22 @@ { m_analyser->toggleVisible(Analyser::PitchTrack); - bool playOn = (m_analyser->isVisible(Analyser::PitchTrack)); - m_analyser->setAudible(Analyser::PitchTrack, playOn && m_withSonification); - m_pitchLPW->setEnabled(playOn); + QSettings settings; + settings.beginGroup("MainWindow"); + + bool playOn = false; + if (m_analyser->isVisible(Analyser::PitchTrack)) { + // just switched layer on; check whether playback was also on previously + playOn = settings.value("playpitchwas", true).toBool(); + } else { + settings.setValue("playpitchwas", m_playPitch->isChecked()); + } + m_analyser->setAudible(Analyser::PitchTrack, playOn); + + settings.endGroup(); updateMenuStates(); + updateLayerStatuses(); } void @@ -1412,46 +1453,63 @@ { m_analyser->toggleVisible(Analyser::Notes); - bool playOn = (m_analyser->isVisible(Analyser::Notes)); - m_analyser->setAudible(Analyser::Notes, playOn && m_withSonification); - m_notesLPW->setEnabled(playOn); + QSettings settings; + settings.beginGroup("MainWindow"); + + bool playOn = false; + if (m_analyser->isVisible(Analyser::Notes)) { + // just switched layer on; check whether playback was also on previously + playOn = settings.value("playnoteswas", true).toBool(); + } else { + settings.setValue("playnoteswas", m_playNotes->isChecked()); + } + m_analyser->setAudible(Analyser::Notes, playOn); + + settings.endGroup(); updateMenuStates(); + updateLayerStatuses(); } void MainWindow::playAudioToggled() { m_analyser->toggleAudible(Analyser::Audio); + updateLayerStatuses(); } void MainWindow::playPitchToggled() { m_analyser->toggleAudible(Analyser::PitchTrack); + updateLayerStatuses(); } void MainWindow::playNotesToggled() { m_analyser->toggleAudible(Analyser::Notes); + updateLayerStatuses(); } void MainWindow::updateLayerStatuses() { m_showAudio->setChecked(m_analyser->isVisible(Analyser::Audio)); - m_audioLPW->setEnabled(m_analyser->isVisible(Analyser::Audio)); + m_playAudio->setChecked(m_analyser->isAudible(Analyser::Audio)); + m_audioLPW->setEnabled(m_analyser->isAudible(Analyser::Audio)); m_audioLPW->setLevel(m_analyser->getGain(Analyser::Audio)); m_audioLPW->setPan(m_analyser->getPan(Analyser::Audio)); - + m_showPitch->setChecked(m_analyser->isVisible(Analyser::PitchTrack)); - m_pitchLPW->setEnabled(m_analyser->isVisible(Analyser::PitchTrack)); + m_playPitch->setChecked(m_analyser->isAudible(Analyser::PitchTrack)); + m_pitchLPW->setEnabled(m_analyser->isAudible(Analyser::PitchTrack)); m_pitchLPW->setLevel(m_analyser->getGain(Analyser::PitchTrack)); m_pitchLPW->setPan(m_analyser->getPan(Analyser::PitchTrack)); m_showNotes->setChecked(m_analyser->isVisible(Analyser::Notes)); - m_notesLPW->setEnabled(m_analyser->isVisible(Analyser::Notes)); + m_playNotes->setChecked(m_analyser->isAudible(Analyser::Notes)); + m_notesLPW->setEnabled(m_analyser->isAudible(Analyser::Notes)); m_notesLPW->setLevel(m_analyser->getGain(Analyser::Notes)); m_notesLPW->setPan(m_analyser->getPan(Analyser::Notes));
--- a/src/MainWindow.h Wed Mar 25 17:02:40 2015 +0000 +++ b/src/MainWindow.h Mon Mar 30 14:28:04 2015 +0100 @@ -198,6 +198,9 @@ QAction *m_showSpect; QAction *m_showPitch; QAction *m_showNotes; + QAction *m_playAudio; + QAction *m_playPitch; + QAction *m_playNotes; LevelPanToolButton *m_audioLPW; LevelPanToolButton *m_pitchLPW; LevelPanToolButton *m_notesLPW;