📄 smbmusicapmainplayerfilterlistview.cpp
字号:
// 儕僗僩儃僢僋僗張棟
//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩儃僢僋僗偺僞僀僾傪愝掕偡傞
void CSmbMusicAPMainPlayerFilterListView::SetListBoxFormat(CSkonMusicListBox::TMusicListBoxFormat /*aFormat*/)
{
// 捠忢偺儕僗僩偼壗傕偟側偄
}
// 儕僗僩儃僢僋僗僆儁儗乕僔儑儞儌乕僪傪愝掕偡傞
void CSmbMusicAPMainPlayerFilterListView::SetOperationMode(CSkonRichListBoxBase::TOperationMode /*aMode*/)
{
// 捠忢偺儕僗僩偼壗傕偟側偄
}
// 儕僗僩儃僢僋僗偺僞僀僾傪庢摼偡傞
CSkonMusicListBox::TMusicListBoxFormat CSmbMusicAPMainPlayerFilterListView::ListBoxFormat()
{
// 捠忢偺儕僗僩偼侾峴昞帵儌乕僪偺傒
return CSkonMusicListBox::EFormatNormal;
}
// 儕僗僩憖嶌儌乕僪傪曉偡
CSkonRichListBoxBase::TOperationMode CSmbMusicAPMainPlayerFilterListView::OperationMode()
{
// 捠忢偺儕僗僩偼崁栚慖戰儌乕僪偺傒
return CSkonRichListBoxBase::EOperationNormal;
}
// 慖戰偝傟偰偄傞傾僀僥儉僀儞僨僢僋僗偺攝楍傪曉偡
const CArrayFix<TInt>* CSmbMusicAPMainPlayerFilterListView::SelectionIndexes()
{
if(NULL!=iListBox)
{
return iListBox->SelectionIndexes();
}
return NULL;
}
// 傾僀僥儉偺慖戰/慖戰庢傝徚偟傪峴偆
void CSmbMusicAPMainPlayerFilterListView::SelectItemL(TInt aItemIndex, TBool aSelected)
{
if(NULL!=iListBox)
{
iListBox->SelectItemL(aItemIndex, aSelected);
}
}
// 慡偰偺傾僀僥儉偺慖戰傪庢傝徚偡
void CSmbMusicAPMainPlayerFilterListView::ClearSelection()
{
if(NULL!=iListBox)
{
iListBox->ClearSelection();
}
}
// 儕僗僩儃僢僋僗
void CSmbMusicAPMainPlayerFilterListView::AdjustListBoxL(TBool /*aState*/)
{
}
// 儕僗僩儃僢僋僗偵僼僅乕僇僗傪愝掕偡傞
void CSmbMusicAPMainPlayerFilterListView::SetFocus(TBool aFocus)
{
if(NULL!=iListBox)
{
iListBox->SetFocus(aFocus);
}
}
// 慖戰偝傟偰偄傞傾僀僥儉傪庢摼偡傞
CSmbMusicAPMainPlayerFilterListItem* CSmbMusicAPMainPlayerFilterListView::CurrentItem()
{
CSmbMusicAPMainPlayerFilterListItem* item = NULL;
// 慖戰偝傟偨傾僀僥儉傪庢摼偡傞
if(NULL!=iListBox)
{
TInt itemIndex = iListBox->CurrentItemIndex();
item = static_cast<CSmbMusicAPMainPlayerFilterListItem*>(Model()->ItemByIndex(itemIndex));
// item = STATIC_CAST(CSmbMusicAPMainPlayerFilterListItem*, Model()->ItemByIndex(itemIndex));
}
return item;
}
// 慖戰偝傟偰偄傞傾僀僥儉偺僀儞僨僢僋僗傪庢摼偡傞
TInt CSmbMusicAPMainPlayerFilterListView::CurrentItemIndex()
{
// 慖戰偝傟偨傾僀僥儉傪庢摼偡傞
CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
if(NULL!=item)
{
return item->Index();
}
return 0;
}
/**
* 僾儘僙僗幚峴屻偺儕僗僩偺昞帵斖埻傪寁嶼偡傞乮愭摢Index乯
* @param[in] aTargetIndex 僇乕僜儖傪摉偰傞僀儞僨僢僋僗
* @return 寁嶼屻偺愭摢僀儞僨僢僋僗
*/
TInt CSmbMusicAPMainPlayerFilterListView::CalculateFocusIndex(TInt aTargetIndex)
{
TInt totalCount = ItemCount();
if(totalCount <= aTargetIndex)
{
return totalCount-1;
}
else if(0 > aTargetIndex)
{
return 0;
}
else
{
return aTargetIndex;
}
}
/**
* 僾儘僙僗幚峴屻偺儕僗僩偺昞帵斖埻傪寁嶼偡傞乮愭摢Index乯
* @param[in] aNowTopIndex 尰嵼偺愭摢Index
* @param[in] aTargetIndex 僇乕僜儖傪摉偰傞僀儞僨僢僋僗
* @return 寁嶼屻偺愭摢僀儞僨僢僋僗
*/
TInt CSmbMusicAPMainPlayerFilterListView::CalculateTopIndex(TInt aNowTopIndex, TInt aTargetIndex)
{
TInt topIndex = 0;
TInt wholeVisibleItemCount = ListBox()->NumberOfItemsPerLine() * ListBox()->NumberOfLinesPerPage();
TInt totalCount = ItemCount();
// 僷儔儊乕僞僠僃僢僋
if(0>aNowTopIndex || 0>aTargetIndex || 0>= wholeVisibleItemCount)
{
// 0傪曉偟偰偍偔
return 0;
}
if(aTargetIndex < aNowTopIndex)
{ //尰嵼偺斖埻傛傝忋偵僞乕僎僢僩偑偁傞応崌
topIndex = aTargetIndex;
}
else if( (aNowTopIndex+wholeVisibleItemCount-1) < aTargetIndex)
{ //尰嵼偺斖埻傛傝壓偵僞乕僎僢僩偑偁傞応崌
topIndex = aTargetIndex-wholeVisibleItemCount+1;
}
else
{ //尰嵼偺斖埻撪偵僞乕僎僢僩偑偁傞応崌
topIndex = aNowTopIndex;
}
if(totalCount < topIndex+wholeVisibleItemCount)
{
if(totalCount <= wholeVisibleItemCount)
{
topIndex = 0;
}
else
{
topIndex = totalCount - wholeVisibleItemCount;
}
}
return topIndex;
}
// 2006.10.01 TRK#4121
/**
* 僼僅乕僇僗摨婜傪偡傞
* @param[in] aFocusIndex 僼僅乕僇僗埵抲
* @return 寁嶼屻偺愭摢僀儞僨僢僋僗
*/
TInt CSmbMusicAPMainPlayerFilterListView::SyncFocusIndex(TInt aFocusIndex)
{
TInt topItemIndex = ListBox()->TopItemIndex();
TInt visibleBegin = ListBox()->VisibleItemIndex() + 1;
TInt visibleItemCount = ListBox()->NumberOfItemsPerLine() * ListBox()->NumberOfLinesPerPage();
//偡傋偰偺傾僀僥儉偑儕僗僩儃僢僋僗偵昞帵偝傟偰偄傞応崌
if(ItemCount()<=visibleItemCount)
{
//壗傕偟側偄
}
//儕僗僩儃僢僋僗昞帵偺奜偵僼僅乕僇僗偑弌偰偟傑偆応崌
else
{
//僼僅乕僇僗偑愭摢(index=0)偺応崌
if(0==aFocusIndex)
{
topItemIndex = 0;
}
//僼僅乕僇僗埲崀偺傾僀僥儉悢偑懌傝側偄応崌
else if(visibleItemCount>ItemCount()-aFocusIndex)
{
topItemIndex = ItemCount() - visibleItemCount;
}
//僼僅乕僇僗傪愭摢偵偡傞応崌
else if(0<aFocusIndex)
{
topItemIndex = aFocusIndex;
}
ListBox()->SetTopItemIndex(topItemIndex);
}
return topItemIndex;
}
/**
* 嵞惗忣曬僷僱儖偺昞帵埵抲傪敾抐偡傞
* @return ETrue:TopPosition EFalse:BottomPosition
*/
TBool CSmbMusicAPMainPlayerFilterListView::IsPanelPositionTop()
{
// 儕僗僩昞帵偱偼5崁栚栚(娷傓)傛傝忋偵偁傞応崌
TInt topIndex = iListBox->TopItemIndex();
TInt itemIndex = iListBox->CurrentItemIndex();
if(CSkonMusicListBox::EFormatNormal==ListBoxFormat())
{
if(5>itemIndex-topIndex)
{
return EFalse;
}
}
//僒儉僱僀儖昞帵偱偼3崁栚栚(娷傓)傛傝忋偵偁傞応崌
else
{
if(3>itemIndex-topIndex)
{
return EFalse;
}
}
return ETrue;
}
//////////////////////////////////////////////////////////////////////////////////////
// 僒僽儊僯儏乕
//////////////////////////////////////////////////////////////////////////////////////
// 僒僽儊僯儏乕昞帵張棟
void CSmbMusicAPMainPlayerFilterListView::ProcessSubMenuL(MSmbMusicAPMainPlayerFilterListViewObserver* /*aObserver*/)
{
// 僆僽僓乕僶偺僒僽儊僯儏乕張棟傪屇傃弌偡
// 捠忢偼摨婜張棟
View()->HandleSubMenuL(this, SubMenuID());
}
// 僒僽儊僯儏乕儕僜乕僗
TInt CSmbMusicAPMainPlayerFilterListView::SubMenuID()
{
return R_SB_MUSIC_MAIN_FLT_OTHER;
}
// 僒僽儊僯儏乕敿婸搙張棟
void CSmbMusicAPMainPlayerFilterListView::AdjustSubMenuL(CSkonSubMenu *aSubMenu, TInt /*aResId*/)
{
// 嵞惗拞偐偳偆偐傪僠僃僢僋偡傞
TSmbPGMusicAPPlayerState playState = SmbPGMusic::MusicAPPlayerStateL(View()->PropAgent());
if(ESmbPGMusicAPPlayerStatePlaying==playState) // 嵞惗拞
{
aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 0, EFalse);
aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 1, EFalse);
}
else
{
aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 0, ETrue);
aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 1, ETrue);
}
}
//////////////////////////////////////////////////////////////////////////////////////
// 僉乕僈僀僟儞僗
//////////////////////////////////////////////////////////////////////////////////////
// 僉乕僈僀僟儞僗昞帵
void CSmbMusicAPMainPlayerFilterListView::DrawKeyGuidanceL()
{
// 搊榐丒嶍彍偱儌僨儖曄峏偑敪惗
// 嵟慜柺偺價儏乕偱偁傞応崌丄僉乕僈僀僟儞僗傪嵞昤夋偡傞
if(EFalse!=View()->IsViewActivated())
{
// 儕僗僩儃僢僋僗偺僉乕僈僀僟儞僗傪愝掕偡傞
CSakKeyGuidance* keyGuidance = static_cast<CSkonKeyGuidance*>(View()->KeyGuidance());
// CSakKeyGuidance* keyGuidance = STATIC_CAST(CSkonKeyGuidance*, View()->KeyGuidance());
if(NULL!=keyGuidance)
{
// 偦傟偧傟偺夋柺偵墳偠偨僉乕僈僀僟儞僗傪愝掕偡傞
SetupKeyGuidanceL(keyGuidance);
}
//2006.09.25 TRK#9466
if(EFalse!=View()->IsFocused()
//2006.10.05 TRK#10979
&& IsActivated())
{
// 僉乕僈僀僟儞僗傪昞帵偡傞
//2006.10.13 TRK#10758,11375
SetFocus(ETrue);
}
}
}
// 慖戰僉乕僐儅儞僪
TInt CSmbMusicAPMainPlayerFilterListView::SelectKeyCommand(TBool aLongPress)
{
return EFalse!=aLongPress ? EMainPlayerFilterViewKGCmdLongSelect : EMainPlayerFilterViewKGCmdSelect;
}
// 僉乕僈僀僟儞僗忣曬
TBool CSmbMusicAPMainPlayerFilterListView::KeyGuidanceInfo(TSkonKeyGuidanceKeyIds aKey, TBool& aVisible, TInt& aTitleResId, TInt& aCommandID)
{
aVisible = EFalse;
aTitleResId = 0;
aCommandID = 0;
//亂偦偺懠亃
//寛掕僉乕(ESkonKeyGuidanceSelectKey)
// 丂亂慖戰亃SFT003丂崁栚慖戰
//僜僼僩俀僉乕(ESkonKeyGuidanceSoftKeyRight)
// 丂<柍岠>
switch(aKey)
{
case ESkonKeyGuidanceSelectKey:
aVisible = ETrue;
aTitleResId = R_SMB_AF_STR_SFT003;
aCommandID = 0;
return ETrue;
case ESkonKeyGuidanceSoftKeyRight:
aVisible = EFalse;
aTitleResId = 0;
aCommandID = 0;
return ETrue;
}
return EFalse;
}
//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩忣曬
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListView::ResetListInfo()
{
if(EFalse!=CanResetCache())
{
// 僉儍僢僔儏傪儕僙僢僩偡傞
Model()->Reset();
}
iListHandle = 0;
iActiveIndex = 0;
// 儕僗僩儃僢僋僗偺昞帵埵抲傪愭摢偵栠偡
ListBox()->SetTopItemIndex(0);
// 僼僅乕僇僗埵抲傪愭摢偵堏摦偡傞
ListBox()->SetCurrentItemIndex(0);
// 傾僋僥傿僽僼僅乕僇僗偼昞帵偟側偄
SetDefaultIndex(-1);
ListBox()->SetDefaultItemEmphasis(EFalse);
// 旕摨婜僾儘僙僗傪拞巭偡傞
StopAndDeleteProcess();
delete iThumbnailProcessObj;
iThumbnailProcessObj = NULL;
}
void CSmbMusicAPMainPlayerFilterListView::SetListHandle(TInt aListHandle)
{
iListHandle = aListHandle;
}
void CSmbMusicAPMainPlayerFilterListView::SetItemCount(TInt aItemCount)
{
Model()->SetNumberOfItems(aItemCount);
}
void CSmbMusicAPMainPlayerFilterListView::SetActiveIndex(TInt aIndex)
{
iActiveIndex = aIndex;
}
void CSmbMusicAPMainPlayerFilterListView::SetDefaultIndex(TInt aIndex)
{
iDefaultIndex = aIndex;
}
TInt CSmbMusicAPMainPlayerFilterListView::DefaultIndex()
{
return iDefaultIndex;
}
void CSmbMusicAPMainPlayerFilterListView::SetActivated()
{
iActivated = ETrue;
}
void CSmbMusicAPMainPlayerFilterListView::SetDeactivated()
{
iActivated = EFa
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -