📄 freeamptheme.cpp
字号:
else
{
m_sigState = kIdle;
iState = 0;
}
if (!m_pContext->aps->IsTurnedOn())
iState = 0;
m_pWindow->ControlIntValue(string("SigIndicator"), true, iState);
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 (oControlName == string("WindowStatus"))
{
bool bEnable;
if (eMesg == CM_WindowEnter)
bEnable = true;
else if (eMesg == CM_WindowLeave)
bEnable = false;
else
return kError_NoErr;
m_pWindow->ControlEnable(oControlName, true, bEnable);
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 (eMesg == CM_TogglePanel)
{
m_pWindow->PanelStateChanged();
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, m_iBalance);
return kError_NoErr;
}
if (oControlName == string("Balance") &&
(eMesg == CM_ValueChanged || eMesg == CM_SliderUpdate))
{
int iBal;
m_pWindow->ControlIntValue(oControlName, false, iBal);
SetVolume(m_iVolume, iBal);
return kError_NoErr;
}
if (oControlName == string("Mute") && eMesg == CM_Pressed)
{
int iState;
m_pWindow->ControlIntValue(oControlName, false, iState);
if (iState == 0)
{
m_iMuteVolume = m_iVolume;
m_iVolume = 0;
iState = 1;
}
else
{
m_iVolume = m_iMuteVolume;
m_iMuteVolume = -1;
iState = 0;
}
SetVolume(m_iVolume, m_iBalance);
m_pWindow->ControlIntValue(oControlName, true, iState);
return kError_NoErr;
}
if (eMesg == CM_SliderUpdate && strncmp(oControlName.c_str(), "Eq", 2) == 0)
{
string oName("Info"), oDesc;
char szText[20];
int iPos;
m_pWindow->ControlIntValue(oControlName, false, iPos);
m_eq->ChangeValue(atoi(oControlName.c_str() + 2), iPos);
sprintf(szText, "%d db", ((iPos - 50) * 2) / 5);
oDesc = string(szText);
m_pWindow->ControlStringValue(oName, true, oDesc);
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("Preamp") && eMesg == CM_SliderUpdate)
{
string oName("Info"), oDesc;
char szText[20];
int iPos;
m_pWindow->ControlIntValue(oControlName, false, iPos);
m_eq->ChangePreamp(iPos);
sprintf(szText, "%d db", ((iPos - 50) * 10) / 25);
oDesc = string(szText);
m_pWindow->ControlStringValue(oName, true, oDesc);
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("Relatable Playlist") && eMesg == CM_Pressed)
{
GeneratePlaylistEvent *gpe;
gpe = new GeneratePlaylistEvent(m_pContext->plm->GetCurrentItem(),
m_pContext->plm);
m_pContext->target->AcceptEvent((Event *)gpe);
return kError_NoErr;
}
if (oControlName == string("Play") && eMesg == CM_Pressed)
{
if (m_pContext->plm->CountItems() == 0)
{
m_pContext->target->AcceptEvent(new Event(CMD_ToggleMusicBrowserUI));
return kError_NoErr;
}
m_pContext->target->AcceptEvent(new Event(CMD_Play));
return kError_NoErr;
}
if (oControlName == string("MPause") && eMesg == CM_Pressed)
{
int iState = 0;
m_pWindow->ControlIntValue(oControlName, false, iState);
if (iState == 0)
m_pContext->target->AcceptEvent(new Event(CMD_Pause));
else
m_pContext->target->AcceptEvent(new Event(CMD_Play));
return kError_NoErr;
}
if (oControlName == string("Pause") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_Pause));
return kError_NoErr;
}
if (oControlName == string("Stop") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_Stop));
return kError_NoErr;
}
if (oControlName == string("Next") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_NextMediaPiece));
return kError_NoErr;
}
if (oControlName == string("Prev") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_PrevMediaPiece));
return kError_NoErr;
}
if (oControlName == string("MyMusic") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_ToggleMusicBrowserUI));
return kError_NoErr;
}
if (oControlName == string("Files") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_AddFiles));
return kError_NoErr;
}
if (oControlName == string("Download") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_ToggleDownloadUI));
return kError_NoErr;
}
if (oControlName == string("Options") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new ShowPreferencesEvent(0));
return kError_NoErr;
}
if (oControlName == string("Quit") && eMesg == CM_Pressed)
{
m_pContext->target->AcceptEvent(new Event(CMD_QuitPlayer));
return kError_NoErr;
}
if (eMesg == CM_ChangeWindow)
{
m_pWindow->ControlStringValue(oControlName, false, m_oCurrentWindow);
// This is cheating, but I don't know how else to do it. :-(
m_pWindow->DecUsageRef();
m_pWindow->DecUsageRef();
SwitchWindow(m_oCurrentWindow);
m_pWindow->IncUsageRef();
m_pWindow->IncUsageRef();
return kError_NoErr;
}
if (oControlName == string("ReloadTheme") && eMesg == CM_Pressed)
{
m_pWindow->DecUsageRef();
m_pWindow->DecUsageRef();
ReloadTheme();
m_pWindow->IncUsageRef();
m_pWindow->IncUsageRef();
return kError_NoErr;
}
if (oControlName == string("Shuffle") && eMesg == CM_Pressed)
{
int iState = 0;
string oName("Info"), oDesc("");
m_pWindow->ControlIntValue(oControlName, false, iState);
iState = (iState + 1) % 2;
m_pContext->plm->SetShuffleMode(iState == 1);
m_pWindow->ControlIntValue(oControlName, true, iState);
m_pWindow->ControlGetDesc(oControlName, oDesc);
m_pWindow->ControlStringValue(oName, true, oDesc);
return kError_NoErr;
}
if (oControlName == string("Repeat") && eMesg == CM_Pressed)
{
int iState = 0;
RepeatMode eMode = kPlaylistMode_RepeatNone;
string oName("Info"), oDesc("");
m_pWindow->ControlIntValue(oControlName, false, iState);
iState = (iState + 1) % 3;
m_pWindow->ControlIntValue(oControlName, true, iState);
switch(iState)
{
case 0:
eMode = kPlaylistMode_RepeatNone;
break;
case 1:
eMode = kPlaylistMode_RepeatOne;
break;
case 2:
eMode = kPlaylistMode_RepeatAll;
break;
}
m_pContext->plm->SetRepeatMode(eMode);
m_pWindow->ControlGetDesc(oControlName, oDesc);
m_pWindow->ControlStringValue(oName, true, oDesc);
return kError_NoErr;
}
if (oControlName == string("Time") && eMesg == CM_Pressed)
{
string oName("Info"), oDesc("");
if (m_iTotalSeconds < 0)
return kError_NoErr;
if (m_eTimeDisplayState == kNormal)
{
m_eTimeDisplayState = kTimeRemaining;
if (m_pWindow->DoesControlExist("TimeRemaining"))
m_pWindow->ControlStringValue("Time", true, oDesc);
}
else
{
m_eTimeDisplayState = kNormal;
if (m_pWindow->DoesControlExist("TimeRemaining"))
m_pWindow->ControlStringValue("TimeRemaining", true, oDesc);
}
m_pWindow->ControlStringValue("Info", true, oDesc);
UpdateTimeDisplay(m_iCurrentSeconds);
}
if (oControlName == string("Logo") && eMesg == CM_Pressed)
{
string oUrl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -