⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsingleplayerview.cpp

📁 symbian代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			}
		}
	
	if(EEventKey != aType)	//	EEvent埲奜偼偲傜側偄.
		{
		return res;
		}

	if(aKeyEvent.iModifiers & EWcdmaMpModifierShortPress)	//	抁墴偟
		{
		if(EWcdmaMpKeyLeft == aKeyEvent.iCode)
			{
//ADD-S	D_82400009861
			if(EFalse == IsSetSongHeadInCpPlay())
				{
//ADD-E	D_82400009861
				ProcessCommandL(ESmbMusicAPSinglePlayerCmdSetSongHead);
//ADD-S	D_82400009861
				}
//ADD-E	D_82400009861
			}

//DEL-S D_82400009859
//		switch(aKeyEvent.iCode)
//			{
//		case EWcdmaMpKeyLeft:
//			{
//			//	嬫娫嵞惗偱側偄応崌丄嬫娫嵞惗偺摢弌偟偱側偄応崌
//			//	忦審傪丄暿応強偵堏摦
//			//	state偺傂偲偵乽嬫娫嵞惗摢弌偟乿傪傕偭偰傕傜偆偺偱丄偙偙偼僐儅儞僪傪棳偡偩偗偵偡傞
//			SmbMusicAPSinglePlayerLog::OutputLog(KView, EView, ELogLevelLow,_L("OfferKey LeftEvent IsSetSOngHeadCpPlay():%d"), IsSetSongHeadInCpPlay());
//			if(EFalse == IsSetSongHeadInCpPlay())
//				{
//				ProcessCommandL(ESmbMusicAPSinglePlayerCmdSetSongHead);
//				}
//			res = EKeyWasConsumed;
//			break;	
//			}
//	
//		case EWcdmaMpKeyClear:
//			{
//			ReturnPrevStatusL();
//			res = EKeyWasConsumed;
//			break;
//			}
//			}
//DEL-E D_82400009859
		}
//ADD-S	D_82400009859
	else if(aKeyEvent.iModifiers & EWcdmaMpModifierLongPress)
//ADD-E	D_82400009859
//DEL-S	D_82400009859
//	else if(aKeyEvent.iModifiers & EWcdmaMpModifierLongPress && EFalse == IsCpPlay())	//	挿墴偟
//DEL-E D_82400009859
		{
		if(ESmbMusicAPSinglePlayerPlay == iState)
			{
			switch (aKeyEvent.iCode)
			{
			//	嵍塃偟偐丄挿墴偟僀儀儞僩偼側偄丅偩偐傜丄GenerateExtraKeyUpEvent偵懳偡傞僈乕僪偼偐偗偰偄側偄
			case EWcdmaMpKeyLeft:
				{
				SetLCDPowerSaveOffL(ETrue);
				static_cast<CSmbMusicAPSinglePlayerAppUi*>(iEikonEnv->EikAppUi())->GenerateExtraKeyUpEvent(aKeyEvent.iScanCode);
				ProcessCommandL(ESmbMusicAPSinglePlayerCmdPlayFR);
				res = EKeyWasConsumed;
				break;
				}
		
			case EWcdmaMpKeyRight:
				{
				SetLCDPowerSaveOffL(ETrue);
				static_cast<CSmbMusicAPSinglePlayerAppUi*>(iEikonEnv->EikAppUi())->GenerateExtraKeyUpEvent(aKeyEvent.iScanCode);
				ProcessCommandL(ESmbMusicAPSinglePlayerCmdPlayFF);
				res = EKeyWasConsumed;
				break;
				}
			}
			}
		}
	else
		{
//ADD-S D_82400009859
		if( ESmbMusicAPSinglePlayerPlay == iState
		 && EWcdmaMpKeyClear != aKeyEvent.iCode 
		 && EFalse == IsCpPlay())
			{
//ADD-E	D_82400009859
			static_cast<CSmbMusicAPSinglePlayerAppUi*>(iEikonEnv->EikAppUi())->GenerateExtraKeyEvent(CSmbAfAppUi::EExtraKeyEventLongShort);
//ADD-S	D_82400009859
			}
		else
			{
			if(ESmbMusicAPSinglePlayerPlayFF != iState && ESmbMusicAPSinglePlayerPlayFR != iState)
				{
				switch(aKeyEvent.iCode)
				{
				case EWcdmaMpKeyClear:
					{
					ReturnPrevStatusL();
					res = EKeyWasConsumed;
//ADD-S D_82400015332
				break;
//ADD-E D_82400015332
					}
				case EWcdmaMpKeyLeft:
					{
					if(EFalse == IsSetSongHeadInCpPlay())
						{
						ProcessCommandL(ESmbMusicAPSinglePlayerCmdSetSongHead);
						}
					res = EKeyWasConsumed;
//ADD-S D_82400015332
				break;
//ADD-E D_82400015332
					}
				}
				}
			}

//ADD-E	D_82400009859
		}	
				
	if (EKeyWasConsumed != res)
		{
		res = CSmbAfView::OfferKeyEventL (aKeyEvent, aType);
		}
	return res;
    }


