smbmusicapmainplayerfilterlistmodel.cpp

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

CPP
554
字号
	// 悢偺僄儔乕僠僃僢僋
	if(0 >= aCount)
		{
		aCount = 0;
		return;
		}

	TInt resultTopIndex = aTopIndex;
	TInt resultItemCount = aCount;
	// 愭摢抣偺僄儔乕僠僃僢僋乮愭摢偑晧悢偺応崌偼丄0偲偟偰埖偆乯
	if(0 > resultTopIndex)
		{
		resultTopIndex = 0;
		}

	// 傾僀僥儉悢偼PageCountItems()偱庢傞偙偲傪婎杮偲偟丄偦偺悢偵枮偨側偄応崌偺傒丄愭摢傪0偲偟偰傾僀僥儉慡悢偲偡傞丅
	if(iCache->NumberOfItems() < iCache->PageCountItems())
		{
		resultTopIndex = 0;
		resultItemCount = iCache->NumberOfItems();
		}
	else
		{
		resultItemCount = iCache->PageCountItems();

		// 偙偙傑偱偺寁嶼寢壥偑傾僀僥儉偺斖埻傪挻偊傞応崌偼丄屻傠偐傜PageCountItems()暘偵抲偒姺偊傞
		if(iCache->NumberOfItems() < resultTopIndex+resultItemCount)
			{
			resultTopIndex = iCache->NumberOfItems() - resultItemCount;
			}
		}

	// 僉儍僢僔儏撪偺傾僀僥儉桳柍偵傛傞嵞寁嶼
	TInt resultEndIndex = resultTopIndex+resultItemCount-1;
	TInt cacheTopIndex = 0;
	TInt cacheItemCount = 0;
	iCache->CacheRange(cacheTopIndex, cacheItemCount);

	if(0 < cacheItemCount)
		{
		TInt cacheEndIndex = cacheTopIndex+cacheItemCount-1;

		// 幚嵺偵撉傒崬傓愭摢Index傪媮傔傞
		if(cacheTopIndex <= resultTopIndex && resultTopIndex <= cacheEndIndex)
			{
			resultTopIndex = cacheEndIndex+1;
			//2006.10.14
			//-->
			//resultEndIndex = resultTopIndex + resultItemCount;
			//<--
			}

		// 幚嵺偵撉傒崬傓嵟屻旜Index傪媮傔傞
		if(cacheTopIndex <= resultEndIndex && resultEndIndex <= cacheEndIndex)
			{
			resultEndIndex = cacheTopIndex-1;
			}
		
		//2006.10.14
		//-->
		//if(TotalNumberOfItems()-1<resultEndIndex)
		//	{
		//	resultEndIndex = TotalNumberOfItems()-1;
		//	}
		//<--

		// 愭摢偲嵟屻旜偵嵎偑偁傟偽丄偦偺嵎傪悢偲偡傞
		if(resultTopIndex <= resultEndIndex)
			{
			resultItemCount = resultEndIndex - resultTopIndex +1;
			}
		else
			{
			resultItemCount = 0;
			}
		}

	aTopIndex = resultTopIndex;
	aCount = resultItemCount;
//	_LIT(KLogFmt1, "CSmbMusicAPMainPlayerFilterListModel::GetCountCache(aTopIndex:%d aCount:%d) result");
//	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102031, ELogLevelLowest, KLogFmt1, aTopIndex, aCount);
	}

/**
 * 僉儍僢僔儏偺忬嫷傪庢摼偡傞
 * 
 * @param	aTopIndex	傾僀僥儉庢摼奐巒僀儞僨僢僋僗
 * @param	aCount		傾僀僥儉庢摼悢
 */
void CSmbMusicAPMainPlayerFilterListModel::GetCacheInfo(TInt& aTopIndex, TInt& aCount, TInt& aPageSize)
	{
	iCache->CacheRange(aTopIndex, aCount);
	aPageSize = iCache->PageCountItems();
	}

/**
 * 僉儍僢僔儏忣曬傪愝掕偡傞
 * 
 * @param aPageSize [in]	儁乕僕僒僀僘
 * @param aMaxPage [in]		嵟戝儁乕僕悢
 * @param aMaxSize [in]		嵟戝僉儍僢僔儏僒僀僘
 */
void CSmbMusicAPMainPlayerFilterListModel::SetCacheInfo(TInt aPageSize, TInt aMaxPage, TInt aMaxSize)
	{
	iCache->SetInfo(aPageSize, aMaxPage, aMaxSize);	
	}

