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

📄 smbmusicapsingleplayerdispplaytimectrl.cpp

📁 symbian代码
💻 CPP
字号:
/*----------------------------------------------------------------------------*/
// Copyright (c) 2007Sony Ericsson Mobile Communications Japan, Inc.
// All rights reserved.
/*----------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPSinglePlayerDispPlayTimeControl.cpp
//   
// Description:嵞惗宱夁帪娫昞帵僐儞僩儘乕儖
//
//	Modify:
//	2007-02-01	怴婯	K3Hirono
/*------------------------------------------------------------------------*/
// $NoKeywords: $

#ifndef SMBMUSICAPSINGLEPLAYERDISPTIMECTRL_H_
#include "SmbMusicAPSinglePlayerDispPlayTimeCtrl.h"	//	堦嬋嵞惗僾儗僀儎乕嵞惗宱夁帪娫昞帵僐儞僩儘乕儖
#endif	//SMBMUSICAPSINGLEPLAYERDISPTIMECTRL_H_

#ifndef SMBMUSICAPSINGLEPLAYERUTILS_H_
#include "SmbMusicAPSinglePlayerUtils.h"	//	堦嬋嵞惗僾儗僀儎乕Util
#endif	//SMBMUSICAPSINGLEPLAYERUTILS_H_

#ifndef __SKONUTILS_H__
#include <SkonUtils.h>	//	SKONUtil
#endif	//__SKONUTILS_H__

#ifndef __SMBLAYOUT_HRH__
#include <SmbLayout.hrh>	//儗僀傾僂僩忣曬													
#endif	//__SMBLAYOUT_HRH__

#ifndef SMBMUSICAPSINGLEPLAYERLOG_H_
#include "SmbMusicAPSinglePlayerLog.h"	//	儘僌
#endif	/*	SMBMUSICAPSINGLEPLAYERLOG_H_	*/

SEMCJ_NAMESPACE_BEGIN

#include <Photo.mbg>		//	壒検丒宱夁帪娫偺悢帤

//	夋憸僼傽僀儖僷僗
_LIT(KSmbNumberBmpFileName, "Z:\\WcdmaMp\\Media\\Image\\Photo.mbm");

const TInt KMaxPlayTimeMin = 99;
const TInt KMaxPlayTimeSec = 59;
const TInt KMinPlayTimeNumber = 0;
const TInt KSecToMSec = 1000;					///<	昩仺儈儕昩曄姺
const TInt KSecToM = 60;						///<	昩仺暘曄姺

//	悢抣
const TRectOrg  KNumberRect = { 0, 0 , KSmbLayout_UI_CAMS_C_1_17_W, KSmbLayout_UI_CAMS_C_1_17_H};					///< 悢帤堦偮偺昤夋椞堟
const TRectOrg  KPlayTimeRect = { 0, 0, (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X) + KSmbLayout_UI_CAMS_C_1_17_W*5, KSmbLayout_UI_CAMS_C_1_17_H};	///< 宱夁帪娫昤夋椞堟乮僆僼僗僋儕乕儞梡乯

const TPointOrg KOrgPoint = {0, 0};
const TSizeOrg KPlayTimeSize = {KSmbLayout_UI_CAMS_C_1_17_W*5, KSmbLayout_UI_CAMS_C_1_17_H};
const TSizeOrg KDurationSize = {KSmbLayout_UI_CAMS_C_1_17_W*6, KSmbLayout_UI_CAMS_C_1_17_H};

