Fixed lookups when CDs are changed
Artist is again displayed alongside the CD title Fixed button state updates when CDs are changed git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13868 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -78,6 +78,11 @@ CDDBQuery::CDDBQuery(const char *server, int32 port, bool log)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CDDBQuery::~CDDBQuery(void)
|
||||||
|
{
|
||||||
|
kill_thread(fThread);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDDBQuery::SetToSite(const char *server, int32 port)
|
CDDBQuery::SetToSite(const char *server, int32 port)
|
||||||
{
|
{
|
||||||
@@ -121,9 +126,10 @@ CDDBQuery::SetToCD(const char *path)
|
|||||||
{
|
{
|
||||||
int32 discID = GetDiscID(&toc);
|
int32 discID = GetDiscID(&toc);
|
||||||
|
|
||||||
if (fDiscID == discID);
|
if (fDiscID == discID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
fDiscID = discID;
|
||||||
fTrackCount = GetTrackCount(&toc);
|
fTrackCount = GetTrackCount(&toc);
|
||||||
|
|
||||||
cdaudio_time time = GetDiscTime(&toc);
|
cdaudio_time time = GetDiscTime(&toc);
|
||||||
@@ -221,7 +227,11 @@ CDDBQuery::GetTitles(BString *resultingTitle, vector<BString> *tracks, bigtime_t
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (resultingTitle)
|
if (resultingTitle)
|
||||||
*resultingTitle = fTitle;
|
{
|
||||||
|
*resultingTitle = fArtist;
|
||||||
|
resultingTitle->Append(" / ");
|
||||||
|
resultingTitle->Append(fTitle);
|
||||||
|
}
|
||||||
|
|
||||||
if (tracks)
|
if (tracks)
|
||||||
*tracks = fTrackNames;
|
*tracks = fTrackNames;
|
||||||
@@ -515,6 +525,7 @@ CDDBQuery::OpenContentFile(const int32 &discID)
|
|||||||
BString tmp = GetLineFromString(trackdata);
|
BString tmp = GetLineFromString(trackdata);
|
||||||
char *index;
|
char *index;
|
||||||
|
|
||||||
|
fTrackNames.clear();
|
||||||
fArtist = tmp;
|
fArtist = tmp;
|
||||||
fArtist.Truncate(fArtist.FindFirst(" - "));
|
fArtist.Truncate(fArtist.FindFirst(" - "));
|
||||||
|
|
||||||
@@ -567,7 +578,6 @@ CDDBQuery::QueryThread(void *owner)
|
|||||||
query->fState = kError;
|
query->fState = kError;
|
||||||
query->fResult = error;
|
query->fResult = error;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,12 +14,18 @@ class CDDBQuery
|
|||||||
public:
|
public:
|
||||||
CDDBQuery(const char *server, int32 port = 888,
|
CDDBQuery(const char *server, int32 port = 888,
|
||||||
bool log = false);
|
bool log = false);
|
||||||
|
~CDDBQuery(void);
|
||||||
void SetToSite(const char *server, int32 port);
|
void SetToSite(const char *server, int32 port);
|
||||||
void GetSites(bool (*)(const char *site, int port,
|
void GetSites(bool (*)(const char *site, int port,
|
||||||
const char *latitude, const char *longitude,
|
const char *latitude, const char *longitude,
|
||||||
const char *description, void *state), void *);
|
const char *description, void *state), void *);
|
||||||
|
|
||||||
void SetToCD(const char *devicepath);
|
void SetToCD(const char *devicepath);
|
||||||
|
|
||||||
|
const char * GetArtist(void) { return fArtist.String(); }
|
||||||
|
const char * GetAlbum(void) { return fTitle.String(); }
|
||||||
|
const char * GetGenre(void) { return fCategory.String(); }
|
||||||
|
|
||||||
bool GetTitles(BString *title, vector<BString> *tracks,
|
bool GetTitles(BString *title, vector<BString> *tracks,
|
||||||
bigtime_t timeout);
|
bigtime_t timeout);
|
||||||
|
|
||||||
@@ -32,8 +38,7 @@ public:
|
|||||||
static void GetTrackTimes(const scsi_toc *, vector<cdaudio_time> ×);
|
static void GetTrackTimes(const scsi_toc *, vector<cdaudio_time> ×);
|
||||||
static BString OffsetsToString(const scsi_toc *);
|
static BString OffsetsToString(const scsi_toc *);
|
||||||
|
|
||||||
// TODO: make private again once finished with testing
|
private:
|
||||||
//private:
|
|
||||||
void Connect();
|
void Connect();
|
||||||
void Disconnect();
|
void Disconnect();
|
||||||
bool IsConnected() const;
|
bool IsConnected() const;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
#include "PlayList.h"
|
#include "PlayList.h"
|
||||||
|
|
||||||
static PlayList sPlayList;
|
static PlayList sPlayList;
|
||||||
static CDAudioDevice sCDDevice;
|
CDAudioDevice gCDDevice;
|
||||||
|
|
||||||
const bigtime_t kPulseRate = 500000;
|
const bigtime_t kPulseRate = 500000;
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ PlayState::PlayState(CDEngine *engine)
|
|||||||
bool
|
bool
|
||||||
PlayState::UpdateState(void)
|
PlayState::UpdateState(void)
|
||||||
{
|
{
|
||||||
CDState state = sCDDevice.GetState();
|
CDState state = gCDDevice.GetState();
|
||||||
if(state == kStopped)
|
if(state == kStopped)
|
||||||
{
|
{
|
||||||
if(fEngine->GetState() == kPlaying)
|
if(fEngine->GetState() == kPlaying)
|
||||||
@@ -67,14 +67,14 @@ PlayState::UpdateState(void)
|
|||||||
int16 next = sPlayList.GetNextTrack();
|
int16 next = sPlayList.GetNextTrack();
|
||||||
if(next > 0)
|
if(next > 0)
|
||||||
{
|
{
|
||||||
sCDDevice.Play(next);
|
gCDDevice.Play(next);
|
||||||
return CurrentState(kPlaying);
|
return CurrentState(kPlaying);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sPlayList.SetTrackCount(sCDDevice.CountTracks());
|
sPlayList.SetTrackCount(gCDDevice.CountTracks());
|
||||||
sPlayList.SetStartingTrack(sCDDevice.GetTrack());
|
sPlayList.SetStartingTrack(gCDDevice.GetTrack());
|
||||||
return CurrentState(kPlaying);
|
return CurrentState(kPlaying);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,8 +85,8 @@ PlayState::UpdateState(void)
|
|||||||
// or this app is started while the drive is playing. We should
|
// or this app is started while the drive is playing. We should
|
||||||
// reset the to start at the current track and finish at the
|
// reset the to start at the current track and finish at the
|
||||||
// last one and send a notification.
|
// last one and send a notification.
|
||||||
sPlayList.SetTrackCount(sCDDevice.CountTracks());
|
sPlayList.SetTrackCount(gCDDevice.CountTracks());
|
||||||
sPlayList.SetStartingTrack(sCDDevice.GetTrack());
|
sPlayList.SetStartingTrack(gCDDevice.GetTrack());
|
||||||
return CurrentState(kPlaying);
|
return CurrentState(kPlaying);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,9 +130,9 @@ TrackState::UpdateState()
|
|||||||
|
|
||||||
int16 cdTrack, count;
|
int16 cdTrack, count;
|
||||||
|
|
||||||
if(sCDDevice.GetState() == kPlaying)
|
if(gCDDevice.GetState() == kPlaying)
|
||||||
{
|
{
|
||||||
cdTrack = sCDDevice.GetTrack();
|
cdTrack = gCDDevice.GetTrack();
|
||||||
if(cdTrack != sPlayList.GetCurrentTrack())
|
if(cdTrack != sPlayList.GetCurrentTrack())
|
||||||
sPlayList.SetCurrentTrack(cdTrack);
|
sPlayList.SetCurrentTrack(cdTrack);
|
||||||
return CurrentState(cdTrack, trackCount);
|
return CurrentState(cdTrack, trackCount);
|
||||||
@@ -140,14 +140,14 @@ TrackState::UpdateState()
|
|||||||
|
|
||||||
// If we're not playing, just monitor the current track in the playlist
|
// If we're not playing, just monitor the current track in the playlist
|
||||||
cdTrack = sPlayList.GetCurrentTrack();
|
cdTrack = sPlayList.GetCurrentTrack();
|
||||||
count = sCDDevice.CountTracks();
|
count = gCDDevice.CountTracks();
|
||||||
return CurrentState(cdTrack,count);
|
return CurrentState(cdTrack,count);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32
|
int32
|
||||||
TrackState::GetNumTracks() const
|
TrackState::GetNumTracks() const
|
||||||
{
|
{
|
||||||
return sCDDevice.CountTracks();
|
return gCDDevice.CountTracks();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -172,14 +172,14 @@ TimeState::UpdateState()
|
|||||||
cdaudio_time track;
|
cdaudio_time track;
|
||||||
cdaudio_time disc;
|
cdaudio_time disc;
|
||||||
|
|
||||||
if(sCDDevice.GetTime(track,disc))
|
if(gCDDevice.GetTime(track,disc))
|
||||||
{
|
{
|
||||||
cdaudio_time ttrack;
|
cdaudio_time ttrack;
|
||||||
cdaudio_time tdisc;
|
cdaudio_time tdisc;
|
||||||
int16 ctrack = sCDDevice.GetTrack();
|
int16 ctrack = gCDDevice.GetTrack();
|
||||||
|
|
||||||
sCDDevice.GetTimeForDisc(tdisc);
|
gCDDevice.GetTimeForDisc(tdisc);
|
||||||
sCDDevice.GetTimeForTrack(ctrack,ttrack);
|
gCDDevice.GetTimeForTrack(ctrack,ttrack);
|
||||||
|
|
||||||
return CurrentState(track,ttrack,disc,tdisc);
|
return CurrentState(track,ttrack,disc,tdisc);
|
||||||
}
|
}
|
||||||
@@ -240,8 +240,7 @@ TimeState::GetTotalTrackTime(int32 &minutes, int32 &seconds) const
|
|||||||
|
|
||||||
CDContentWatcher::CDContentWatcher(void)
|
CDContentWatcher::CDContentWatcher(void)
|
||||||
: cddbQuery("us.freedb.org", 888, true),
|
: cddbQuery("us.freedb.org", 888, true),
|
||||||
discID(-1),
|
discID(-1)
|
||||||
fReady(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,20 +263,7 @@ CDContentWatcher::UpdateState()
|
|||||||
{
|
{
|
||||||
int32 newDiscID = -1;
|
int32 newDiscID = -1;
|
||||||
|
|
||||||
// Check the table of contents to see if the new one is different
|
if (engine->PlayStateWatcher()->GetState() == kNoCD)
|
||||||
// from the old one whenever there is a CD in the drive
|
|
||||||
if (engine->PlayStateWatcher()->GetState() != kNoCD)
|
|
||||||
{
|
|
||||||
newDiscID = sCDDevice.GetDiscID();
|
|
||||||
|
|
||||||
if (discID == newDiscID)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// We have changed CDs, so we are not ready until the CDDB lookup finishes
|
|
||||||
cddbQuery.SetToCD(sCDDevice.GetDrivePath());
|
|
||||||
fReady=false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if(discID != -1)
|
if(discID != -1)
|
||||||
{
|
{
|
||||||
@@ -288,17 +274,24 @@ CDContentWatcher::UpdateState()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the CD has changed and the CDDB query is ready, we set to true so that
|
// Check the table of contents to see if the new one is different
|
||||||
// when UpdateState returns, a notification is sent
|
// from the old one whenever there is a CD in the drive
|
||||||
bool result = ( (fReady != cddbQuery.Ready()) && (newDiscID != discID) );
|
newDiscID = gCDDevice.GetDiscID();
|
||||||
|
|
||||||
if(result)
|
if (discID == newDiscID)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// We have changed CDs, so we are not ready until the CDDB lookup finishes
|
||||||
|
cddbQuery.SetToCD(gCDDevice.GetDrivePath());
|
||||||
|
|
||||||
|
// Notify when the query is ready
|
||||||
|
if(cddbQuery.Ready())
|
||||||
{
|
{
|
||||||
fReady = true;
|
|
||||||
discID = newDiscID;
|
discID = newDiscID;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
VolumeState::VolumeState(void)
|
VolumeState::VolumeState(void)
|
||||||
@@ -309,7 +302,7 @@ VolumeState::VolumeState(void)
|
|||||||
bool
|
bool
|
||||||
VolumeState::UpdateState(void)
|
VolumeState::UpdateState(void)
|
||||||
{
|
{
|
||||||
uint8 volume = sCDDevice.GetVolume();
|
uint8 volume = gCDDevice.GetVolume();
|
||||||
if(fVolume == volume)
|
if(fVolume == volume)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -328,7 +321,7 @@ CDEngine::CDEngine(void)
|
|||||||
playState(this),
|
playState(this),
|
||||||
fEngineState(kStopped)
|
fEngineState(kStopped)
|
||||||
{
|
{
|
||||||
sPlayList.SetTrackCount(sCDDevice.CountTracks());
|
sPlayList.SetTrackCount(gCDDevice.CountTracks());
|
||||||
}
|
}
|
||||||
|
|
||||||
CDEngine::~CDEngine()
|
CDEngine::~CDEngine()
|
||||||
@@ -349,8 +342,8 @@ CDEngine::AttachedToLooper(BLooper *looper)
|
|||||||
void
|
void
|
||||||
CDEngine::Pause()
|
CDEngine::Pause()
|
||||||
{
|
{
|
||||||
sCDDevice.Pause();
|
gCDDevice.Pause();
|
||||||
fEngineState = sCDDevice.GetState();
|
fEngineState = gCDDevice.GetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -358,8 +351,8 @@ CDEngine::Play()
|
|||||||
{
|
{
|
||||||
if(fEngineState == kPaused)
|
if(fEngineState == kPaused)
|
||||||
{
|
{
|
||||||
sCDDevice.Resume();
|
gCDDevice.Resume();
|
||||||
fEngineState = sCDDevice.GetState();
|
fEngineState = gCDDevice.GetState();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(fEngineState == kPlaying)
|
if(fEngineState == kPlaying)
|
||||||
@@ -368,8 +361,8 @@ CDEngine::Play()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sCDDevice.Play(sPlayList.GetCurrentTrack());
|
gCDDevice.Play(sPlayList.GetCurrentTrack());
|
||||||
fEngineState = sCDDevice.GetState();
|
fEngineState = gCDDevice.GetState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -377,14 +370,14 @@ void
|
|||||||
CDEngine::Stop()
|
CDEngine::Stop()
|
||||||
{
|
{
|
||||||
fEngineState = kStopped;
|
fEngineState = kStopped;
|
||||||
sCDDevice.Stop();
|
gCDDevice.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDEngine::Eject()
|
CDEngine::Eject()
|
||||||
{
|
{
|
||||||
sCDDevice.Eject();
|
gCDDevice.Eject();
|
||||||
fEngineState = sCDDevice.GetState();
|
fEngineState = gCDDevice.GetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -403,14 +396,14 @@ CDEngine::SkipOneForward()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDState state = sCDDevice.GetState();
|
CDState state = gCDDevice.GetState();
|
||||||
if(state == kPlaying)
|
if(state == kPlaying)
|
||||||
sCDDevice.Play(track);
|
gCDDevice.Play(track);
|
||||||
|
|
||||||
if(state == kPaused)
|
if(state == kPaused)
|
||||||
{
|
{
|
||||||
sCDDevice.Play(track);
|
gCDDevice.Play(track);
|
||||||
sCDDevice.Pause();
|
gCDDevice.Pause();
|
||||||
}
|
}
|
||||||
trackState.UpdateNow();
|
trackState.UpdateNow();
|
||||||
}
|
}
|
||||||
@@ -430,15 +423,15 @@ CDEngine::SkipOneBackward()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDState state = sCDDevice.GetState();
|
CDState state = gCDDevice.GetState();
|
||||||
|
|
||||||
if(state == kPlaying)
|
if(state == kPlaying)
|
||||||
sCDDevice.Play(track);
|
gCDDevice.Play(track);
|
||||||
|
|
||||||
if(state == kPaused)
|
if(state == kPaused)
|
||||||
{
|
{
|
||||||
sCDDevice.Play(track);
|
gCDDevice.Play(track);
|
||||||
sCDDevice.Pause();
|
gCDDevice.Pause();
|
||||||
}
|
}
|
||||||
trackState.UpdateNow();
|
trackState.UpdateNow();
|
||||||
}
|
}
|
||||||
@@ -446,19 +439,19 @@ CDEngine::SkipOneBackward()
|
|||||||
void
|
void
|
||||||
CDEngine::StartSkippingBackward()
|
CDEngine::StartSkippingBackward()
|
||||||
{
|
{
|
||||||
sCDDevice.StartRewind();
|
gCDDevice.StartRewind();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDEngine::StartSkippingForward()
|
CDEngine::StartSkippingForward()
|
||||||
{
|
{
|
||||||
sCDDevice.StartFastFwd();
|
gCDDevice.StartFastFwd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDEngine::StopSkipping()
|
CDEngine::StopSkipping()
|
||||||
{
|
{
|
||||||
sCDDevice.StopFastFwd();
|
gCDDevice.StopFastFwd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -466,14 +459,14 @@ CDEngine::SelectTrack(int32 trackNumber)
|
|||||||
{
|
{
|
||||||
sPlayList.SetCurrentTrack(trackNumber);
|
sPlayList.SetCurrentTrack(trackNumber);
|
||||||
if(playState.GetState() == kPlaying)
|
if(playState.GetState() == kPlaying)
|
||||||
sCDDevice.Play(trackNumber);
|
gCDDevice.Play(trackNumber);
|
||||||
trackState.UpdateNow();
|
trackState.UpdateNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CDEngine::SetVolume(uint8 value)
|
CDEngine::SetVolume(uint8 value)
|
||||||
{
|
{
|
||||||
sCDDevice.SetVolume(value);
|
gCDDevice.SetVolume(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -485,12 +478,12 @@ CDEngine::ToggleShuffle(void)
|
|||||||
int16 track = sPlayList.GetCurrentTrack();
|
int16 track = sPlayList.GetCurrentTrack();
|
||||||
sPlayList.SetShuffle(false);
|
sPlayList.SetShuffle(false);
|
||||||
sPlayList.SetStartingTrack(track);
|
sPlayList.SetStartingTrack(track);
|
||||||
sPlayList.SetTrackCount(sCDDevice.CountTracks());
|
sPlayList.SetTrackCount(gCDDevice.CountTracks());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Not shuffled, so we will play the entire CD and randomly pick
|
// Not shuffled, so we will play the entire CD and randomly pick
|
||||||
sPlayList.SetTrackCount(sCDDevice.CountTracks());
|
sPlayList.SetTrackCount(gCDDevice.CountTracks());
|
||||||
sPlayList.SetShuffle(true);
|
sPlayList.SetShuffle(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ private:
|
|||||||
|
|
||||||
CDDBQuery cddbQuery;
|
CDDBQuery cddbQuery;
|
||||||
int32 discID;
|
int32 discID;
|
||||||
bool fReady;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// this watcher sends notices to observers that are interested
|
// this watcher sends notices to observers that are interested
|
||||||
@@ -225,5 +224,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern CDAudioDevice gCDDevice;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -357,6 +357,7 @@ CDPlayer::NoticeChange(Notifier *notifier)
|
|||||||
|
|
||||||
if(ps)
|
if(ps)
|
||||||
{
|
{
|
||||||
|
AdjustButtonStates();
|
||||||
HandlePlayState();
|
HandlePlayState();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -393,34 +394,29 @@ CDPlayer::HandlePlayState(void)
|
|||||||
{
|
{
|
||||||
case kNoCD:
|
case kNoCD:
|
||||||
{
|
{
|
||||||
AdjustButtonStates();
|
|
||||||
fCurrentTrack->SetHighColor(fStopColor);
|
fCurrentTrack->SetHighColor(fStopColor);
|
||||||
fCurrentTrack->Invalidate();
|
fCurrentTrack->Invalidate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kStopped:
|
case kStopped:
|
||||||
{
|
{
|
||||||
AdjustButtonStates();
|
|
||||||
fCurrentTrack->SetHighColor(fStopColor);
|
fCurrentTrack->SetHighColor(fStopColor);
|
||||||
fCurrentTrack->Invalidate();
|
fCurrentTrack->Invalidate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kPaused:
|
case kPaused:
|
||||||
{
|
{
|
||||||
AdjustButtonStates();
|
|
||||||
fCurrentTrack->SetHighColor(fPlayColor);
|
fCurrentTrack->SetHighColor(fPlayColor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kPlaying:
|
case kPlaying:
|
||||||
{
|
{
|
||||||
AdjustButtonStates();
|
|
||||||
fCurrentTrack->SetHighColor(fPlayColor);
|
fCurrentTrack->SetHighColor(fPlayColor);
|
||||||
fCurrentTrack->Invalidate();
|
fCurrentTrack->Invalidate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kSkipping:
|
case kSkipping:
|
||||||
{
|
{
|
||||||
AdjustButtonStates();
|
|
||||||
fCurrentTrack->SetHighColor(fStopColor);
|
fCurrentTrack->SetHighColor(fStopColor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -434,11 +430,9 @@ CDPlayer::HandlePlayState(void)
|
|||||||
void
|
void
|
||||||
CDPlayer::AdjustButtonStates(void)
|
CDPlayer::AdjustButtonStates(void)
|
||||||
{
|
{
|
||||||
CDState state = engine->GetState();
|
CDState state = gCDDevice.GetState();
|
||||||
|
|
||||||
switch(state)
|
if(state==kNoCD)
|
||||||
{
|
|
||||||
case kNoCD:
|
|
||||||
{
|
{
|
||||||
// Everything needs to be disabled when there is no CD
|
// Everything needs to be disabled when there is no CD
|
||||||
fStop->SetEnabled(false);
|
fStop->SetEnabled(false);
|
||||||
@@ -447,9 +441,8 @@ CDPlayer::AdjustButtonStates(void)
|
|||||||
fPrevTrack->SetEnabled(false);
|
fPrevTrack->SetEnabled(false);
|
||||||
|
|
||||||
fSave->SetEnabled(false);
|
fSave->SetEnabled(false);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case kStopped:
|
else
|
||||||
{
|
{
|
||||||
fStop->SetEnabled(true);
|
fStop->SetEnabled(true);
|
||||||
fPlay->SetEnabled(true);
|
fPlay->SetEnabled(true);
|
||||||
@@ -458,34 +451,12 @@ CDPlayer::AdjustButtonStates(void)
|
|||||||
|
|
||||||
// TODO: Enable when Save is implemented
|
// TODO: Enable when Save is implemented
|
||||||
// fSave->SetEnabled(true);
|
// fSave->SetEnabled(true);
|
||||||
|
|
||||||
fPlay->SetState(0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case kPaused:
|
|
||||||
{
|
|
||||||
fPlay->SetState(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case kPlaying:
|
|
||||||
{
|
|
||||||
fStop->SetEnabled(true);
|
|
||||||
fPlay->SetEnabled(true);
|
|
||||||
fNextTrack->SetEnabled(true);
|
|
||||||
fPrevTrack->SetEnabled(true);
|
|
||||||
|
|
||||||
// TODO: Enable when Save is implemented
|
|
||||||
// fSave->SetEnabled(true);
|
|
||||||
|
|
||||||
|
if(state==kPlaying)
|
||||||
fPlay->SetState(1);
|
fPlay->SetState(1);
|
||||||
break;
|
else
|
||||||
}
|
fPlay->SetState(0);
|
||||||
case kSkipping:
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -628,7 +599,7 @@ public:
|
|||||||
|
|
||||||
CDPlayerWindow::CDPlayerWindow(void)
|
CDPlayerWindow::CDPlayerWindow(void)
|
||||||
: BWindow(BRect (100, 100, 610, 200), "CD Player", B_TITLED_WINDOW, B_NOT_V_RESIZABLE |
|
: BWindow(BRect (100, 100, 610, 200), "CD Player", B_TITLED_WINDOW, B_NOT_V_RESIZABLE |
|
||||||
B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS)
|
B_NOT_ZOOMABLE)
|
||||||
{
|
{
|
||||||
float wmin,wmax,hmin,hmax;
|
float wmin,wmax,hmin,hmax;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user