Skip to content

Commit 71271f3

Browse files
committed
Update scrubber interface slider behavior
1 parent d5bd0a1 commit 71271f3

File tree

3 files changed

+38
-36
lines changed

3 files changed

+38
-36
lines changed

Source/Processors/FileReader/FileReader.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,14 +315,17 @@ int64 FileReader::getCurrentSample()
315315

316316
void FileReader::setPlaybackStart(int64 startSample)
317317
{
318-
//LOGD("Settings start sample: ", timestamp);
318+
LOGD("Settings start sample: ", startSample);
319319
this->startSample = startSample;
320320
this->totalSamplesAcquired = startSample;
321+
322+
input->seekTo(startSample);
323+
currentSample = startSample;
321324
}
322325

323326
void FileReader::setPlaybackStop(int64 stopSample)
324327
{
325-
//LOGD("Settings stop sample: ", timestamp);
328+
LOGD("Settings stop sample: ", stopSample);
326329
this->stopSample = stopSample;
327330
currentNumScrubbedSamples = stopSample - startSample;
328331
}

Source/Processors/FileReader/FileReaderEditor.cpp

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ FullTimeline::FullTimeline(FileReader* fr)
3636

3737
fileReader = fr;
3838

39-
startTimer(200);
39+
startTimer(50);
4040
}
4141

4242
FullTimeline::~FullTimeline() {}
@@ -151,16 +151,8 @@ void FullTimeline::mouseUp(const MouseEvent& event)
151151

152152
static_cast<FileReaderEditor*>(fileReader->getEditor())->updatePlaybackTimes();
153153

154-
fileReader->loopPlayback = false;
155-
156-
if ( fileReader->playbackIsActive() )
154+
if (CoreServices::getAcquisitionStatus())
157155
{
158-
fileReader->stopAcquisition();
159-
fileReader->startAcquisition();
160-
}
161-
else
162-
{
163-
static_cast<FileReaderEditor*>(fileReader->getEditor())->playbackButton->triggerClick();
164156
fileReader->startAcquisition();
165157
}
166158

@@ -182,7 +174,7 @@ ZoomTimeline::ZoomTimeline(FileReader* fr)
182174
sliderWidth = 8;
183175
widthInSeconds = 30;
184176

185-
startTimer(200);
177+
startTimer(50);
186178
}
187179

188180
ZoomTimeline::~ZoomTimeline() {}
@@ -294,7 +286,7 @@ void ZoomTimeline::paint(Graphics& g)
294286
/* Draw the current playback position */
295287
float timelinePos = (float)(fileReader->getCurrentSample() - startTimestamp) / (stopTimestamp - startTimestamp) * getWidth();
296288

297-
if (timelinePos < getWidth())
289+
if (timelinePos < rightSliderPosition + sliderWidth || (timelinePos < rightSliderPosition + sliderWidth && !fileReader->loopPlayback))
298290
{
299291
g.setOpacity(1.0f);
300292
g.fillRoundedRectangle(timelinePos, 0, 1, this->getHeight(), 0.2);
@@ -370,36 +362,40 @@ void ZoomTimeline::mouseUp(const MouseEvent& event)
370362
rightSliderIsSelected = false;
371363
playbackRegionIsSelected = false;
372364

373-
static_cast<FileReaderEditor*>(fileReader->getEditor())->updatePlaybackTimes();
365+
//fileReader->loopPlayback = false;
374366

375-
fileReader->loopPlayback = false;
367+
static_cast<FileReaderEditor*>(fileReader->getEditor())->updatePlaybackTimes();
376368

377-
if ( fileReader->playbackIsActive() )
378-
{
379-
fileReader->stopAcquisition();
380-
fileReader->startAcquisition();
381-
}
382-
else
383-
{
384-
static_cast<FileReaderEditor*>(fileReader->getEditor())->playbackButton->triggerClick();
369+
if (CoreServices::getAcquisitionStatus())
385370
fileReader->startAcquisition();
386-
}
387371

388372
}
389373

390-
PlaybackButton::PlaybackButton(FileReader* fr) : Button ("Playback"), Timer()
374+
PlaybackButton::PlaybackButton(FileReader* fr) : Button ("Playback")
391375
{
392376
fileReader = fr;
393377
isActive = true;
394378
}
395379

396380
PlaybackButton::~PlaybackButton() {}
397381

398-
void PlaybackButton::timerCallback()
382+
void PlaybackButton::setState(bool isActive)
399383
{
400-
isActive = false;
401-
repaint();
402-
stopTimer();
384+
385+
this->isActive = isActive;
386+
387+
if (isActive && !fileReader->playbackIsActive())
388+
{
389+
static_cast<FileReaderEditor*>(fileReader->getEditor())->updatePlaybackTimes();
390+
fileReader->startAcquisition();
391+
}
392+
else if (!isActive)
393+
fileReader->stopAcquisition();
394+
}
395+
396+
bool PlaybackButton::getState()
397+
{
398+
return isActive;
403399
}
404400

405401
void PlaybackButton::paintButton(Graphics &g, bool isMouseOver, bool isButtonDown)
@@ -418,7 +414,7 @@ void PlaybackButton::paintButton(Graphics &g, bool isMouseOver, bool isButtonDow
418414
int width = getWidth();
419415
int height = getHeight();
420416

421-
if (fileReader->playbackIsActive())
417+
if (isActive)
422418
{
423419
/* Draw pause button */
424420
int padding = 0.3*width;
@@ -498,6 +494,7 @@ FileReaderEditor::FileReaderEditor (GenericProcessor* parentNode)
498494

499495
int buttonSize = 24;
500496
playbackButton = new PlaybackButton(fileReader);
497+
playbackButton->setState(true);
501498
playbackButton->setBounds(scrubInterfaceWidth / 2 - buttonSize / 2, 103, buttonSize, buttonSize);
502499
playbackButton->addListener(this);
503500
addChildComponent(playbackButton);
@@ -731,9 +728,10 @@ void FileReaderEditor::buttonClicked (Button* button)
731728

732729
} else if (button == playbackButton) {
733730

734-
fileReader->togglePlayback();
735-
if (fileReader->playbackIsActive())
736-
playbackButton->startTimer(zoomTimeline->getIntervalDurationInSeconds()*1000 + 100);
731+
playbackButton->setState(!playbackButton->getState());
732+
733+
if (playbackButton->getState())
734+
acquisitionIsActive = true;
737735

738736
}
739737

Source/Processors/FileReader/FileReaderEditor.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@ class FileSource;
4242
4343
*/
4444

45-
class PlaybackButton : public Button, public Timer
45+
class PlaybackButton : public Button
4646
{
4747
public:
4848
PlaybackButton(FileReader*);
4949

5050
~PlaybackButton();
5151

52-
void timerCallback() override;
52+
bool getState();
53+
void setState(bool isActive);
5354

5455
private:
5556

0 commit comments

Comments
 (0)