/////////	夋柺昤夋	/////////////////
/**
 *	憖嶌帪偺夋柺曄峏張棟
 *
 *	@param TSmbMusicAPSinglePlayerViewState	aViewState	慗堏偡傞忬懺
 *	@return void
 */
void CSmbMusicAPSinglePlayerView::SetPlayPrepareViewL(TSmbMusicAPSinglePlayerViewState aViewState)
	{
	iState = aViewState;
//ADD-S D_82400014729
//	仯偺愝掕
	if(ESmbMusicAPSinglePlayerPlay == iState)
		{
		iCurrentRightLeftArrowState  |= ESkonKeyGuidanceArrowLeft;	//	嵍傪弌偡
		if(EFalse == IsCpPlay())
			{
			iCurrentRightLeftArrowState  |= ESkonKeyGuidanceArrowRight;	//	嬫娫偱側偗傟偽塃傪弌偡
			}
		}
	else if(ESmbMusicAPSinglePlayerPlayPause == iState)	//	Pause偼堷悢Plus
		{
		iCurrentRightLeftArrowState  &= ~ESkonKeyGuidanceArrowRight;	//	塃傪徚偡
		}
//ADD-E D_82400014729
		
	TInt keyGuidanceId = 0;
	for(TInt i = 0; i < ESmbMusicAPSinglePlayerNumberOfPlayState; i++)
		{
		if(KViewState[KState][i] == aViewState)
			{
			keyGuidanceId = KViewState[KKeyguidance][i];
			}	
		}
	
	__ASSERT_DEBUG( 0 != keyGuidanceId, User::Panic(KPanicCategory, EInvalidViewState));
	
	//	忬懺曄壔
	DrawStateIcon();
	
	//	僾儘僷僥傿僄乕僕僃儞僩偵丄忬懺傪愝掕
	if(aViewState == ESmbMusicAPSinglePlayerPlay
	|| aViewState == ESmbMusicAPSinglePlayerPlayPause)
		{
		TSmbPGMusicAPSinglePlayerState state;
		state = (ESmbMusicAPSinglePlayerPlay == aViewState) ? ESmbPGMusicAPSinglePlayerStatePlaying : ESmbPGMusicAPSinglePlayerStateNotPlaying;
		RPGPropAgent& propAgent = iAfEnv.PropAgent();
		SmbPGMusic::SetSinglePlayerStateL(propAgent, state);
		}
			
	TBool err = EFalse;
	SetNewKeyGuidanceL(keyGuidanceId, err);
	if(EFalse != err)
		{
		KeyGuidance()->DrawNow();
		}
	}

/**
 *	柭摦屻偺夋柺曄峏張棟
 *	
 *	@param	TSmbMusicAPSinglePlayerViewState	aViewState	慗堏偡傞忬懺
 *	@param	TInt aVolume	壒検
 *	@param	TInt aPlayTime	嵞惗宱夁帪娫
 *	@param	void
 */
void CSmbMusicAPSinglePlayerView::SetPlayStartView(TSmbMusicAPSinglePlayerViewState aViewState, TUint aVolume, TUint32 aPlayTime, TDrawNow aDrawNow)
	{
	if(iState != aViewState)
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KView, EView, ELogLevelLow,_L("iState%d, aViewState:%d"), iState, aViewState);
		}

	if(iVolume != aVolume)
		{
		SetVolume(aVolume);
		}

	if( iPlayTime != aPlayTime
	|| EDrawNow == aDrawNow)	//	嫮惂嵞昤夋
		{
		iPlayTime = aPlayTime;
		DrawPlayTime();
		}
	}

/**
 *	怴偟偄壒検傪昤夋偟丄嵞昤夋傪峴偆
 *	@memo	儐乕僓乕憖嶌偱曄峏偡傞傕偺側偺偱丄僆僼僗僋儕乕儞偼巊梡偟側偄偱昤夋
 *	@memo	昁偢丄Model僋儔僗偺SetVolume偱僄儔乕偑曉傜側偐偭偨抣(斖埻撪偺抣)傪愝掕偡傞偙偲
 *	@param	TInt aVolume	壒検
 *	@param	TDrawNow aDrawNow	偡偖偵嵞昤夋偡傞偐偳偆偐
 *	@return void
 */