//////////////////////////////////////////////////////////////
// 傾僀僥儉憖嶌
//////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListModel::Append(CSmbMusicAPMainPlayerFilterListItem* aItem)
	{
	// 僉儍僢僔儏撪偺傾僀僥儉悢傪庢摼偟偰丄僉儍僢僔儏偺嵟屻偵傾僀僥儉傪捛壛偡傞
	iCache->AppendItem(iCache->CountItem(), aItem);
	}

/**
 * 巜掕偟偨応強偐傜巜掕屄悢暘偺傾僀僥儉傪僉儍僢僔儏傾僀僥儉偲偟偰僙僢僩偡傞丅
 * 
 * @param aIndex [in]		僙僢僩偡傞傾僀僥儉偺愭摢僀儞僨僢僋僗
 * @param aItemArray [in]	僙僢僩偡傞傾僀僥儉攝楍
 */
void CSmbMusicAPMainPlayerFilterListModel::SetListItemL(TInt aIndex, RArray<TSmbMusicAPSyncEngineListItemInfo>& aItems)
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListModel::SetListItemL(aIndex:%d aItems.Count():%d)");
//	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102030, ELogLevelLowest, KLogFmt, aIndex, aItems.Count());

	TInt topIndex = 0;
	TInt itemCount = 0;
	iCache->CacheRange(topIndex, itemCount);
	//僉儍僢僔儏偺偳偪傜懁乮愭摢 or 嵟屻乯偵僙僢僩偡傞偐傪敾抐偡傞
	if(topIndex>aIndex && topIndex-1<=aIndex+aItems.Count()-1)
		{
		//僉儍僢僔儏偺愭摢偵媡曽岦偵憓擖偡傞
		for(TInt index=aItems.Count()-1;index>=0;index--)
			{
			//傾僀僥儉傪惗惉偡傞
			CSmbMusicAPMainPlayerFilterListItem* newItem = CSmbMusicAPMainPlayerFilterListItem::NewL(0, aIndex+index, iObserver);
			//僋儕乕儞傾僢僾僗僞僢僋傪妋曐偡傞
			CleanupStack::PushL(newItem);

			//僨僼僅儖僩偺僒儉僱僀儖傪愝掕偡傞
			newItem->SetDefaultJacket(iDefaultThumbnail);

			//傾僀僥儉忣曬傪愝掕偡傞
			TSmbMusicAPSyncEngineListItemInfo itemInfo = aItems[index];
			if(0<itemInfo.iDispString.Length())
				{
				newItem->SetTextL(MSkonMusicListBoxItem::ETextMain, itemInfo.iDispString);
				}
			else
				{
				// 儕僜乕僗偐傜僞僀僩儖傪撉傒崬傓
				HBufC*	text = CEikonEnv::Static()->AllocReadResourceL(iNoTitleResID);
				CleanupStack::PushL(text);
				newItem->SetTextL(MSkonMusicListBoxItem::ETextMain, text->Des());
				CleanupStack::Pop();	// text
				delete text;
				}
			newItem->SetIndex(itemInfo.iIndex);
			newItem->SetIsDisabled(itemInfo.iAvailable);
// Add-S PTX-824懳墳丂暯壀
			newItem->SetLimitation(itemInfo.iLimitation);
// Add-E PTX-824懳墳丂暯壀
			//僋儕乕儞傾僢僾僗僞僢僋傪奐曻偡傞
			CleanupStack::Pop();	// newItem

			//僉儍僢僔儏偺愭摢偵傾僀僥儉傪憓擖偡傞
			iCache->InsertItem(aIndex+index, newItem);
			}
		}
	else
		{
		//僉儍僢僔儏偺嵟屻偵惓曽岦偵捛壛偡傞
		for(TInt index=0;index<aItems.Count();index++)
			{
			//傾僀僥儉傪惗惉偡傞
			CSmbMusicAPMainPlayerFilterListItem* newItem = CSmbMusicAPMainPlayerFilterListItem::NewL(0, aIndex+index, iObserver);
			//僋儕乕儞傾僢僾僗僞僢僋傪妋曐偡傞
			CleanupStack::PushL(newItem);

			//僨僼僅儖僩偺僒儉僱僀儖傪愝掕偡傞
			newItem->SetDefaultJacket(iDefaultThumbnail);

			//傾僀僥儉忣曬傪愝掕偡傞
			TSmbMusicAPSyncEngineListItemInfo itemInfo = aItems[index];
			if(0<itemInfo.iDispString.Length())
				{
				newItem->SetTextL(MSkonMusicListBoxItem::ETextMain, itemInfo.iDispString);
				}
			else
				{
				// 儕僜乕僗偐傜僞僀僩儖傪撉傒崬傓
				HBufC*	text = CEikonEnv::Static()->AllocReadResourceL(iNoTitleResID);
				CleanupStack::PushL(text);
				newItem->SetTextL(MSkonMusicListBoxItem::ETextMain, text->Des());
				CleanupStack::Pop();	// text
				delete text;
				}
			newItem->SetIndex(itemInfo.iIndex);
			newItem->SetIsDisabled(itemInfo.iAvailable);
// Add-S PTX-824懳墳丂暯壀
			newItem->SetLimitation(itemInfo.iLimitation);
// Add-E PTX-824懳墳丂暯壀
			//僋儕乕儞傾僢僾僗僞僢僋傪奐曻偡傞
			CleanupStack::Pop();	// newItem
			//僉儍僢僔儏偺愭摢偵傾僀僥儉傪憓擖偡傞
			iCache->AppendItem(aIndex+index, newItem);
			}
		}
	}

/**
 * 傾僀僥儉傪暲傋懼偊傞
 * 
 * @param	aSrcIndex	
 * @param	aDestIndex	
 */
void CSmbMusicAPMainPlayerFilterListModel::OrderItem(TInt aSrcIndex, TInt aDestIndex)
	{
	iCache->OrderItem(aSrcIndex, aDestIndex);
	}

/**
 * 屌掕偱昞帵偡傞傾僀僥儉傪愝掕偡傞
 * 
 * @param	aTitleResID	屌掕傾僀僥儉偺僞僀僩儖儕僜乕僗ID
 * @param	aCommandID	屌掕傾僀僥儉偺僐儅儞僪ID
 */
void CSmbMusicAPMainPlayerFilterListModel::SetReservedItem(TInt aTitleResID, TInt aCommandID)
	{
    // 傾僀僥儉傪撉傒崬傫偱儌僨儖偵捛壛偡傞
//	CSmbMusicAPMainPlayerFilterListItem* item = CSmbMusicAPMainPlayerFilterListItem::NewL(0, 0, (MSmbMusicAPMainPlayerFilterListModelObserver*)NULL);
	CSmbMusicAPMainPlayerFilterListItem* item = CSmbMusicAPMainPlayerFilterListItem::NewL(0, 0, iObserver);
	CleanupStack::PushL(item);
	// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
	// 儕僜乕僗偐傜僞僀僩儖傪撉傒崬傓
	HBufC*	text = CEikonEnv::Static()->AllocReadResourceL(aTitleResID);
	CleanupStack::PushL(text);
	item->SetTextL(MSkonMusicListBoxItem::ETextMain, text->Des());	// title
	CleanupStack::Pop();	// text
	delete text;
	// 僐儅儞僪ID傪愝掕偡傞
	item->SetCommandID(aCommandID);
	// 僀儞僨僢僋僗傪愝掕偡傞
	item->SetIndex(0);
	// 敿婸搙愝掕傪偡傞
	item->SetIsDisabled(EFalse);
	CleanupStack::Pop();	// item
	iReservedItem = item;
	}

/**
 * 僞僀僩儖偑側偄応崌偺戙懼僞僀僩儖傪愝掕偡傞
 * 
 * @param	aTitleResID	戙懼僞僀僩儖偺僞僀僩儖儕僜乕僗ID
 */
void CSmbMusicAPMainPlayerFilterListModel::SetNoTitleResId(TInt aTitleResID)
	{
	iNoTitleResID = aTitleResID;
	}

/**
 * 僨僼僅儖僩偺僒儉僱僀儖傪愝掕偡傞
 * 
 * @param	aDefaultThumbnail	僨僼僅儖僩僒儉僱僀儖
 */
void CSmbMusicAPMainPlayerFilterListModel::SetDefaultThumbnail(CGulIcon* aDefaultThumbnail)
	{
	iDefaultThumbnail = aDefaultThumbnail;
	}
	
SEMCJ_NAMESPACE_END

// end of SmbMusicAPMainPlayerFilterModel.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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