const TPointOrg KElapsedMinTenNumberPoint = { 0, 0};  												///< 宱夁帪娫10暘偺埵昞帵埵抲乮僆僼僗僋儕乕儞梡乯
const TPointOrg KElapsedMinUnitNumberPoint = { KSmbLayout_UI_CAMS_C_1_17_W, 0};					///< 宱夁帪娫1偺暘埵昞帵埵抲 乮僆僼僗僋儕乕儞梡乯
const TPointOrg KElapsedMinColonPoint = { KSmbLayout_UI_CAMS_C_1_17_W* 2, 0};  					///< 宱夁帪娫丗偺昞帵        乮僆僼僗僋儕乕儞梡乯
const TPointOrg KElapsedSecTenNumberPoint = { KSmbLayout_UI_CAMS_C_1_17_W* 3, 0};  				///< 宱夁帪娫10昩偺埵昞帵    乮僆僼僗僋儕乕儞梡乯
const TPointOrg KElapsedSecUnitNumberPoint = { KSmbLayout_UI_CAMS_C_1_17_W* 4, 0};  				///< 宱夁帪娫1昩偺埵昞帵     乮僆僼僗僋儕乕儞梡乯

const TPointOrg KSlashPoint = {KSmbLayout_UIF_ETC_MPM_9_11_X - KSmbLayout_UIF_ETC_MPM_9_10_X , 0};  	///< /偺昞帵                 乮僆僼僗僋儕乕儞梡乯

const TPointOrg KTotalMinTenNumberPoint = { (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X), 0 }; 									///< 慡懱帪娫10暘偺埵昞帵埵抲乮僆僼僗僋儕乕儞梡乯
const TPointOrg KTotalMinUnitNumberPoint = { (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X) + KSmbLayout_UI_CAMS_C_1_17_W, 0}; 	///< 慡懱帪娫1偺暘埵昞帵埵抲 乮僆僼僗僋儕乕儞梡乯
const TPointOrg KTotalMinColonPoint = { (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X) + KSmbLayout_UI_CAMS_C_1_17_W*2, 0};  		///< 慡懱帪娫丗偺昞帵        乮僆僼僗僋儕乕儞梡乯
const TPointOrg KTotalSecTenNumberPoint = { (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X) + KSmbLayout_UI_CAMS_C_1_17_W * 3, 0}; ///< 慡懱帪娫10昩偺埵昞帵    乮僆僼僗僋儕乕儞梡乯
const TPointOrg KTotalSecUnitNumberPoint = { (KSmbLayout_UIF_ETC_MPM_9_12_X - KSmbLayout_UIF_ETC_MPM_9_10_X) + KSmbLayout_UI_CAMS_C_1_17_W*4, 0};  ///< 慡懱帪娫1昩偺埵昞帵     乮僆僼僗僋儕乕儞梡乯

const TInt NumberOfNumberImage = 10;	///<	悢帤偺庬椶(0乣9偱10庬椶)
enum	//	嵞惗宱夁帪娫昞帵梡丅0乣9偺悢帤偺屻傠偵丄僐儘儞偲僗儔僢僔儏傪偮偗傞
	{
	ESmbMusicAPSinglePlayerColonImage = 10,  ///< 僐儘儞僀儊乕僕ID
	ESmbMusicAPSinglePlayerSlashImage        ///< 僗儔僢僔儏僀儊乕僕ID
	};

//	宱夁帪娫昞帵夋憸儕僜乕僗ID
const TInt KPlayTimeNumber[2][NumberOfNumberImage] = 
	{	
		{	
		EMbmPhotoT1_2_parts_timer_0,
		EMbmPhotoT1_2_parts_timer_1,
		EMbmPhotoT1_2_parts_timer_2,
		EMbmPhotoT1_2_parts_timer_3,
		EMbmPhotoT1_2_parts_timer_4,
		EMbmPhotoT1_2_parts_timer_5,
		EMbmPhotoT1_2_parts_timer_6,
		EMbmPhotoT1_2_parts_timer_7,
		EMbmPhotoT1_2_parts_timer_8,
		EMbmPhotoT1_2_parts_timer_9
		},
		{	
		EMbmPhotoT1_2_parts_timer_0m,
		EMbmPhotoT1_2_parts_timer_1m,
		EMbmPhotoT1_2_parts_timer_2m,
		EMbmPhotoT1_2_parts_timer_3m,
		EMbmPhotoT1_2_parts_timer_4m,
		EMbmPhotoT1_2_parts_timer_5m,
		EMbmPhotoT1_2_parts_timer_6m,
		EMbmPhotoT1_2_parts_timer_7m,
		EMbmPhotoT1_2_parts_timer_8m,
		EMbmPhotoT1_2_parts_timer_9m
		}
	};
	
//	LOG梡
_LIT(KDispPlayTimeCtrl, "SmbMusicAPSinglePlayerDispPlayTimeCtrl");
/**
 *	僐儞僗僩儔僋僞
 *
 *	@param 側偟
 */
CSmbMusicAPSinglePlayerDispPlayTimeCtrl::CSmbMusicAPSinglePlayerDispPlayTimeCtrl()
	{
	}

/**
 *	僨僗僩儔僋僞
 *
 *	@param 側偟
 */
CSmbMusicAPSinglePlayerDispPlayTimeCtrl::~CSmbMusicAPSinglePlayerDispPlayTimeCtrl()
	{
	iNumberIcon.ResetAndDestroy();
	iNumberIcon.Close();
	
	delete iOffScreenGc;
	delete iOffScreenDevice;
	delete iOffScreenBitmap;
	}

/**
 *	2nd僐儞僗僩儔僋僞
 *
 *	@param TDisplayMode aDisplayMode	夋柺儌乕僪
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::ConstructL(TDisplayMode aDisplayMode)
	{
	// 價僢僩儅僢僾偺撉傒崬傒
	LoadBitmapL();
	
	// 宱夁帪娫昤夋梡僆僼僗僋儕乕儞嶌惉
	iOffScreenBitmap = new(ELeave) CFbsBitmap();	
	User::LeaveIfError(iOffScreenBitmap->Create(TSize(KPlayTimeRect.iWidth, KPlayTimeRect.iHeight), aDisplayMode));

	// 僨僶僀僗傪庢摼
	iOffScreenDevice = CFbsBitmapDevice::NewL(iOffScreenBitmap);

	// GraphicContext偺弨旛
	User::LeaveIfError(iOffScreenDevice->CreateContext(iOffScreenGc));
	}
	
/**
 *	尰嵼帪娫偺愝掕
 *	
 *	@param TUint32 aNewTime		怴偟偔愝掕偡傞帪娫
 *	@param TDrawNow aDrawNow	嵞昤夋偡傞偐偳偆偐
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::SetNewTime(TUint32 aNewTime, TDrawNow aDrawNow)
	{
	//	憤嵞惗帪娫傛傝丄愝掕偡傞帪娫偑戝偒偄応崌偼丄憤嵞惗帪娫偵崌傢偣傞
	//	偨偩偟丄憤嵞惗帪娫偑0埲壓偲偄偆偺偼丄堎忢抣側偺偱憤嵞惗帪娫偲斾妑偟側偄
	if(aNewTime > iDuration && iDuration > 0)	
		{			iPlayTime = iDuration;
		SmbMusicAPSinglePlayerLog::OutputLog(KDispPlayTimeCtrl, EDispPlayTimeCtrl, ELogLevelLow,_L("SetNewTime:aPlayTime:%d, Duration:%d"), aNewTime, iDuration);
		}
	else
		{
		iPlayTime = aNewTime;
		}

	DrawPlayTime();

	if(EDrawNow == aDrawNow)
		{
		DrawDeferred();
		}
	}

/**
 *	嵞惗宱夁帪娫僐儞僩儘乕儖偺弶婜忬懺昤夋
 *
 *	@param TUint32 aNewTime	嵞惗宱夁帪娫
 *	@param TInt aDuration	憤嵞惗帪娫
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::InitialPlayTimeControl(TUint32 aNewTime, TInt aDuration)
	{
	iInit = ETrue;
	iDuration = aDuration;
	DrawDuration();

	SetNewTime(aNewTime, ENoDrawNow);
	
	DrawDeferred();
	}

/**
 *	嵟彫僒僀僘偺庢摼
 *
 *	@param 側偟
 *	@return TSize	嵟彫僒僀僘
 */