void CSmbMusicAPSinglePlayerView::SetVolume(TInt aVolume, TDrawNow aDrawNow)
	{
	//仯愝掕(偙傟傪屇傫偩帪揰偱婛偵iVolume偲aVolume偑堘偭偰偄偨偙偲偑傢偐偭偰偄傞偺偱)
//ADD-S D_82400014729
	if(KMinVolume == aVolume)
		{
		iCurrentUpDownArrowState &= ~ESkonKeyGuidanceArrowDown;
		KeyGuidance()->DrawNow();
		}
	else if(KMaxVolume == aVolume)
		{
		iCurrentUpDownArrowState &= ~ESkonKeyGuidanceArrowUp;
		KeyGuidance()->DrawNow();
		}
	else if(iVolume == KMinVolume || iVolume == KMaxVolume || EFalse == iStartPlay)
		{
		iCurrentUpDownArrowState |= ESkonKeyGuidanceArrowDown
								 | ESkonKeyGuidanceArrowUp;
												
		KeyGuidance()->DrawNow();
		}
//ADD-E	D_82400014729

	iVolume = aVolume;
	
	//	僾儘僌儗僗僶乕嵞昤夋
	CSkonProgressBar* bar = static_cast<CSkonProgressBar*>(ComponentControl(EVolumeBar));
	bar->SetAndDraw(iVolume);

	CWindowGc& gc = iEikonEnv->SystemGc();
	ActivateGc();
//	gc.SetBrushOrigin(MakePoint(KAdjustBrush));
	SkonUtils::DrawBackGround(gc,
							  SmbMusicAPSinglePlayerIconUtils::AdjustRect(TRectOrg::MakeRect(KVolumeRect), TPointOrg::MakePoint(KAdjustBrush)));
 
//ADD-S D_82400014729
	if(0 < (iVolume/10))
		{
//ADD-E	D_82400014729
		gc.BitBltMasked(SmbMusicAPSinglePlayerIconUtils::AdjustPoint(TPoint(KVolumeRect.iPointX, KVolumeRect.iPointY), TPointOrg::MakePoint(KAdjustBrush)),							   iVolumeIcon[iVolume/10]->Bitmap(),
								   TRect(TPoint(0,0), TSize(KVolumeRect.iWidth, KVolumeRect.iHeight)),
								   iVolumeIcon[iVolume/10]->Mask(),
								   EFalse);
//ADD-S D_82400014729
		}
//ADD-E	D_82400014729
		
	gc.BitBltMasked(SmbMusicAPSinglePlayerIconUtils::AdjustPoint(TPoint(KVolumeRect.iPointX + KVolumeRect.iWidth, KVolumeRect.iPointY), TPointOrg::MakePoint(KAdjustBrush)),
					iVolumeIcon[iVolume%10]->Bitmap(),
					TRect(TPoint(0,0), TSize(KVolumeRect.iWidth, KVolumeRect.iHeight)),
					iVolumeIcon[iVolume%10]->Mask(),
					EFalse);
	DeactivateGc();
	
	if(EDrawNow == aDrawNow)	//	抣偑摨偠偱傕丄僾儘僌儗僗僶乕傪嵞昤夋偡傞
		{
		bar->DrawNow();
		}
	}

/**
 *	嵞惗宱夁帪娫傪枮椆偱嵞昤夋
 *
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerView::DrawPlayTimeFull()
	{
	iPlayTime = iDuration;
	DrawPlayTime();
	}

/**
 *	嵞惗宱夁帪娫嵞昤夋
 *
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerView::DrawPlayTime() const
	{
	CSmbMusicAPSinglePlayerDispPlayTimeCtrl* number = static_cast<CSmbMusicAPSinglePlayerDispPlayTimeCtrl*>(ComponentControl(EPlayTimeNumber));
	number->SetNewTime(iPlayTime);

	//	僾儘僌儗僗僶乕嵞昤夋
	if(iDuration > 0)
		{
		CSkonProgressBar* playTimeBar = static_cast<CSkonProgressBar*>(ComponentControl(EPlayTimeBar));
		playTimeBar->SetAndDraw(iPlayTime / KSecToMSec);
		}
	}

/**
 *	僕儍働僢僩昞帵梡僀儊乕僕儔儀儖昤夋傪峴偆
 *
 *	@param	CFbsBitmap* aImage		僕儍働僢僩夋憸
 *	@param	CFbsBitmap* aImage_m	僕儍働僢僩夋憸儅僗僋
 *	@return void
 */
