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

📄 smbmusicapmainplayerfilterlistcache.cpp

📁 symbian
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListCache.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListCache class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/12	|SDNA嶳壀	| FilterView娭楢僋儔僗偺refactoring偵敽偭偰怴婯嶌惉
//2006/08/13	|SDNA嶳壀	| FilterListModel偐傜暘棧
//2006/08/28	|SDNA嶳壀	| 僒僀僋儕僢僋帪偺AppendItem偱RemoveItem偑柍尷儖乕僾偵側傞偺傪廋惓

#include <FjAfEnv.h>
#include <SmbCommonDef.h>
#include "SmbMusicAPMainPlayerFilterListCache.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerUtility.h"

USING_NAMESPACE_DCM

SEMCJ_NAMESPACE_BEGIN

/** 
 * NewL
 *
 * @param aPageSize [in]		僉儍僢僔儏儁乕僕僒僀僘
 * @param aMaxPage [in]			嵟戝儁乕僕悢
 * @param aMaxSize [in]			嵟戝僉儍僢僔儏僒僀僘
 */
CSmbMusicAPMainPlayerFilterListCache* CSmbMusicAPMainPlayerFilterListCache::NewL(TInt aPageSize, TInt aMaxPage, TInt aMaxSize)
	{
	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterListCache* self = new(ELeave) CSmbMusicAPMainPlayerFilterListCache(aPageSize, aMaxPage, aMaxSize);
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL();
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();// self
	return self;
	}

/** 
 * 僐儞僗僩儔僋僞
 *
 * @param aPageSize [in]		僉儍僢僔儏儁乕僕僒僀僘
 * @param aMaxPage [in]			嵟戝儁乕僕悢
 * @param aMaxSize [in]			嵟戝僉儍僢僔儏僒僀僘
 */
CSmbMusicAPMainPlayerFilterListCache::CSmbMusicAPMainPlayerFilterListCache(TInt aPageSize, TInt aMaxPage, TInt aMaxSize)
									: iLog(CAfEnv::Static()->Log())
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::CSmbMusicAPMainPlayerFilterListCache()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102010, ELogLevelLow, KLogFmt);
	//幚嵺偺傾僀僥儉憤悢
	iNumberOfItems		= 0;
	//僉儍僢僔儏偺撉崬傒埵抲僀儞僨僢僋僗
	iTopIndex			= 0;
	//僉儍僢僔儏儁乕僕僒僀僘乮堦搙偵撉傒崬傓傾僀僥儉悢乯
	iPageSize 			= 0<aPageSize ? aPageSize : EDefaultPageSize;
	//嵟戝儁乕僕悢
	iMaxPage 			= 0<aMaxPage ? aMaxPage : EDefaultPageMax;
	//嵟戝僉儍僢僔儏僒僀僘
	iMaxSize 			= 0<aMaxSize ? aMaxSize : iPageSize*iMaxPage;
	}

/** 
 * 僙僇儞僪僐儞僗僩儔僋僞丅
 *
 */
void CSmbMusicAPMainPlayerFilterListCache::ConstructL()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::ConstructL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102030, ELogLevelLow, KLogFmt);
	}

/** 
 * 僨僗僩儔僋僞
 *
 */
CSmbMusicAPMainPlayerFilterListCache::~CSmbMusicAPMainPlayerFilterListCache()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::~CSmbMusicAPMainPlayerFilterListCache()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102020, ELogLevelLow, KLogFmt);

	//僉儍僢僔儏傪攋婞偡傞
	Reset();
	}

/**
 * 僉儍僢僔儏傪弶婜壔偡傞
 */
void CSmbMusicAPMainPlayerFilterListCache::Reset()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::DeleteCache()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102050, ELogLevelLow, KLogFmt);
	
	//僉儍僢僔儏傪攋婞偡傞
	iItemArray.ResetAndDestroy();
	iItemArray.Close();
	
	iTopIndex = 0;
	iNumberOfItems = 0;
	}

/**
 * 僉儍僢僔儏忣曬傪愝掕偡傞
 * 
 * @param aPageSize [in]	儁乕僕僒僀僘
 * @param aMaxPage [in]		嵟戝儁乕僕悢
 * @param aMaxSize [in]		嵟戝僉儍僢僔儏僒僀僘
 */
void CSmbMusicAPMainPlayerFilterListCache::SetInfo(TInt aPageSize, TInt aMaxPage, TInt aMaxSize)
	{
	//僉儍僢僔儏儁乕僕僒僀僘乮堦搙偵撉傒崬傓傾僀僥儉悢乯
	iPageSize 			= 0<aPageSize ? aPageSize : EDefaultPageSize;
	//嵟戝儁乕僕悢
	iMaxPage 			= 0<aMaxPage ? aMaxPage : EDefaultPageMax;
	//嵟戝僉儍僢僔儏僒僀僘
	iMaxSize 			= 0<aMaxSize ? aMaxSize : iPageSize*iMaxPage;
	}

/**
 * 僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞(僉儍僢僔儏攝楍偺僀儞僨僢僋僗巜掕)
 *
 * @param [in]	aItemIndex	僀儞僨僢僋僗
 */
CSmbMusicAPMainPlayerFilterListItem* CSmbMusicAPMainPlayerFilterListCache::Item(TInt aItemIndex) const
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::Item(%d)");
//	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102050, ELogLevelLow, KLogFmt, aItemIndex);
	
	//傾僀僥儉僀儞僨僢僋僗傪僠僃僢僋偡傞
	TInt index = ItemIndex(aItemIndex);
	//僉儍僢僔儏撪偵偁傞偐偳偆偐傪僠僃僢僋偡傞
	if(0<=index)
		{
		return iItemArray[index];
		}
	return NULL;
	}

/**
 * 僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞(傾僀僥儉偺僀儞僨僢僋僗巜掕)
 *
 * @param [in]	aItemIndex	僀儞僨僢僋僗
 */
CSmbMusicAPMainPlayerFilterListItem* CSmbMusicAPMainPlayerFilterListCache::ItemByIndex(TInt aItemIndex) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::ItemByIndex(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102050, ELogLevelLow, KLogFmt, aItemIndex);
	
	//僉儍僢僔儏撪偵偁傞偐偳偆偐傪僠僃僢僋偡傞
	for(TInt i=0; i<iItemArray.Count(); i++)
		{
		TInt index = iItemArray[i]->Index();
		if(index == aItemIndex)
			{
			return iItemArray[i];
			}
		}
	return NULL;
	}

/**
 * 僉儍僢僔儏偺嵟屻旜偵傾僀僥儉傪捛壛偡傞
 * 
 * @param [in]	aItemIndex	捛壛偡傞傾僀僥儉偺僀儞僨僢僋僗斣崋
 * @param [in]	aItem		捛壛偡傞傾僀僥儉
 * @return					僄儔乕
 */
void CSmbMusicAPMainPlayerFilterListCache::AppendItem(TInt aItemIndex, CSmbMusicAPMainPlayerFilterListItem* aItem)
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::AppendItem(%d 0x%08x)");
//	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102060, ELogLevelLow, KLogFmt, aItemIndex, aItem);
	
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 傾僀僥儉僀儞僨僢僋僗偲傾僀僥儉憤悢(iNumberOfItems)偺娭學傪僠僃僢僋
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	//傾僀僥儉僀儞僨僢僋僗傪僠僃僢僋偡傞
	if(0>aItemIndex || iNumberOfItems<aItemIndex)
		{
		//晧偺僀儞僨僢僋僗傗傾僀僥儉憤悢傪挻偊傞僀儞僨僢僋僗偼偁傝偊側偄
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::AppendItem(%d, 0x%08x) - error");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102061, ELogLevelHighest, KLogFmt, aItemIndex, aItem);
		return;
		}
	//嵟屻旜偱偁傟偽僉儍僢僔儏偺楢懕惈偑曐偨傟傞偺偱捛壛偡傞
	else if(iNumberOfItems==aItemIndex)
		{
		//傾僀僥儉憤悢傪憹壛偡傞
		//仸捠忢偺傾僀僥儉庢摼帪偺応崌iNumberOfItems偼儕僗僩僴儞僪儖偐傜傾僀僥儉悢傪庢摼偟偰愝掕偡傞偺偱
		//  偙偙偵棃傞偙偲偼側偄偼偢偩偑丄儈儏乕僕僢僋儊僯儏乕側偳偼偙偙偱傾僀僥儉憤悢傪僇僂儞僩偡傞
		iNumberOfItems++;
		}
	
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 傾僀僥儉僀儞僨僢僋僗偲僉儍僢僔儏撉崬傒埵抲(iTopIndex)偺娭學傪僠僃僢僋
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	//傾僀僥儉僀儞僨僢僋僗偺楢懕惈傪僠僃僢僋偡傞
	if(iTopIndex+CountItem()!=aItemIndex)
		{
		//仸偙偺働乕僗偑敪惗偡傞偲僉儍僢僔儏偑堦帪揑偵尭彮偟偰performance偑棊偪傞偺偱岲傑偟偔側偄丅彨棃偺壽戣丅
		
		//晄楢懕側椞堟偺僀儞僨僢僋僗偑巜掕偝傟偨応崌
		if(iTopIndex>aItemIndex || iTopIndex+CountItem()<aItemIndex)
			{
			//憐掕偝傟傞働乕僗
			//丂丒僒僀僋儕僢僋偵僩僢僾偵僕儍儞僾偟偨働乕僗
			//丂丒傾僀僥儉撉傒崬傒偑捛偄偮偐側偄働乕僗
			//僉儍僢僔儏偼楢懕椞堟側偺偱僀儞僨僢僋僗偑僕儍儞僾偡傞応崌偼偡傋偰偺僉儍僢僔儏傪攋婞偡傞
			iItemArray.ResetAndDestroy();
			//僉儍僢僔儏偺撉崬傒埵抲傪曄峏偡傞
			iTopIndex = aItemIndex;
			}
		//僉儍僢僔儏椞堟撪偺僀儞僨僢僋僗偑巜掕偝傟偨応崌
		else
			{
			//憐掕偝傟傞働乕僗
			//丂丒傾僀僥儉偺嵞庢摼丠
			//巜掕偝傟偨僀儞僨僢僋僗埲崀偺僉儍僢僔儏傪攋婞偡傞
			TInt index = ItemIndex(aItemIndex);
			while(CountItem()>index)
				{
				RemoveItem(aItemIndex, ETrue);
				}
			}
		}
	
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 僉儍僢僔儏偺僆乕僶乕僼儘乕傪僠僃僢僋
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	//僉儍僢僔儏撪偺傾僀僥儉悢傪僠僃僢僋偡傞
	if(iMaxSize<=CountItem())
		{
		//僉儍僢僔儏偑僆乕僶乕僼儘乕偡傞偲偒偼愭摢偺傾僀僥儉傪嶍彍偡傞
		RemoveItem(iTopIndex, ETrue);
		iTopIndex++;
		}
	
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 傾僀僥儉傪嵟屻旜偵捛壛
	////////////////////////////////////////////////////////////////////////////////////////////////////////
	//僉儍僢僔儏偵傾僀僥儉傪捛壛偡傞
	TInt err = iItemArray.Append(aItem);

⌨️ 快捷键说明

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