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

📄 smbmusicapmainplayerfilterlistview.cpp

📁 symbian
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// 儕僗僩儃僢僋僗張棟
//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩儃僢僋僗偺僞僀僾傪愝掕偡傞
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 + -