📄 musicpositionappview.cpp
字号:
#include <coemain.h>
#include <EIKENV.H>
#include "MusicPositionAppView.h"
const TInt KCallBackPeriod = 50000; // 14Hz
const TInt KOggControlFreq = 20;
_LIT(KMBMFile,"c:\\Position.mbm");
CMusicPositionAppView* CMusicPositionAppView::NewL(const TRect& aRect)
{
CMusicPositionAppView* self = CMusicPositionAppView::NewLC(aRect);
CleanupStack::Pop(self);
return self;
}
CMusicPositionAppView* CMusicPositionAppView::NewLC(const TRect& aRect)
{
CMusicPositionAppView* self = new ( ELeave ) CMusicPositionAppView;
CleanupStack::PushL(self);
self->ConstructL(aRect);
return self;
}
void CMusicPositionAppView::ConstructL(const TRect& aRect)
{
// Create a window for this application view
CreateWindowL();
SetRect(aRect);
SetComponentsToInheritVisibility(EFalse);
LoadBackgroundBitmapL(KMBMFile,2);
iPosition = new(ELeave)COggSlider64;
iPosition ->SetBitmapFile(KMBMFile);
iPosition->SetPosition(20, 150, 200 ,20);
iPosition->SetStyle(0);
CGulIcon* result = CEikonEnv::Static()->CreateIconL(KMBMFile, 0, 1);
iPosition->SetKnobIcon(result);
iPosition->SetMaxValue(240);
AddControl(iPosition);
iTimer=CPeriodic::NewL(CActive::EPriorityStandard);
iCallBack = new(ELeave)TCallBack(CMusicPositionAppView::CallBack,this);
ActivateL();
}
CMusicPositionAppView::CMusicPositionAppView()
:iCycleFrequencyCounter(KOggControlFreq),iPoValue(0),iPlay(ETrue)
{
}
CMusicPositionAppView::~CMusicPositionAppView()
{
if(iTimer)
iTimer->Cancel();
delete iTimer;
delete iCallBack;
ClearControls();
}
TInt CMusicPositionAppView::CallBack(TAny* aPtr)
{
CMusicPositionAppView* self = (CMusicPositionAppView*) aPtr;
self->HandleCallBack();
return 1;
}
void CMusicPositionAppView::HandleCallBack()
{
if(iPlay)
{
if (iCycleFrequencyCounter % 2)
{
CycleLowFrequencyControls();
}
if(iPosition && iPoValue<=240)
{
iPosition->SetValue(iPoValue);
}
CycleHighFrequencyControls();
Refresh();
iCycleFrequencyCounter--;
if (iCycleFrequencyCounter == 0)
{
// 1Hz controls
iCycleFrequencyCounter = KOggControlFreq;
iPoValue+=5;
}
}
}
void CMusicPositionAppView::RestartCallBack()
{
iTimer->Cancel();
if (!iTimer->IsActive())
{
iTimer->Start(TTimeIntervalMicroSeconds32(KCallBackPeriod), TTimeIntervalMicroSeconds32(KCallBackPeriod), *iCallBack);
}
}
void CMusicPositionAppView::StopCallBack()
{
if(iTimer->IsActive())
iTimer->Cancel();
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -