-Refactoring ClipSelector

This commit is contained in:
Harry van Haaren 2013-07-27 16:10:17 +01:00
parent b06d4f73ef
commit fc077a804b

View file

@ -56,10 +56,10 @@ class ClipState
name = n; name = n;
} }
void play(){_playing = true;} void play(){_playing = true;}
void stop(){_playing = false;} void stop(){_playing = false; _recording = false;}
void queue(){_queued = true;} void queue(){_queued = true;}
void stopQueue(){_queued = false;} void stopQueue(){_queued = false;}
void record(){_recording = true;} void record(){_recording = true; _loaded = true;}
void stopRecord(){_recording = false;} void stopRecord(){_recording = false;}
bool loaded(){return _loaded;} bool loaded(){return _loaded;}
@ -128,6 +128,7 @@ class ClipSelector : public Fl_Button
{ {
case Looper::STATE_PLAYING: case Looper::STATE_PLAYING:
printf("clipSelector setState() clip %i = CLIP_PLAYING\n", clipNum); printf("clipSelector setState() clip %i = CLIP_PLAYING\n", clipNum);
clips[clipNum].play();
break; break;
case Looper::STATE_PLAY_QUEUED: case Looper::STATE_PLAY_QUEUED:
clips[clipNum].queue(); clips[clipNum].queue();
@ -291,8 +292,6 @@ class ClipSelector : public Fl_Button
int clipNum = ( (Fl::event_y() ) - y ) / clipHeight; int clipNum = ( (Fl::event_y() ) - y ) / clipHeight;
if (clipNum >= numClips) if (clipNum >= numClips)
clipNum = numClips -1; // fix for clicking the lowest pixel clipNum = numClips -1; // fix for clicking the lowest pixel
//printf("clip number %i. Playing %i, rec %i, Q %i, StopQ, %i\n" , clipNum, recordingClip, queuedClip, stopQueuedClip );
// handle right clicks: popup menu // handle right clicks: popup menu
if ( Fl::event_state(FL_BUTTON3) ) if ( Fl::event_state(FL_BUTTON3) )
@ -349,50 +348,48 @@ class ClipSelector : public Fl_Button
} }
else else
{ {
/*
// decide action to take based on current state of clip // decide action to take based on current state of clip
if ( clipNum == queuedClip ) if ( clips[clipNum].queued() )
{ {
} }
else if ( clipNum == playingClip ) else if ( clips[clipNum].playing() )
{ {
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED); EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED);
writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
//playingClip = -1; clips[clipNum].stop();
//stopQueuedClip = clipNum; //clips[clipNum].stopQueue();
printf("stopping clip now: playingClip == %i", clipNum ); printf("stopping clip now: playingClip == %i", clipNum );
} }
else if ( clipNum == recordingClip ) else if ( clips[clipNum].recording() )
{ {
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED); EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED);
writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
//recordingClip = -1; clips[clipNum].record();
//stopQueuedClip = -1;
//clips[clipNum].loaded = true;
} }
/*
else if ( clipNum == stopQueuedClip ) else if ( clipNum == stopQueuedClip )
{ {
playingClip = -1; playingClip = -1;
} }
else if ( clips[clipNum].loaded ) */
else if ( clips[clipNum].loaded() )
{ {
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_PLAY_QUEUED); EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_PLAY_QUEUED);
writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
queuedClip = clipNum; //queuedClip = clipNum;
} }
else if ( !clips[clipNum].loaded ) else if ( !clips[clipNum].loaded() )
{ {
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_RECORD_QUEUED); EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_RECORD_QUEUED);
writeToDspRingbuffer( &e ); writeToDspRingbuffer( &e );
recordingClip = clipNum;
} }
else else
{ {
printf("avtk clipSelector handle click: no state triggered"); printf("avtk clipSelector handle click: no state triggered");
} }
/*
switch( clips[clipNum].state ) switch( clips[clipNum].state )
{ {
case ClipState::CLIP_EMPTY: case ClipState::CLIP_EMPTY: