smbmusicapmainplayerfilterlistmodel.cpp

来自「symbian」· C++ 代码 · 共 554 行 · 第 1/2 页

CPP
554
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListModel.cpp
//
// Description: 
//  SmbMusicAPMainPlayerFilterListModel class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/12	|SDNA嶳壀	| FilterView娭楢僋儔僗偺refactoring偵敽偭偰怴婯嶌惉
//2006/08/24	|SDNA嶳壀	| 僉儍僢僔儏忣曬愝掕傪捛壛

#include <FjAfEnv.h>
#include <SmbCommonDef.h>
#include <SkonRichListItem.h>
#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayerFilterListModel.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerUtility.h"

USING_NAMESPACE_DCM

SEMCJ_NAMESPACE_BEGIN

/** 
 * NewL
 *
 * @param aObserver [in]	僼傿儖僞儕僗僩傾僀僥儉僆僽僓乕僶
 */
CSmbMusicAPMainPlayerFilterListModel* CSmbMusicAPMainPlayerFilterListModel::NewL(MSmbMusicAPMainPlayerFilterListModelObserver* aObserver)
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::NewL()");
//	SmbMusicAPMainPlayerUtility::OutputLog(CAfEnv::Static()->Log(), 102000, ELogLevelNormal, KLogFmt);

	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterListModel* self = new(ELeave) CSmbMusicAPMainPlayerFilterListModel(aObserver);
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL();
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();// self
	return self;
	}

/** 
 * 僐儞僗僩儔僋僞
 *
 * @param aViewUid [in]		夋柺ID
 * @param aListHandle [in]	儕僗僩僴儞僪儖
 * @param aPropAgent [in]	僾儘僷僥傿僄乕僕僃儞僩
 */
CSmbMusicAPMainPlayerFilterListModel::CSmbMusicAPMainPlayerFilterListModel(MSmbMusicAPMainPlayerFilterListModelObserver* aObserver)
									: iLog(CAfEnv::Static()->Log())
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::CSmbMusicAPMainPlayerFilterListModel()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102010, ELogLevelNormal, KLogFmt);
	// 僆僽僓乕僶傪愝掕偡傞
	iObserver = aObserver;
	}

/** 
 * 僨僗僩儔僋僞
 *
 */
CSmbMusicAPMainPlayerFilterListModel::~CSmbMusicAPMainPlayerFilterListModel()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::~CSmbMusicAPMainPlayerFilterListModel()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102020, ELogLevelNormal, KLogFmt);
	
	//僉儍僢僔儏傪攋婞偡傞
	delete iCache;
	//嬻傾僀僥儉傪攋婞偡傞
	delete iDummyItem;
	//梊栺傾僀僥儉傪攋婞偡傞
	delete iReservedItem;
	}

/** 
 * 僙僇儞僪僐儞僗僩儔僋僞丅
 *
 * @param aSyncEngine [in]	摨婜僄儞僕儞
 */
void CSmbMusicAPMainPlayerFilterListModel::ConstructL()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::ConstructL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102030, ELogLevelNormal, KLogFmt);
	
	//僉儍僢僔儏傪僙僢僩傾僢僾偡傞
	iCache = CSmbMusicAPMainPlayerFilterListCache::NewL(0, 0, 0);
	//僉儍僢僔儏枹庢摼帪偺偨傔偺嬻傾僀僥儉
	iDummyItem = CSmbMusicAPMainPlayerFilterListItem::NewL(0, -1, (MSmbMusicAPMainPlayerFilterListModelObserver*)NULL);
	iReservedItem = NULL;
	iNoTitleResID = R_SMB_AF_STR_WRD2878;
	}

//////////////////////////////////////////////////////////////
// SkonMusicListBox I/F (MSkonMusicListBoxModel)
//////////////////////////////////////////////////////////////	
/**
 * 巜掕僀儞僨僢僋僗偺傾僀僥儉傪曉偡丅(僉儍僢僔儏攝楍偺僀儞僨僢僋僗巜掕)
 *
 * @return 巜掕僀儞僨僢僋僗偺傾僀僥儉
 */
MSkonRichListItem* CSmbMusicAPMainPlayerFilterListModel::Item(TInt aItemIndex) const
	{
	//憤傾僀僥儉悢偑侽屄偺応崌偼NULL傪曉偡
	if(0==iCache->NumberOfItems())
		{
		return NULL;
		}
	//憤傾僀僥儉悢偑侽埲忋偱屌掕傾僀僥儉乮偡傋偰偺乣乯偑偁傞応崌
	if(0<iCache->NumberOfItems() && NULL!=iReservedItem)
		{
		if(0==aItemIndex)
			{
			return iReservedItem;
			}
		else
			{
			//僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = iCache->Item(aItemIndex-1);
			if(NULL!=item)
				{
				return item;
				}
			}
		}
	else
		{
		//僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞
		CSmbMusicAPMainPlayerFilterListItem* item = iCache->Item(aItemIndex);
		if(NULL!=item)
			{
			return item;
			}
		}
	//僉儍僢僔儏撪偵側偗傟偽偲傝偁偊偢嬻偺傾僀僥儉傪曉偡
	//仸偙偺働乕僗偑敪惗偟偨傜傾僀僥儉庢摼傪僆僽僓乕僶偵捠抦偟偰僉儍僢僔儏偵傾僀僥儉傪曗廩偟偰傕傜偆
	return iDummyItem;
	}

/**
 * 巜掕僀儞僨僢僋僗偺傾僀僥儉傪曉偡丅(傾僀僥儉偺僀儞僨僢僋僗巜掕)
 *
 * @return 巜掕僀儞僨僢僋僗偺傾僀僥儉
 */
MSkonRichListItem* CSmbMusicAPMainPlayerFilterListModel::ItemByIndex(TInt aItemIndex) const
	{
	//憤傾僀僥儉悢偑侽屄偺応崌偼NULL傪曉偡
	if(0==iCache->NumberOfItems())
		{
		return NULL;
		}
	//憤傾僀僥儉悢偑侽埲忋偱屌掕傾僀僥儉乮偡傋偰偺乣乯偑偁傞応崌
	if(0<iCache->NumberOfItems() && NULL!=iReservedItem)
		{
		if(0==aItemIndex)
			{
			return iReservedItem;
			}
		else
			{
			//僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = iCache->ItemByIndex(aItemIndex-1);
			if(NULL!=item)
				{
				return item;
				}
			}
		}
	else
		{
		//僉儍僢僔儏偐傜傾僀僥儉傪庢摼偡傞
		CSmbMusicAPMainPlayerFilterListItem* item = iCache->ItemByIndex(aItemIndex);
		if(NULL!=item)
			{
			return item;
			}
		}
	//僉儍僢僔儏撪偵側偗傟偽偲傝偁偊偢嬻偺傾僀僥儉傪曉偡
	//仸偙偺働乕僗偑敪惗偟偨傜傾僀僥儉庢摼傪僆僽僓乕僶偵捠抦偟偰僉儍僢僔儏偵傾僀僥儉傪曗廩偟偰傕傜偆
	return NULL;
	}

/**
 * 儌僨儖偑僉儍僢僔儏偟偰偄傞堦斣弶傔偺傾僀僥儉偺僀儞僨僢僋僗斣崋傪曉偡丅
 * 
 * @return 儌僨儖偑僉儍僢僔儏偟偰偄傞堦斣弶傔偺傾僀僥儉偺僀儞僨僢僋僗斣崋
 */
TInt CSmbMusicAPMainPlayerFilterListModel::FirstItemIndex() const
	{
	// 忢偵侽傪曉偡
	return 0;		
	}
	
/**
 * 儌僨儖偑僉儍僢僔儏偟偰偄傞傾僀僥儉悢傪曉偡丅
 * 
 * @return 儌僨儖偑僉儍僢僔儏偟偰偄傞傾僀僥儉悢
 */
TInt CSmbMusicAPMainPlayerFilterListModel::NumberOfItems() const
	{
	// TotalNumberOfItems傪曉偡
	// 忢偵偡傋偰偺傾僀僥儉傪曐帩偟偰偄傞傛偆偵尒偣偐偗傞
	return TotalNumberOfItems();		
	}

/**
 * 梊栺傾僀僥儉傪娷傓儕僗僩偺憤傾僀僥儉悢傪曉偡丅
 * 専嶕幚峴寢壥庢摼偟偨傾僀僥儉悢偺僉儍僢僔儏傪曉偡丅
 * 
 * @return 傾僀僥儉悢
 */
TInt CSmbMusicAPMainPlayerFilterListModel::TotalNumberOfItems() const
	{
	//憤傾僀僥儉悢偑侽屄偺応崌偼侽傪曉偡
	if(0==iCache->NumberOfItems())
		{
		return 0;
		}
	//憤傾僀僥儉悢偑侽埲忋偱屌掕傾僀僥儉乮偡傋偰偺乣乯偑偁傞応崌
	if(0<iCache->NumberOfItems() && NULL!=iReservedItem)
		{
		return iCache->NumberOfItems() + 1;
		}
	else
		{
		return iCache->NumberOfItems();
		}
	}

/**
 * 僉儍僢僔儏偺傾僀僥儉悢傪庢摼偡傞
 * 
 * @return 儌僨儖偑僉儍僢僔儏偟偰偄傞傾僀僥儉悢
 */
TInt CSmbMusicAPMainPlayerFilterListModel::NumberOfCacheItems() const
	{
	return iCache->CountItem();		
	}

/**
 * 憤傾僀僥儉悢傪愝掕偡傞
 * 
 * @param	aNumberOfItems	憤傾僀僥儉悢
 */
void CSmbMusicAPMainPlayerFilterListModel::SetNumberOfItems(TInt aNumberOfItems)
	{
	iCache->SetNumberOfItems(aNumberOfItems);
	}

/**
 * 儕僙僢僩偡傞
 * 
 */
void CSmbMusicAPMainPlayerFilterListModel::Reset()
	{
	iCache->Reset();
	}

/**
 * 傾僀僥儉庢摼帪偺僷儔儊乕僞傪僉儍僢僔儏偺忬嫷偵崌傢偣偰挷惍偡傞
 * 
 * @param	aTopIndex	傾僀僥儉庢摼奐巒僀儞僨僢僋僗
 * @param	aCount		傾僀僥儉庢摼悢
 */
void CSmbMusicAPMainPlayerFilterListModel::GetCountCache(TInt& aTopIndex, TInt& aCount)
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::GetCountCache(aTopIndex:%d aCount:%d)");
//	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102030, ELogLevelLowest, KLogFmt, aTopIndex, aCount);

⌨️ 快捷键说明

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