| 483 | } |
| 484 | |
| 485 | void ControlToolBar::EnableDisableButtons() |
| 486 | { |
| 487 | AudacityProject *p = &mProject; |
| 488 | auto &projectAudioManager = ProjectAudioManager::Get( mProject ); |
| 489 | bool canStop = projectAudioManager.CanStopAudioStream(); |
| 490 | |
| 491 | bool paused = mPause->IsDown(); |
| 492 | bool playing = mPlay->IsDown(); |
| 493 | bool recording = mRecord->IsDown(); |
| 494 | auto gAudioIO = AudioIO::Get(); |
| 495 | bool busy = gAudioIO->IsBusy(); |
| 496 | |
| 497 | // Only interested in audio type tracks |
| 498 | bool tracks = p && TrackList::Get(*p).Any<AudioTrack>(); // PRL: PlayableTrack ? |
| 499 | |
| 500 | mPlay->SetEnabled( canStop && tracks && !recording ); |
| 501 | mRecord->SetEnabled( |
| 502 | canStop && |
| 503 | !(busy && !recording && !paused) && |
| 504 | !(playing && !paused) |
| 505 | ); |
| 506 | mStop->SetEnabled(canStop && (playing || recording)); |
| 507 | mRewind->SetEnabled(paused || (!playing && !recording)); |
| 508 | mFF->SetEnabled(tracks && (paused || (!playing && !recording))); |
| 509 | |
| 510 | mPause->SetEnabled(canStop); |
| 511 | |
| 512 | mLoop->SetEnabled( !recording ); |
| 513 | } |
| 514 | |
| 515 | void ControlToolBar::SetPlay(bool down, PlayAppearance appearance) |
| 516 | { |
nothing calls this directly
no test coverage detected