Removed some commented-out test code from CDButton

Time display is updated when player is stopped
Turning off shuffle really takes it out of shuffle mode
Can change tracks while the CD player is not playing
Improved responsiveness of screen updates when changing tracks
Total disc time calculation is fixed


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13644 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm
2005-07-12 15:23:30 +00:00
parent 29aa57037d
commit c552d63dc5
9 changed files with 226 additions and 219 deletions
+2 -2
View File
@@ -442,8 +442,8 @@ CDAudioDevice::GetTimeForDisc(cdaudio_time &disc)
int16 trackcount = toc.toc_data[3] - toc.toc_data[2] + 1;
TrackDescriptor *desc = (TrackDescriptor*)&(toc.toc_data[4]);
disc.minutes = desc[trackcount-1].min;
disc.seconds = desc[trackcount-1].sec;
disc.minutes = desc[trackcount].min;
disc.seconds = desc[trackcount].sec;
return true;
}
-47
View File
@@ -565,50 +565,3 @@ CDDBQuery::FindOrCreateContentFileForDisk(BFile *file, entry_ref *fileRef, int32
}
return false;
}
/*
#include "CDEngine.h"
bool
PrintSite(const char *site, int port, const char *latitude,
const char *longitude, const char *description, void *)
{
printf("server:%s port:%d latitude:%s longitude:%s description: %s\n",
site, port, latitude, longitude, description);
return false;
}
int
main()
{
CDDBQuery query("us.freedb.org", 888, true);
int32 device = CDEngine::FindCDPlayerDevice();
if (!device)
{
printf("no device %s\n", strerror(device));
return 0;
}
scsi_toc toc;
ioctl(device, B_SCSI_GET_TOC, &toc);
int32 discID = query.GetDiscID(&toc);
query.SetToCD(&toc);
BString title;
vector<BString> trackTitles;
query.GetTitles(&title, &trackTitles, 10000000);
printf("CD Title: %s, ID: %lx\n", title.String(), discID);
int32 index = 0;
for (vector<BString>::iterator iterator = trackTitles.begin();
iterator != trackTitles.end(); index++, iterator++)
printf("%ld: %s\n", index, (*iterator).String());
return 0;
}
*/
+47 -14
View File
@@ -36,14 +36,15 @@ void
PeriodicWatcher::DoPulse()
{
// control the period here
if (UpdateState())
if(UpdateState())
Notify();
}
void
PeriodicWatcher::UpdateNow()
{
UpdateState();
if(UpdateState())
Notify();
}
@@ -69,6 +70,7 @@ PlayState::UpdateState(void)
}
}
/* if(state == kPlaying && fEngine->GetState() == kStopped)
{
// This happens when the CD drive is started by R5's player
@@ -118,11 +120,18 @@ TrackState::UpdateState()
// As a result, we want to make sure this hasn't happened. If it has, then we
// need to update the playlist's position.
int16 cdTrack = sCDDevice.GetTrack();
if(cdTrack != sPlayList.GetCurrentTrack())
sPlayList.SetCurrentTrack(cdTrack);
int16 cdTrack;
if(sCDDevice.GetState() == kPlaying)
{
cdTrack = sCDDevice.GetTrack();
if(cdTrack != sPlayList.GetCurrentTrack())
sPlayList.SetCurrentTrack(cdTrack);
return CurrentState(cdTrack);
}
// If we're not playing, just monitor the current track in the playlist
cdTrack = sPlayList.GetCurrentTrack();
return CurrentState(cdTrack);
}
@@ -170,8 +179,7 @@ TimeState::UpdateState()
track.seconds = -1;
disc.minutes = -1;
disc.seconds = -1;
CurrentState(disc,disc,track,track);
return false;
return CurrentState(disc,disc,track,track);
}
}
@@ -373,31 +381,56 @@ void
CDEngine::SkipOneForward()
{
int16 track = sPlayList.GetNextTrack();
if(track <= 0)
return;
{
// force a "wrap around" when possible. This makes it
// possible for the user to be able to, for example, jump
// back to the first track from the last one with 1 button push
track = sPlayList.GetFirstTrack();
if(track <= 0)
return;
}
CDState state = sCDDevice.GetState();
if(state == kPlaying)
sCDDevice.Play(track);
// if(state == kPaused)
// sCDDevice.Pause();
if(state == kPaused)
{
sCDDevice.Play(track);
sCDDevice.Pause();
}
trackState.UpdateNow();
}
void
CDEngine::SkipOneBackward()
{
int16 track = sPlayList.GetPreviousTrack();
if(track <= 0)
return;
{
// force a "wrap around" when possible. This way the user
// can search backwards to get to a later track
track = sPlayList.GetLastTrack();
if(track <= 0)
return;
}
CDState state = sCDDevice.GetState();
if(state == kPlaying)
sCDDevice.Play(track);
// if(state == kPaused)
// sCDDevice.Pause();
if(state == kPaused)
{
sCDDevice.Play(track);
sCDDevice.Pause();
}
trackState.UpdateNow();
}
void
+2 -3
View File
@@ -40,7 +40,6 @@ public:
protected:
virtual bool UpdateState() = 0;
CDEngine *engine;
};
@@ -70,7 +69,7 @@ public:
int32 GetTrack() const;
int32 GetNumTracks() const;
private:
bool UpdateState();
bool CurrentState(int32);
@@ -126,10 +125,10 @@ class VolumeState : public PeriodicWatcher
public:
VolumeState(void);
bool UpdateState();
int32 GetVolume() const;
private:
bool UpdateState();
int32 fVolume;
};
+76 -60
View File
@@ -175,6 +175,7 @@ void CDPlayer::BuildGUI(void)
fRewind->MoveTo(fNextTrack->Frame().right + 10, Bounds().bottom - 5 - fRewind->Frame().Height());
fRewind->SetDisabled(BTranslationUtils::GetBitmap(B_PNG_FORMAT,"rew_disabled"));
AddChild(fRewind);
fRewind->SetEnabled(false);
fFastFwd = new DrawButton( BRect(0,0,1,1), "FastFwd", BTranslationUtils::GetBitmap(B_PNG_FORMAT,"ffwd_up"),
BTranslationUtils::GetBitmap(B_PNG_FORMAT,"ffwd_down"), new BMessage(M_NEXT_TRACK),
@@ -183,6 +184,7 @@ void CDPlayer::BuildGUI(void)
fFastFwd->MoveTo(fRewind->Frame().right + 2, Bounds().bottom - 5 - fFastFwd->Frame().Height());
fFastFwd->SetDisabled(BTranslationUtils::GetBitmap(B_PNG_FORMAT,"ffwd_disabled"));
AddChild(fFastFwd);
fFastFwd->SetEnabled(false);
fEject = new DrawButton( BRect(0,0,1,1), "Eject", BTranslationUtils::GetBitmap(B_PNG_FORMAT,"eject_up"),
BTranslationUtils::GetBitmap(B_PNG_FORMAT,"eject_down"), new BMessage(M_EJECT),
@@ -364,87 +366,34 @@ CDPlayer::HandlePlayState(void)
{
case kNoCD:
{
if(fStop->IsEnabled())
{
fStop->SetEnabled(false);
fPlay->SetEnabled(false);
fNextTrack->SetEnabled(false);
fPrevTrack->SetEnabled(false);
fFastFwd->SetEnabled(false);
fRewind->SetEnabled(false);
fSave->SetEnabled(false);
}
AdjustButtonStates();
fCurrentTrack->SetHighColor(fStopColor);
fCurrentTrack->Invalidate();
break;
}
case kStopped:
{
if(!fStop->IsEnabled())
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(true);
fRewind->SetEnabled(true);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
}
AdjustButtonStates();
fCurrentTrack->SetHighColor(fStopColor);
fCurrentTrack->Invalidate();
break;
}
case kPaused:
{
// TODO: Set play button to Pause
if(!fStop->IsEnabled())
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(true);
fRewind->SetEnabled(true);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
}
AdjustButtonStates();
fCurrentTrack->SetHighColor(fPlayColor);
break;
}
case kPlaying:
{
if(!fStop->IsEnabled())
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(true);
fRewind->SetEnabled(true);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
}
fPlay->SetState(1);
AdjustButtonStates();
fCurrentTrack->SetHighColor(fPlayColor);
fCurrentTrack->Invalidate();
break;
}
case kSkipping:
{
if(!fStop->IsEnabled())
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(true);
fRewind->SetEnabled(true);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
}
AdjustButtonStates();
fCurrentTrack->SetHighColor(fStopColor);
break;
}
@@ -455,6 +404,73 @@ CDPlayer::HandlePlayState(void)
}
}
void
CDPlayer::AdjustButtonStates(void)
{
CDState state = engine->GetState();
switch(state)
{
case kNoCD:
{
// Everything needs to be disabled when there is no CD
fStop->SetEnabled(false);
fPlay->SetEnabled(false);
fNextTrack->SetEnabled(false);
fPrevTrack->SetEnabled(false);
fFastFwd->SetEnabled(false);
fRewind->SetEnabled(false);
fSave->SetEnabled(false);
break;
}
case kStopped:
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(false);
fRewind->SetEnabled(false);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
fPlay->SetState(0);
break;
}
case kPaused:
{
// We can only pause when everything is enabled, so this is all we should do.
fFastFwd->SetEnabled(false);
fRewind->SetEnabled(false);
fPlay->SetState(0);
break;
}
case kPlaying:
{
fStop->SetEnabled(true);
fPlay->SetEnabled(true);
fNextTrack->SetEnabled(true);
fPrevTrack->SetEnabled(true);
fFastFwd->SetEnabled(true);
fRewind->SetEnabled(true);
// TODO: Enable when Save is implemented
// fSave->SetEnabled(true);
fPlay->SetState(1);
break;
}
case kSkipping:
default:
{
break;
}
}
}
void
CDPlayer::UpdateCDInfo(void)
{
+1
View File
@@ -48,6 +48,7 @@ private:
void HandlePlayState(void);
void UpdateCDInfo(void);
void UpdateTimeInfo(void);
void AdjustButtonStates(void);
CDEngine *engine;
+58 -93
View File
@@ -351,120 +351,85 @@ resource(24, "save_disabled") #'PNG ' array {
};
resource(25, "repeat_up") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445FFFFFF000000E6E6E6DCDCDC6C6C6C008300BB001C5100"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000007E49444154789CAD8F510EC0200843ADD5FB5F79"
$"90AA1B62B264593FB6525E104A9148D0BFE4ACCDA9244CAB6D662026A80976A8"
$"E9FDA39B16F31723448A21C2D49885A49255C930AC59A24334A8C31204889F93"
$"6DC5B6BDEEC961E77A96E1320DE98CE7D3E8DDCE1283CC605562B6AD9F10FF66"
$"4ED01DE5BBB29C696FC205B240065004A187160000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F4000000A049444154789CED96CD0DC3200C461F15A3782486F104886118893B"
$"1BE44A0F154A0FADF86922A2A8EF6CACC767846C4A29850B608CC102E49C978A"
$"78EF015E3200DBB62D93A93C560BBC735F191121C6387DFEF06454755AC8B64B"
$"7644A45B48550921E09CEBEE7FEA9B51D5EE0BC0C9322104524ADDF543636A35"
$"AE298C8EA7727832B32230984C8B91917CE2BE9FDEAFFC65BE6161DF27566380"
$"4B6C7A004F04A22A52A51390770000000049454E44AE426082"
};
resource(26, "repeat_down") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445000000FFFFFF6C6C6CE6E6E6BEBEBE0083004C8424AC00"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000007C49444154789CAD90510EC0200843CBACF7BFF2"
$"40D40D313159D60F85478320E022413BF5EEB991963632CB4631245E04AB7851"
$"B58F4688714584E86240F3B9DE4B92907591A15951E28B78A30A2508267E26CB"
$"886579DDC866E6EBA022698DF041B5EA5AEE41F66066EE59A67E9BF8B767677A"
$"50DE2BCB3CE524B9012C9D0763558616CC0000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F4000000A449444154789CED96410D03211045DF3698C0080290800E041014A0"
$"0A012B041BD34343DA4BCB4269D86CFAAE0393C71F42D800E10488080AC07BBF"
$"5424C608F0900170CE2D93A9DC560BBC725D196B2DFBBE0FEF9F9E4C08615848"
$"B5973CB1D61E16024829618C39DCFFA777268470F800D0994C2FBDC974C9E49C"
$"3FD66B0ABD1295E9631A1581C9636A25D7E2BA8FDEB7FC65DEB101524A59ED81"
$"D61A25728A8F1E0077F2B428384A1FEECA0000000049454E44AE426082"
};
resource(27, "repeat_up_on") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445FFFFFF000000E6E6E66C6C6CDCDCDC00FF00911226CA00"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000007B49444154789CAD8FDB0EC0200843AD96FFFFE5"
$"6110276262B2AC0F0AE5844B292612EC2FE9B9469612AA59D660202A58111458"
$"B1D78F9187F02F5A88148305D7E885A49255C9D0ACA963875823813A08103F3B"
$"DB8A6D9BDE9DC3CEF5A28674C63A1A227A9631C80C6666CCB6F50AF16FE604BD"
$"56BE2BAB33ED263C9CF907A6D61A86EF0000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F4000000E849444154789CCD96410E832010451F8D47992371983981E1301C69"
$"F6DEC0AD5D588C6DD102B6D59FB011828F99FF096E9AA6890BC8394707300CC3"
$"A9207DDF03CC3000E3389E0693D47D5EB2AD1823AAFAF6DDCC9AF6BBB5428848"
$"160440448831FE1E26578D10C23292541511A9DABBBA4D6B901002DEFBA779EF"
$"FD13B08814B7ADAA32EBD2E740D640EB2A95AA0A269D760F240754DAAE2603E7"
$"54EB8F9C9A6054359B9657A0ADB46DA9CAC066B6FC702FD6C9B0697DA981ABD3"
$"D40254AAA63699D96E5AFE7A03C39C16335BC651904330391D01812FC21C0581"
$"8781D37BE26C39E0122F3D803B2D1971A06BDE4E510000000049454E44AE4260"
$"82"
};
resource(28, "repeat_down_on") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445000000FFFFFF6C6C6CE6E6E6BEBEBE00FF00CF0E125600"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000007C49444154789CAD90510EC0200843CBACF7BFF2"
$"40D40D313159D60F85478320E022413BF5EEB991963632CB4631245E04AB7851"
$"B58F4688714584E86240F3B9DE4B92907591A15951E28B78A30A2508267E26CB"
$"886579DDC866E6EBA022698DF041B5EA5AEE41F66066EE59A67E9BF8B767677A"
$"50DE2BCB3CE524B9012C9D0763558616CC0000000049454E44AE426082"
};
resource(29, "repeat_disabled") #'PNG ' array {
$"89504E470D0A1A0A0000000D494844520000002300000013080000000148CFDB"
$"BE000000096F464673000000000000000000DA2AB6CE00000009704859730000"
$"0FA000000FA001A06A8C77000000B749444154789C8D90BD15C3200C843FF254"
$"658E8CA13A63A574ED22D3B8D618A18D37704B0AC008E2FCA841EF743A4E1712"
$"8010310D290221011281134048D100AD634C330520483400BD111E05BB9CA8D5"
$"BAB20BA6E57134C0401D5FF781E4E1080FB51B6A7BEBD6E9EB2C59482D0B2D10"
$"9E4BAF38779E86133E2392459D45F9E2B5795E8F071B9C0198EE02FD194E76B3"
$"85ABE6846AAC1D57B31DA5A4E828B5D54AE2E8AEF7FA97D3F218FC789D83843C"
$"244C3FFF7A014CCF345764741A860000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F4000000FF49444154789CCD96E16DC4200C46DF5559820D328107F008998301"
$"5026602A066090AC417FB4AE92964B8144BAFBA4281120787CB6210FA0F0062A"
$"A5300178EF5F0AB2AE2BC0170CC0B22C2F83314DFF0F79AE9C3321843FED29A5"
$"A1F93E462154B50A02A0AAE49CBBE7ED76A6E6468CF1E7DBFAECDDE35237CC1E"
$"24C688881CFA534A0760556D06EA0AD3DEFA1A8849440E6EB5AA0BC6767B0652"
$"0352D5FB61CED4BAE09986604208D56AF90DF4ACDA6E81D927A201D95303B2F1"
$"AD09FC008AF7BEEB046E09494F49CFF38C736E2C4C29A5D36A193D8187AF0311"
$"392C6A6E8D82C08DD504D740E04698AB20F09DC0DBB65DA7B928E71C53296FF1"
$"A307C02781096F058F7CB3C80000000049454E44AE426082"
};
resource(30, "shuffle_up") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445FFFFFF000000E6E6E66C6C6CDCDCDC0083001298103000"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000008E49444154789C85925B16802008449DC4FD6F39"
$"E46581E57C100EF720786A4D452C8F715E26113803C05F4758B0228DC8088D21"
$"E19E5EA4DEAD5842CDEE8012D22559DABFA8555DE9BE9E9C81EC5061D4818C02"
$"1B881D9845E1F86131A5CF66E6EBA08EBCC67BA73178AD7F46063B3132E064E0"
$"3BC9EBFBABEB91EC2EAD58D9330DD830FE2B44D8311F77F5937003992A073AE8"
$"E0FDC50000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F40000007D49444154789CDD96B90DC0200C00CF11A3302B53D2B3012D292224"
$"37F9142343AE85E2EC6B2CADB5C604880801A094E22A9252023864006AAD6E32"
$"9DCD5B4013EEBF408CF1F42DE76C26B3DE662CA7BFE2918C6664B2F532694626"
$"7B2DA3B14EB676268D75B24F321A8B64FFC9A4B14836DF66FA3DE18D00535C7A"
$"003B6C0624445116DF550000000049454E44AE426082"
};
resource(31, "shuffle_down") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445000000FFFFFF6C6C6CE6E6E6BEBEBE0083004C8424AC00"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000008749444154789C85925B168020084487C4FD6F39"
$"792847B09C0F8E0CD7800A30F1D08C2B0F5312F3B19021F222F775621248B9DD"
$"DB846A298518430FD9528A8A50F5A47E2D391DD9E1C29803D8C63A86DC825BBC"
$"9C9904539E7398F9B9A8515E63DFA9F7B1D63FA383DD181D509878D9B00FCE91"
$"B2F7B28A97E7C9020E8CFF0A114ECC47AF7613BD278906D3979AD3BB00000000"
$"49454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F40000008649444154789CDD96B90DC0200C008F8825588711988309188E7158"
$"C329A2486EF2298E805C6B1787AFC101C20088081E20E7DC55A49402B0C900A4"
$"94BAC9EC2CBD0534FE7A05628C87B35AAB99CC7C97B17CFD19B764345F269B2F"
$"93E6CB648F6534D6C9E6CEA4B14EF64A466391EC3F993416C986BA8C03A4B5D6"
$"DB8310025E64888F1E002BA1FC23C06E93FD8D0000000049454E44AE426082"
};
resource(32, "shuffle_up_on") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445FFFFFF000000E6E6E66C6C6CDCDCDC00FF00911226CA00"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000008E49444154789C85925B16802008449DC4FD6F39"
$"E46581E57C100EF720786A4D452C8F715E26113803C05F4758B0228DC8088D21"
$"E19E5EA4DEAD5842CDEE8012D22559DABFA8555DE9BE9E9C81EC5061D4818C02"
$"1B881D9845E1F86131A5CF66E6EBA08EBCC67BA73178AD7F46063B3132E064E0"
$"3BC9EBFBABEB91EC2EAD58D9330DD830FE2B44D8311F77F5937003992A073AE8"
$"E0FDC50000000049454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F40000007D49444154789CDD96B10DC0200C04CF11A3302B53D2B301AD534428"
$"3421141070AE85E2FC2F904555950D10111C404A69A9480801E09201C8392F93"
$"291CAB056ADCFB15F0DE3F9EC51887C9D84B66E4F42DBA646A665666AFA69A99"
$"953565BE7A45053B35F54C3F323D3BC9F4F0DB1F782B1907F73EB11A01B6D8F4"
$"004E58642442B55F4BCA0000000049454E44AE426082"
};
resource(33, "shuffle_down_on") #'PNG ' array {
$"89504E470D0A1A0A0000000D49484452000000230000001308030000015A7A74"
$"5000000012504C5445000000FFFFFF6C6C6CE6E6E6BEBEBE00FF00CF0E125600"
$"0000096F464673000000000000000000DA2AB6CE000000097048597300000FA0"
$"00000FA001A06A8C770000008749444154789C85925B168020084487C4FD6F39"
$"792847B09C0F8E0CD7800A30F1D08C2B0F5312F3B19021F222F775621248B9DD"
$"DB846A298518430FD9528A8A50F5A47E2D391DD9E1C29803D8C63A86DC825BBC"
$"9C9904539E7398F9B9A8515E63DFA9F7B1D63FA383DD181D509878D9B00FCE91"
$"B2F7B28A97E7C9020E8CFF0A114ECC47AF7613BD278906D3979AD3BB00000000"
$"49454E44AE426082"
};
resource(34, "shuffle_disabled") #'PNG ' array {
$"89504E470D0A1A0A0000000D494844520000002300000013080000000148CFDB"
$"BE000000096F464673000000000000000000DA2AB6CE00000009704859730000"
$"0FA000000FA001A06A8C77000000C449444154789C7D91B115C2301043BFFD3C"
$"0A63A8661B56A0A4A66001D648AD31480B1BA43585ED042721AA2C9DDE597717"
$"324062042200210369E6218F0058213F4156B50084548A5C09AFAA9DA2B131FC"
$"68AD4B83758AF410440CD8002E8FB431ED610E34237DA6FEBFFBAAD300E13DF5"
$"DA7D9D091218614018998885D112262217E29667D3792FF3677F9819B74782E9"
$"6FD903676D36D4A3A63CF4D43922D86DFF06B743148A8B07C958AA2AA2D13A7D"
$"BF43999EEF781065CBB29703877C394C0D3CBE855E4A1104D8C6E70000000049"
$"454E44AE426082"
$"89504E470D0A1A0A0000000D49484452000000230000001308060000001AA3B4"
$"F40000008649444154789CDD96D10DC01014004F6309EB18C11C26309C71ACF1"
$"FAD148A4495513AA7ABF7C1C475080F00144040DE0BD9F2A1242003864009C73"
$"D36432DB6C81127D3F05ACB5976331C66E32EBED4CCFD5D768922919996CBD4C"
$"2523935565DEBA45997532BD758B328FCFCC999E29D7C9D4C26F9F0305484A69"
$"B607C618B4C8273E7A00EC731B23C09F9ED4020000000049454E44AE426082"
};
resource(35, "pause_up") #'PNG ' array {
+37
View File
@@ -83,6 +83,8 @@ PlayList::SetShuffle(const bool &random)
else
Unrandomize();
fRandom = random;
fLocker.Unlock();
}
@@ -185,6 +187,41 @@ PlayList::GetPreviousTrack(void)
return value;
}
int16
PlayList::GetLastTrack(void)
{
fLocker.Lock();
if(fTrackCount < 1)
{
fLocker.Unlock();
return -1;
}
fTrackIndex = fTrackCount - 1;
int16 value = fTrackList[fTrackIndex];
fLocker.Unlock();
return value;
}
int16
PlayList::GetFirstTrack(void)
{
fLocker.Lock();
if(fTrackCount < 1)
{
fLocker.Unlock();
return -1;
}
fTrackIndex = 0;
int16 value = fTrackList[fTrackIndex];
fLocker.Unlock();
return value;
}
void
PlayList::Randomize(void)
{
+3
View File
@@ -29,6 +29,9 @@ public:
int16 GetNextTrack(void);
int16 GetPreviousTrack(void);
int16 GetFirstTrack(void);
int16 GetLastTrack(void);
private:
void Randomize(void);
void Unrandomize(void);