TSize CSmbMusicAPSinglePlayerDispPlayTimeCtrl::MinimumSize()
	{
	TRect ret = TRectOrg::MakeRect(KPlayTimeRect);
	return ret.Size();
	}

/**
 *	嵞昤夋
 *
 *	@param const TRect& aRect 昤夋椞堟
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::Draw(const TRect& aRect) const
	{
	CWindowGc& gc = SystemGc();
	
	if(EFalse == iInit)
		{
		TRect rect = Rect();
		TSize size = TSize(KPlayTimeSize.iWidth + KDurationSize.iWidth, KDurationSize.iHeight);
		SkonUtils::DrawBackGround(*iOffScreenGc, TRect(TPointOrg::MakePoint(KOrgPoint), size), TPoint(rect.iTl.iX, rect.iTl.iY));
		}
		
	gc.BitBlt(aRect.iTl, iOffScreenBitmap);
	}

/**
 *	尰嵞惗帪娫傪嵞昤夋偡傞
 *
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::DrawPlayTime() const
	{
	//	iPlayTime偱丄儈儕昩扨埵偱丄宱夁帪娫傪帩偭偰偄傞丅
	//	偦偺抣傪昤夋
	//	昤夋宍懺偼 00:00/00:00丂宱夁帪娫/憤僾儗僀帪娫
	TInt min(iPlayTime / (KSecToM * KSecToMSec));
	TInt sec(KMinPlayTimeNumber); 
	
	//	曗惓
	if(min >= KMaxPlayTimeMin)
		{
		min = KMaxPlayTimeMin;
		sec = (iPlayTime - KMaxPlayTimeMin * KSecToM * KSecToMSec) / KSecToMSec;
		
		if(sec > KMaxPlayTimeSec)
			{
			sec = KMaxPlayTimeSec;
			}
		}
	else if( sec < KMinPlayTimeNumber && min < KMinPlayTimeNumber)
		{
		//	iPlayTime偼TUint32側偺偱丄sec偲min偑晧偺抣偵側傞偙偲偼側偄
		SmbMusicAPSinglePlayerLog::OutputLog(KDispPlayTimeCtrl, EDispPlayTimeCtrl, ELogLevelNormal,_L("DrawPlayTime:iPlayTime:%d,min:%d,sec:%d"), iPlayTime, min, sec);
		min = KMinPlayTimeNumber;
		sec = KMinPlayTimeNumber;
		}
	else
		{
		sec = (iPlayTime - min * KSecToM * KSecToMSec) / KSecToMSec;
		}


	// 攚宨傪昤夋
	TRect rect = Rect();
	TSize size = TSizeOrg::MakeSize(KPlayTimeSize);
	SkonUtils::DrawBackGround(*iOffScreenGc, TRect(TPointOrg::MakePoint(KOrgPoint), size), TPoint(rect.iTl.iX, rect.iTl.iY));

	// 嬻敀
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KElapsedMinTenNumberPoint),  iNumberIcon[min/10]->Bitmap(),                            TRectOrg::MakeRect(KNumberRect), iNumberIcon[min/10]->Mask(),                            EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KElapsedMinUnitNumberPoint), iNumberIcon[min%10]->Bitmap(),                            TRectOrg::MakeRect(KNumberRect), iNumberIcon[min%10]->Mask(),                            EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KElapsedMinColonPoint),      iNumberIcon[ESmbMusicAPSinglePlayerColonImage]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[ESmbMusicAPSinglePlayerColonImage]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KElapsedSecTenNumberPoint),  iNumberIcon[sec/10]->Bitmap(),                            TRectOrg::MakeRect(KNumberRect), iNumberIcon[sec/10]->Mask(),                            EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KElapsedSecUnitNumberPoint), iNumberIcon[sec%10]->Bitmap(),                            TRectOrg::MakeRect(KNumberRect), iNumberIcon[sec%10]->Mask(),                            EFalse);
	}

/**
 *	憤僾儗僀帪娫傪昤夋偡傞
 *	@memo	XX:XX/XX:XX偺乽/乿偼偙偪傜偱昤夋
 *	@param	側偟
 *	@return	void
 */	
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::DrawDuration() const
	{
	//	憤僾儗僀帪娫
	TInt duration(iDuration);
	if(duration < KMinPlayTimeNumber)
		{//iDuration偼庢摼偱偒傞扨埵偑TInt側偺偱丄晧偺抣偑棃傞偙偲傕峫偊側偔偰偼偄偗側偄
		duration = KMinPlayTimeNumber;
		}
	
	TInt totalmin(duration / (KSecToM * KSecToMSec));
	TInt totalsec(KMinPlayTimeNumber);

	//	曗惓
	if(totalmin >= KMaxPlayTimeMin)
		{
		totalmin = KMaxPlayTimeMin;
		totalsec = (duration - KMaxPlayTimeMin * KSecToM * KSecToMSec) / KSecToMSec;
		
		if(totalsec > KMaxPlayTimeSec)
			{
			totalsec = KMaxPlayTimeSec;
			}
		}
	else if(totalmin < KMinPlayTimeNumber && totalsec < KMinPlayTimeNumber)
		{
		totalmin = KMinPlayTimeNumber;
		totalsec = KMinPlayTimeNumber;
		}
	else
		{
		totalsec = (duration - totalmin * KSecToM * KSecToMSec) / KSecToMSec;
		}
	
	TRect rect = Rect();
	TSize size = TSizeOrg::MakeSize(KDurationSize);
	TPointOrg point = KOrgPoint;
	point.iPointX += KPlayTimeSize.iWidth;
	SkonUtils::DrawBackGround(*iOffScreenGc, TRect(TPointOrg::MakePoint(point), size), TPoint(rect.iTl.iX, rect.iTl.iY));		
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KSlashPoint),                iNumberIcon[ESmbMusicAPSinglePlayerSlashImage]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[ESmbMusicAPSinglePlayerSlashImage]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KTotalMinTenNumberPoint),    iNumberIcon[totalmin/10]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[totalmin/10]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KTotalMinUnitNumberPoint),   iNumberIcon[totalmin%10]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[totalmin%10]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KTotalMinColonPoint),        iNumberIcon[ESmbMusicAPSinglePlayerColonImage]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[ESmbMusicAPSinglePlayerColonImage]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KTotalSecTenNumberPoint),    iNumberIcon[totalsec/10]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[totalsec/10]->Mask(), EFalse);
	iOffScreenGc->BitBltMasked(TPointOrg::MakePoint(KTotalSecUnitNumberPoint),   iNumberIcon[totalsec%10]->Bitmap(), TRectOrg::MakeRect(KNumberRect), iNumberIcon[totalsec%10]->Mask(), EFalse);	
	}

/**
 *	價僢僩儅僢僾僼傽僀儖傪Load偡傞
 *
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerDispPlayTimeCtrl::LoadBitmapL()
	{
	// 宱夁帪娫昞帵夋憸
	for (TInt i = 0; i < NumberOfNumberImage; i++)
		{
		SmbMusicAPSinglePlayerIconUtils::LoadIconL(KPlayTimeNumber[0][i], KPlayTimeNumber[1][i], iNumberIcon, KSmbNumberBmpFileName);
		}
		
	// 僐儘儞
	SmbMusicAPSinglePlayerIconUtils::LoadIconL(EMbmPhotoT1_2_parts_timer_colon, EMbmPhotoT1_2_parts_timer_colonm, iNumberIcon, KSmbNumberBmpFileName);

	// 僗儔僢僔儏
	SmbMusicAPSinglePlayerIconUtils::LoadIconL(EMbmPhotoT1_2_parts_timer_hyphen, EMbmPhotoT1_2_parts_timer_hyphenm, iNumberIcon, KSmbNumberBmpFileName);		
	}

SEMCJ_NAMESPACE_END
// end of SmbMusicAPSinglePlayerDispPlayTimeCtrl.cpp
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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