void CSmbMusicAPSinglePlayerView::SetImage(CFbsBitmap* aImage, CFbsBitmap* aImage_m)
	{
	__ASSERT_DEBUG(NULL != aImage, User::Panic(KPanicCategory, EIImageIsNULL));
//	__ASSERT_DEBUG(NULL != iImage_m, User::Panic(KPanicCategory, EIImageMIsNULL));	//	儅僗僋夋憸偼側偄偙偲傕偁傞

	CSkonImageLabel* label = static_cast<CSkonImageLabel*>(ComponentControl(EPicture));
	
	//	僙儞僞儕儞僌張棟
	TSize jacketSize = TSize(KJacketImageRect.iWidth, KJacketImageRect.iHeight);
	TSize imageSize = aImage->SizeInPixels();
	
	//	杮棃側傜偽廲墶斾偑昁梫丅
	//	偩偑丄庢摼帪偵嵟戝僒僀僘傪愝掕偟偰偄傞偺偱丄偦偺僒僀僘傪挻偊偰偔傞偲偄偆偺偼僐儗偼柧傜偐偵堎忢宯丅巄掕
	//	仸noImage偺夋憸偑偍偍偒偡偓傞偨傔昁梫
	if(imageSize.iWidth > KJacketImageRect.iWidth)
		{
		imageSize.iWidth = KJacketImageRect.iWidth;
		}
	if(imageSize.iHeight > KJacketImageRect.iHeight)
		{
		imageSize.iHeight = KJacketImageRect.iHeight;
		}
	
	TInt adjustX = (jacketSize.iWidth - imageSize.iWidth) / 2;
	TInt adjustY = (jacketSize.iHeight - imageSize.iHeight) / 2;
	label->SetPicture(aImage, aImage_m);
	label->SetExtent(SmbMusicAPSinglePlayerIconUtils::AdjustPoint(TPoint(KJacketImageRect.iPointX + adjustX, KJacketImageRect.iPointY + adjustY), TPointOrg::MakePoint(KAdjustBrush)), imageSize);
	label->DrawDeferred();	
	}

/**
 *	嬋忣曬昞帵晹偵丄儊儞僶偺僨乕僞傪愝掕偟丄嵞昤夋傪峴偆
 *
 *	@param	CSmbMusicMWLibPlayingDispInfo* aDispInfo	昞帵偡傞嬋忣曬傊偺億僀儞僞
 *	@return	void
 */
void CSmbMusicAPSinglePlayerView::SetDispInfoL(CSmbMusicMWLibPlayingDispInfo* aDispInfo)
	{	
	//	僨乕僞偑幚偼庢傟偰偄側偄応崌丄埲崀偺張棟傪峴傢側偄
	if(NULL == aDispInfo)
		{
		SetInfoTextL(ESongName, KNullText);
		SetInfoTextL(EAlbumName, KNullText);
		SetInfoTextL(EArtistName, KNullText);
	
		SetDuration(KErrDuration);
		return;
		}

	const TSmbMusicMWLibPlayingDispInfo* dispInfo = aDispInfo->PlayingDispInfo();

	//	憤帪娫(摨偠側傜愝掕偟側偄)
	if(NULL != dispInfo)
		{
		if(dispInfo->iDuration != iDuration)
			{	//	晧抣側傜丄堎忢抣偲偟偰偦偺傑傑愝掕偡傞
			SetDuration(dispInfo->iDuration);
			}
		SetInfoTextL(ESongName, dispInfo->iMusicTitle);		//	嬋柤
		SetInfoTextL(EAlbumName, dispInfo->iMusicAlbum);	//	傾儖僶儉柤
		SetInfoTextL(EArtistName, dispInfo->iMusicArtist);	//	傾乕僥傿僗僩柤
		}
	else
		{	//	伀if偱彍偐傟傞傕偺埲奜OK
		if(KErrDuration != iDuration && iDuration <= 0)
			{
			SetDuration(KErrDuration);
			}
		SetInfoTextL(ESongName, KNullText);		//	嬋柤
		SetInfoTextL(EAlbumName, KNullText);	//	傾儖僶儉柤
		SetInfoTextL(EArtistName, KNullText);	//	傾乕僥傿僗僩柤
		}
	}

/**
 *	憤嵞惗帪娫傪愝掕偡傞
 *
 *	@param TInt aDuration 憤嵞惗帪娫
 *	@memo	憤嵞惗帪娫偑庢摼偱偒側偐偭偨応崌偼丄晧抣傪愝掕偡傞
 *	@return void
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -