📄 freeamptheme.cpp
字号:
m_oTitle = string(pFoo);
m_pWindow->ControlStringValue(oName, true, m_oTitle);
oText = string(BRANDING": ") + string(pFoo);
m_pWindow->SetTitle(oText);
}
// Enable/disable the seek slider
m_iTotalSeconds = (int32) info->m_totalSeconds;
bSet = (m_iTotalSeconds < 0) ? false : true;
oName = string("Seek");
m_pWindow->ControlEnable(oName, true, bSet);
m_pContext->target->AcceptEvent(new Event(CMD_GetVolume));
bSet = true;
break;
}
case INFO_PlaylistItemUpdated :
{
int i;
PlaylistItemUpdatedEvent *pInfo =
(PlaylistItemUpdatedEvent *)e;
i = m_pContext->plm->GetCurrentIndex();
if (i >= 0)
{
if (m_pContext->plm->ItemAt(i) == pInfo->Item())
UpdateMetaData(pInfo->Item());
}
break;
}
case INFO_PlaylistCurrentItemInfo:
{
PlaylistCurrentItemInfoEvent *pInfo =
(PlaylistCurrentItemInfoEvent *)e;
if (m_pContext->plm->GetCurrentIndex() != kInvalidIndex)
UpdateMetaData(pInfo->Item());
break;
}
case INFO_MusicCatalogTrackRemoved:
{
if ((int32)m_pContext->plm->GetCurrentIndex() < 0)
{
m_oTitle = szWelcomeMsg;
m_pWindow->ControlStringValue("Title", true, m_oTitle);
string title = BRANDING;
m_pWindow->SetTitle(title);
}
break;
}
case INFO_StreamInfo:
{
char *szTitle;
string oName("Title"), oText;
StreamInfoEvent *pInfo = (StreamInfoEvent *) e;
szTitle = new char[100];
pInfo->GetTitle(szTitle, 100);
m_oTitle = string(szTitle);
m_pWindow->ControlStringValue(oName, true, m_oTitle);
oText = string(BRANDING": ") + string(szTitle);
m_pWindow->SetTitle(oText);
delete szTitle;
break;
}
case INFO_HeadlineText:
{
string oName("HeadlineInfo"), oText;
HeadlineMessageEvent *pInfo = (HeadlineMessageEvent *) e;
oText = string(pInfo->GetHeadlineMessage());
m_oHeadlineUrl = string(pInfo->GetHeadlineURL());
m_pWindow->ControlStringValue(oName, true, oText);
oName = string("HeadlineStreamInfo");
m_pWindow->ControlStringValue(oName, true, oText);
break;
}
case INFO_BufferStatus:
{
StreamBufferEvent *info = (StreamBufferEvent *) e;
char *szTemp;
string oName("BufferInfo"), oText;
szTemp = new char[100];
sprintf(szTemp, "I: %3ld O: %3ld %c",
(long int)info->GetInputPercent(),
(long int)info->GetOutputPercent(),
info->IsBufferingUp() ? '^' : ' ');
oText = string(szTemp);
if (m_bShowBuffers)
oName = string("StreamInfo");
m_pWindow->ControlStringValue(oName, true, oText);
delete szTemp;
break;
}
case INFO_MediaTimeInfo:
{
MediaTimeInfoEvent *info = (MediaTimeInfoEvent *) e;
int iSeconds;
string oName("Time"), oText;
iSeconds = (info->m_hours * 3600) + (info->m_minutes * 60) +
info->m_seconds;
if (iSeconds == m_iCurrentSeconds || m_bSeekInProgress)
break;
if (m_iFramesSinceSeek++ < 1)
break;
m_iCurrentSeconds = iSeconds;
UpdateTimeDisplay(m_iCurrentSeconds);
if (m_iTotalSeconds > 0)
{
m_iSeekPos = (iSeconds * 100) / m_iTotalSeconds;
oName = string("Seek");
m_pWindow->ControlIntValue(oName, true, m_iSeekPos);
}
break;
}
case INFO_MPEGInfo:
{
MpegInfoEvent *info = (MpegInfoEvent *) e;
char *text;
text = new char[100];
m_fSecondsPerFrame = info->GetSecondsPerFrame();
if (info->GetBitRate() == 0)
sprintf(text, "VBR %ldkhz %s",
(long int)(info->GetSampleRate() / 1000),
info->GetChannels() ? "Stereo" : "Mono");
else
sprintf(text, "%ldkbps %ldkhz %s",
(long int)(info->GetBitRate() / 1000),
(long int)(info->GetSampleRate() / 1000),
info->GetChannels() ? "Stereo" : "Mono");
m_oStreamInfo = text;
m_pWindow->ControlStringValue("StreamInfo", true, m_oStreamInfo);
delete text;
break;
}
case INFO_PlaylistRepeat:
{
PlaylistRepeatEvent *plre = (PlaylistRepeatEvent *) e;
int iState;
switch (plre->GetRepeatMode())
{
case kPlaylistMode_RepeatNone:
iState = 0;
break;
case kPlaylistMode_RepeatOne:
iState = 1;
break;
case kPlaylistMode_RepeatAll:
iState = 2;
break;
default:
break;
}
m_pWindow->ControlIntValue(string("Repeat"), true, iState);
break;
}
case INFO_PlaylistShuffle:
{
PlaylistShuffleEvent *plse = (PlaylistShuffleEvent *) e;
int iState;
iState = plse->GetShuffleMode() ? 1 : 0;
m_pWindow->ControlIntValue(string("Shuffle"), true, iState);
break;
}
case INFO_VolumeInfo:
{
m_iVolume = ((VolumeEvent *) e)->GetVolume();
m_pWindow->ControlIntValue(string("Volume"), true, m_iVolume);
break;
}
case INFO_PrefsChanged:
{
bool bValue;
ReloadTheme();
m_pContext->prefs->GetStayOnTop(&bValue);
m_pWindow->SetStayOnTop(bValue);
m_pContext->prefs->GetLiveInTray(&bValue);
m_pWindow->SetLiveInToolbar(bValue);
break;
}
case CMD_ShowPreferences:
{
ShowPreferencesEvent* prefsEvent = (ShowPreferencesEvent*)e;
ShowOptions(prefsEvent->GetDefaultPage());
break;
}
case CMD_LoadTheme:
{
char *szSavedTheme, *szNewTheme;
uint32 iLen = _MAX_PATH;
string oThemePath;
MessageDialog oBox(m_pContext);
string oMessage(szKeepThemeMessage);
szSavedTheme = new char[iLen];
szNewTheme = new char[iLen];
LoadThemeEvent *pInfo = (LoadThemeEvent *)e;
strncpy(szNewTheme, pInfo->URL(), _MAX_PATH);
szNewTheme[_MAX_PATH - 1] = 0;
strncpy(szSavedTheme, pInfo->SavedTheme(), _MAX_PATH);
szSavedTheme[_MAX_PATH - 1] = 0;
m_pContext->prefs->SetPrefString(kThemePathPref, szNewTheme);
ReloadTheme();
if (oBox.Show(oMessage.c_str(), string(BRANDING), kMessageYesNo) ==
kMessageReturnYes)
{
ThemeManager *pMan;
string oThemePath(szNewTheme);
pMan = new ThemeManager(m_pContext);
if (IsntError(pMan->AddTheme(oThemePath, true))) {
m_pContext->prefs->SetPrefString(kThemePathPref, oThemePath.c_str());
ReloadTheme();
}
delete pMan;
}
else
{
m_pContext->prefs->SetPrefString(kThemePathPref, szSavedTheme);
ReloadTheme();
}
unlink(szNewTheme);
delete szSavedTheme;
delete szNewTheme;
break;
}
default:
break;
}
return kError_NoErr;
}
Error FreeAmpTheme::HandleControlMessage(string &oControlName,
ControlMessageEnum eMesg)
{
if (m_bInOptions)
{
m_pWindow->BringWindowToFront();
return kError_NoErr;
}
if (eMesg == CM_MouseEnter)
{
string oName("Info"), oDesc("");
if (oControlName == string("Time") ||
oControlName == string("TimeRemaining"))
{
if (m_eTimeDisplayState == kTimeRemaining &&
m_pWindow->DoesControlExist("TimeRemaining"))
m_pWindow->ControlGetDesc("TimeRemaining", oDesc);
else
m_pWindow->ControlGetDesc("Time", oDesc);
}
else
m_pWindow->ControlGetDesc(oControlName, oDesc);
m_pWindow->ControlStringValue(oName, true, oDesc);
return kError_NoErr;
}
if (eMesg == CM_MouseLeave)
{
string oName("Info"), oEmpty("");
m_pWindow->ControlStringValue(oName, true, oEmpty);
return kError_NoErr;
}
if (oControlName == string("Minimize") && eMesg == CM_Pressed)
{
m_pWindow->Minimize();
return kError_NoErr;
}
if (oControlName == string("Volume") &&
(eMesg == CM_ValueChanged || eMesg == CM_SliderUpdate))
{
int iVol;
if (eMesg == CM_SliderUpdate)
m_bVolumeChangeInProgress = true;
if (eMesg == CM_ValueChanged)
m_bVolumeChangeInProgress = false;
m_pWindow->ControlIntValue(oControlName, false, iVol);
SetVolume(iVol);
return kError_NoErr;
}
if (oControlName == string("VolumePlus") && eMesg == CM_Pressed)
{
int iVol;
iVol = min(m_iVolume + iVolumeChangeIncrement, 100);
SetVolume(iVol);
return kError_NoErr;
}
if (oControlName == string("VolumeMinus") && eMesg == CM_Pressed)
{
int iVol;
iVol = max(m_iVolume - iVolumeChangeIncrement, 0);
SetVolume(iVol);
return kError_NoErr;
}
if (oControlName == string("Seek") && eMesg == CM_ValueChanged)
{
string oName("Info"), oEmpty("");
int iValue, iFrame;
m_pWindow->ControlIntValue(oControlName, false, iValue);
iFrame = (int)(((float)iValue * (float)m_iTotalSeconds) /
((float)100 * m_fSecondsPerFrame));
m_bSeekInProgress = false;
m_pContext->target->AcceptEvent(new
VolumeEvent(CMD_ChangePosition, iFrame + 1));
m_iFramesSinceSeek = 0;
m_pWindow->ControlStringValue(oName, true, oEmpty);
return kError_NoErr;
}
if (oControlName == string("Seek") && eMesg == CM_SliderUpdate)
{
string oName("Time"), oText("");
int iValue, iTime;
m_pWindow->ControlIntValue(oControlName, false, iValue);
iTime = (iValue * m_iTotalSeconds) / 100;
UpdateTimeDisplay(iTime);
m_bSeekInProgress = true;
return kError_NoErr;
}
if (oControlName == string("PlayPause") && eMesg == CM_Pressed)
{
int iState = 0;
if (m_pContext->plm->CountItems() == 0)
{
m_pContext->target->AcceptEvent(new Event(CMD_ToggleMusicBrowserUI));
return kError_NoErr;
}
m_pWindow->ControlIntValue(oControlName, false, iState);
if (iState == 0)
m_pContext->target->AcceptEvent(new Event(CMD_Play));
else
m_pContext->target->AcceptEvent(new Event(CMD_Pause));
return kError_NoErr;
}
if (oControlName == string("PlayStop") && eMesg == CM_Pressed)
{
int iState = 0;
if (m_pContext->plm->CountItems() == 0)
{
m_pContext->target->AcceptEvent(new Event(CMD_ToggleMusicBrowserUI));
return kError_NoErr;
}
m_pWindow->ControlIntValue(oControlName, false, iState);
if (iState > 1)
iState = 1;
if (iState == 0)
m_pContext->target->AcceptEvent(new Event(CMD_Play));
else
m_pContext->target->AcceptEvent(new Event(CMD_Stop));
return kError_NoErr;
}
if (oControlName == string("Play") && eMesg == CM_Pressed)
{
if (m_pContext->plm->CountItems() == 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -