📄 smbmusicapmainplayerfilterlistcache.cpp
字号:
if(KErrNone!=err)
{
//儊儌儕儕乕僋偵梫拲堄丅RPointerArray::Append偼僄儔乕傪曉偡偺偱昁偢僠僃僢僋偡傞偙偲丅
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::AppendItem(0x%08x) error=%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102061, ELogLevelHighest, KLogFmt, aItem, err);
User::Leave(err);
}
}
/**
* 僉儍僢僔儏偺愭摢偵傾僀僥儉傪憓擖偡傞
*
* @param [in] aItemIndex 憓擖偡傞傾僀僥儉偺僀儞僨僢僋僗斣崋
* @param [in] aItem 憓擖偡傞傾僀僥儉
* @return 僄儔乕
*/
void CSmbMusicAPMainPlayerFilterListCache::InsertItem(TInt aItemIndex, CSmbMusicAPMainPlayerFilterListItem* aItem)
{
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::InsertItem(%d, 0x%08x)");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102070, ELogLevelLow, KLogFmt, aItemIndex, aItem);
////////////////////////////////////////////////////////////////////////////////////////////////////////
// 傾僀僥儉僀儞僨僢僋僗偲傾僀僥儉憤悢(iNumberOfItems)偺娭學傪僠僃僢僋
////////////////////////////////////////////////////////////////////////////////////////////////////////
//傾僀僥儉僀儞僨僢僋僗傪僠僃僢僋偡傞
if(0>aItemIndex || iNumberOfItems<=aItemIndex)
{
//晧偺僀儞僨僢僋僗傗傾僀僥儉憤悢傪挻偊傞僀儞僨僢僋僗偼偁傝偊側偄
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::InsertItem(%d, 0x%08x) - error");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102071, ELogLevelHighest, KLogFmt, aItemIndex, aItem);
return;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
// 傾僀僥儉僀儞僨僢僋僗偲僉儍僢僔儏撉崬傒埵抲(iTopIndex)偺娭學傪僠僃僢僋
////////////////////////////////////////////////////////////////////////////////////////////////////////
//傾僀僥儉僀儞僨僢僋僗偺楢懕惈傪僠僃僢僋偡傞
if(iTopIndex-1!=aItemIndex)
{
//仸偙偺働乕僗偑敪惗偡傞偲僉儍僢僔儏偑堦帪揑偵尭彮偟偰performance偑棊偪傞偺偱岲傑偟偔側偄丅彨棃偺壽戣丅
//晄楢懕側椞堟偺僀儞僨僢僋僗偑巜掕偝傟偨応崌
if(iTopIndex-1>aItemIndex || iTopIndex+CountItem()<aItemIndex)
{
//憐掕偝傟傞働乕僗
//丂丒僒僀僋儕僢僋偵儃僩儉偵僕儍儞僾偟偨働乕僗
//丂丒傾僀僥儉撉傒崬傒偑捛偄偮偐側偄働乕僗
//僉儍僢僔儏偼楢懕椞堟側偺偱僀儞僨僢僋僗偑僕儍儞僾偡傞応崌偼偡傋偰偺僉儍僢僔儏傪攋婞偡傞
iItemArray.ResetAndDestroy();
}
//僉儍僢僔儏椞堟撪偺僀儞僨僢僋僗偑巜掕偝傟偨応崌
else
{
//偙偺働乕僗偼憐掕奜偩偑丄堦墳偺懳墳偼偟偰偍偔
//巜掕偝傟偨僀儞僨僢僋僗埲慜偺僉儍僢僔儏傪攋婞偡傞
while(0<=ItemIndex(aItemIndex))
{
RemoveItem(iTopIndex, ETrue);
iTopIndex++;
}
}
//僉儍僢僔儏偺撉崬傒埵抲偼憓擖帪偵曄峏偡傞
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
// 僉儍僢僔儏偺僆乕僶乕僼儘乕傪僠僃僢僋
////////////////////////////////////////////////////////////////////////////////////////////////////////
//僉儍僢僔儏撪偺傾僀僥儉悢傪僠僃僢僋偡傞
if(iMaxSize<=CountItem())
{
//僉儍僢僔儏偑僆乕僶乕僼儘乕偡傞偲偒偼嵟屻旜偺傾僀僥儉傪嶍彍偡傞
RemoveItem(iTopIndex+CountItem()-1, ETrue);
//僉儍僢僔儏偺撉崬傒埵抲偼憓擖帪偵曄峏偡傞
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
// 傾僀僥儉傪愭摢偵憓擖
////////////////////////////////////////////////////////////////////////////////////////////////////////
//僉儍僢僔儏偺愭摢偵傾僀僥儉傪憓擖偡傞
TInt err = iItemArray.Insert(aItem, 0);
if(KErrNone!=err)
{
//儊儌儕儕乕僋偵梫拲堄丅RPointerArray::Insert偼僄儔乕傪曉偡偺偱昁偢僠僃僢僋偡傞偙偲丅
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::InsertItem(0x%08x) error=%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102071, ELogLevelHighest, KLogFmt, aItem, err);
User::Leave(err);
}
//僉儍僢僔儏偺撉崬傒埵抲傪曄峏偡傞
iTopIndex = aItemIndex;
}
/**
* 僉儍僢僔儏偐傜傾僀僥儉傪嶍彍偡傞
*
* @param [in] aItemIndex 嶍彍偡傞傾僀僥儉偺僀儞僨僢僋僗斣崋
* @param [in] aDelete 傾僀僥儉偺僀儞僗僞儞僗傪嶍彍偡傞偐偳偆偐乮ETrue:嶍彍偡傞 EFalse:嶍彍偟側偄)
*/
void CSmbMusicAPMainPlayerFilterListCache::RemoveItem(TInt aItemIndex, TBool aDelete)
{
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::RemoveItem(%d)");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102080, ELogLevelLow, KLogFmt, aItemIndex);
//僀儞僨僢僋僗偑僉儍僢僔儏撪偐偳偆偐傪僠僃僢僋偡傞
TInt index = ItemIndex(aItemIndex);
if(0<=index)
{
if(EFalse!=aDelete)
{
//傾僀僥儉傪庢摼偡傞
CSmbMusicAPMainPlayerFilterListItem* item = iItemArray[index];
//傾僀僥儉傪嶍彍偡傞
delete item;
}
//僉儍僢僔儏偐傜傾僀僥儉梫慺傪彍嫀偡傞
iItemArray.Remove(index);
}
}
/**
* 暲傋懼偊傞
*/
void CSmbMusicAPMainPlayerFilterListCache::OrderItem(TInt aSrcIndex, TInt aDestIndex)
{
//傾僀僥儉傪庢摼偡傞
CSmbMusicAPMainPlayerFilterListItem* item = iItemArray[aSrcIndex];
if(aSrcIndex>aDestIndex)
{
//僉儍僢僔儏偐傜傾僀僥儉梫慺傪彍嫀偡傞
iItemArray.Remove(aSrcIndex);
//僉儍僢僔儏偵傾僀僥儉傪憓擖偡傞
iItemArray.Insert(item, aDestIndex);
}
else
{
//僉儍僢僔儏偵傾僀僥儉傪憓擖偡傞
iItemArray.Insert(item, aDestIndex+1);
//僉儍僢僔儏偐傜傾僀僥儉梫慺傪彍嫀偡傞
iItemArray.Remove(aSrcIndex);
}
}
/**
* 傾僀僥儉偺僉儍僢僔儏撪僀儞僨僢僋僗傪庢摼偡傞
*
* @param [in] aItemIndex 傾僀僥儉偺僀儞僨僢僋僗
* @return 僉儍僢僔儏撪偱偺僀儞僨僢僋僗(僉儍僢僔儏偵側偄偲偒偼-1)
*/
TInt CSmbMusicAPMainPlayerFilterListCache::ItemIndex(TInt aItemIndex) const
{
//傾僀僥儉僀儞僨僢僋僗傪僠僃僢僋偡傞
if(0>aItemIndex ||iNumberOfItems<=aItemIndex)
{
//晧偺僀儞僨僢僋僗傗傾僀僥儉憤悢傪挻偊傞僀儞僨僢僋僗偼偁傝偊側偄
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::ItemIndex(%d) - error");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102061, ELogLevelLow, KLogFmt, aItemIndex);
return -1;
}
//傾僀僥儉偑側偄偲偒偼-1傪曉偡
if(0==iNumberOfItems)
{
return -1;
}
//僉儍僢僔儏撪偵偁傞偐偳偆偐傪僠僃僢僋偡傞
if(iTopIndex<=aItemIndex && iTopIndex+CountItem()>aItemIndex)
{
return aItemIndex - iTopIndex;
}
return -1;
}
/**
* 僉儍僢僔儏偺傾僀僥儉悢傪庢摼偡傞
*
* @return 僉儍僢僔儏傾僀僥儉悢
*/
TInt CSmbMusicAPMainPlayerFilterListCache::CountItem() const
{
// _LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::CountItem()");
// SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102080, ELogLevelLow, KLogFmt);
//僉儍僢僔儏撪偺傾僀僥儉悢傪庢摼偡傞
return iItemArray.Count();
}
/**
* 僉儍僢僔儏偺椞堟傪庢摼偡傞
*
* @param [out] aStartIndex 僉儍僢僔儏偺TOP僀儞僨僢僋僗
* @param [out] aCount 僉儍僢僔儏偺傾僀僥儉悢
*/
void CSmbMusicAPMainPlayerFilterListCache::CacheRange(TInt& aTopIndex, TInt& aCount) const
{
// _LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::CacheRange() iTopIndex=%d, CountItem()=%d");
// SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102080, ELogLevelLowest, KLogFmt, iTopIndex, CountItem());
aTopIndex = iTopIndex;
aCount = CountItem();
}
/**
* 傾僀僥儉悢傪庢摼偡傞
*
* @return 僉儍僢僔儏傾僀僥儉悢
*/
TInt CSmbMusicAPMainPlayerFilterListCache::NumberOfItems() const
{
// _LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterListCache::NumberOfItems() iNumberOfItems=%d");
// SmbMusicAPMainPlayerUtility::OutputLog(iLog, 102090, ELogLevelLowest, KLogFmt, iNumberOfItems);
return iNumberOfItems;
}
/**
* 傾僀僥儉悢傪愝掕偡傞
*
* @param aNumberOfItems 傾僀僥儉悢
*/
void CSmbMusicAPMainPlayerFilterListCache::SetNumberOfItems(TInt aNumberOfItems)
{
iNumberOfItems = aNumberOfItems;
}
/**
* 儁乕僕僒僀僘乮堦搙偵撉傒崬傓傾僀僥儉悢乯傪庢摼偡傞
*
* @return 僉儍僢僔儏傾僀僥儉悢
*/
TInt CSmbMusicAPMainPlayerFilterListCache::PageCountItems() const
{
// return iPageSize*2; // 挷惍偑昁梫
return iPageSize; // 挷惍偑昁梫
}
/**
* 嵟戝僉儍僢僔儏悢傪庢摼偡傞
*
* @return 僉儍僢僔儏傾僀僥儉悢
*/
TInt CSmbMusicAPMainPlayerFilterListCache::MaxCountItems() const
{
return iMaxSize;
}
SEMCJ_NAMESPACE_END
// end of SmbMusicAPMainPlayerFilterModel.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -