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

📄 smbmusicapmainplayerfilterlistview.cpp

📁 symbian
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListView.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListView class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     	|撪梕
//--------------+---------------+----------------------------------------------
//2006/06/12    |SDNA 彫椦  	| 怴婯嶌惉
//2006/06/20    |SDNA 嶳壀  	| FilterView偲偺愑柋偺挷惍
//2006/06/27    |SDNA 嶳壀  	| 婎杮晹偲偺寢崌偵崌傢偣偰廋惓
//2006/07/13    |SDNA 嶳壀  	| 僒儉僱僀儖昞帵丄暋悢慖戰儌乕僪側偳SkonListBox偺懏惈曄峏張棟傪嫟捠壔
//2006/07/13    |SDNA 嶳壀  	| 奺夋柺偛偲偵攈惗僋儔僗嶌惉
//2006/07/15	|SDNA嶳壀		| 僞僀僩儖僶乕張棟
//2006/07/16	|SDNA嶳壀		| 暲傋懼偊儌乕僪丄僥僉僗僩儔儀儖張棟
//2006/08/08	|SDNA嶳壀		| 僒僽儊僯儏乕敿婸搙昞帵傪廋惓
//2006/08/10	|SDNA嶳壀		| 侾嬋嶍彍偺敿婸搙昞帵傪廋惓
//2006/08/12	|SDNA嶳壀		|FilterView娭楢僋儔僗偺refactoring
//2006/08/14	|SDNA嶳壀		|夋柺掕媊偺奼挘
//2006/08/23	|SDNA嶳壀		|傾僋僥傿僽僼僅乕僇僗梡偺儊僜僢僪傪捛壛
//2006/08/23	|SDNA嶳壀		|暋悢慖戰儌乕僪偱偺慖戰崁栚悢僠僃僢僋
//2006/08/24	|SDNA嶳壀		|暋悢慖戰儌乕僪偱偺慖戰崁栚悢僠僃僢僋廋惓
//2006/08/24	|SDNA嶳壀		|僗僋儘乕儖慜偵傾僋僥傿僽僼僅乕僇僗傪愝掕
//2006/08/28	|SDNA嶳壀		|僉乕僈僀僟儞僗昞帵傪廋惓
//2006/08/28	|SDNA嶳壀		|ProcessGetListItems偺慜偵僷儔儊乕僞僠僃僢僋
//2006/09/02	|SDNA嶳壀		|暋悢慖戰夋柺偱偺僋儕傾僉乕張棟傪廋惓
//2006/09/12	|SDNA壀嶳		|TRK6892懳墳
//2006/09/14	|SDNA彫椦仌壀嶳 |TRK9092懳墳
//2006/09/20	|SDNA壀嶳		|TRK9446懳墳
//2007/05/21	|SEMCJ暯壀		|PTX-824懳墳
//2007/07/12	|SEMCJ暯壀		|FinishProgress()偵傒側偟恑捇僟僀傾儘僌偺僶乕傪廔抂偵堏摦偝偣傞張棟傪捛壛
//2007/08/13	|SEMCJ暯壀		|D_82400007011懳墳
//2007/08/29	|SEMCJ暯壀		|D_82400012340懳墳
//2007/09/11	|SEMCJ暯壀		|D_82400014586, D_82400013891懳墳
//2007/09/17	|SEMCJ暯壀		|D_82400014801懳墳

#include <SkonControl.h>
#include <SkonTextLabel.h>
#include <SkonMusicListBox.h>
#include <SkonMusicTitleBar.h>
#include <SkonVirtualSpaceScreen.h>

#include <SmbPGMusic.h>
#include <SmbPGMusic.hrh>
#include <SmbAfCommandBase.h>
#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbMusicAPMainPlayer.rsg>
#include <SmbMusicAPSyncEngineDef.h>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterListModel.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListFromSearchTop.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListFromSearchCurrentList.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListItems.h"
#include "SmbMusicAPMainPlayerFilterProcessGetThumbnail.h"
#include "SmbMusicAPMainPlayerFilterProcessCreatePlaylist.h"
#include "SmbMusicAPMainPlayerFilterProcessEditPlaylistTitle.h"
//Add-S PTX-824懳墳 暯壀
#include "SmbMusicAPMainPlayerFilterProcessDuplicatePlaylist.h"
//Add-E PTX-824懳墳 暯壀
#include "SmbMusicAPMainPlayerFilterProcessDeleteOne.h"
#include "SmbMusicAPMainPlayerFilterProcessRegisterToPlaylist.h"
#include "SmbMusicAPMainPlayerFilterProcessRemoveItems.h"
#include "SmbMusicAPMainPlayerFilterProcessDeleteItems.h"
#include "SmbMusicAPMainPlayerFilterProcessCommitOrderItems.h"

#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"

SEMCJ_NAMESPACE_BEGIN

// ----------------------------------------------------------------------------
// 儈儏乕僕僢僋僀儊乕僕僼傽僀儖
// ----------------------------------------------------------------------------
_LIT(KSkonMusicMbmFileName, "Z:\\WcdmaMp\\Media\\Image\\Music.mbm" );

// 2006.09.20 儕僗僩庢摼丒墳摎帪娫偺懳墳
const TInt KProcessingIconDelayDelayTime = 2000000;

//////////////////////////////////////////////////////////////////////////////////////
// 僋儔僗偺惗惉偲攋婞
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 僼傿儖僞儕僗僩價儏乕僋儔僗偺惗惉
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				僼傿儖僞儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterListView::NewL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterListView* self = new(ELeave) CSmbMusicAPMainPlayerFilterListView();
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL(aViewUid, aView);
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();// self
	return self;
	}

/**
 * 僐儞僗僩儔僋僞
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				僼傿儖僞儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView::CSmbMusicAPMainPlayerFilterListView()
	: CBase(), iLog(CAfEnv::Static()->Log())
	{
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞
 * 
 * @param aView       [in] FilterView
 * @param aSyncEngine [in] 摨婜僄儞僕儞
 */
void CSmbMusicAPMainPlayerFilterListView::ConstructL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	//2006.10.13
	iAfEnv = CAfEnv::Static();
	// 旕摨婜僾儘僙僗傪弶婜壔偡傞
	iProcessTargetViewUid = KSmbMusicAPMainPlayerInvalidUid;
	iProcessObj = NULL;
	iThumbnailProcessObj = NULL;
	iItemsRequested = EFalse;
	iImageRequested = EFalse;
	iDefaultIndex = -1;

	// 價儏乕庬暿傪愝掕偡傞
	iViewUid = aViewUid;
	// 僼傿儖僞價儏乕傪愝掕偡傞
	iView = aView;
	// 僼傿儖僞儕僗僩儌僨儖傪惗惉偡傞
	iModel = CSmbMusicAPMainPlayerFilterListModel::NewL(this);
	// 攈惗僋儔僗偱儕僗僩儌僨儖偵傾僀僥儉傪捛壛丒愝掕偡傞
	SetupModelL();
	// 僞僀僩儖僶乕丒儕僗僩儃僢僋僗傪惗惉
	ConstructControlL();
	// 攈惗僋儔僗偱僞僀僩儖僶乕丒儕僗僩儃僢僋僗傪弶婜愝掕偡傞
	SetupControlL();

//ADD-S> 2006.10.31 TRK#12267
	SetEditStatus(EEditInit);
//ADD-E<

//ADD-S [D_82400001770]
	iTimer = CLaAfterTimer::NewL(EActivePriorityDefault);
//ADD-E [D_82400001770]
	}

/**
 * 僨僗僩儔僋僞
 * 
 */
CSmbMusicAPMainPlayerFilterListView::~CSmbMusicAPMainPlayerFilterListView()
	{
	// 僞僀僩儖僶乕偲儕僗僩儃僢僋僗偼僐儞僥僫偺嶍彍帪偵嶍彍偝傟傞偺偱偙偙偱偼嶍彍偟側偄
	// 旕摨婜僾儘僙僗傪嶍彍偡傞
	delete iProcessObj;
	delete iThumbnailProcessObj;
	// 儕僗僩儌僨儖傪嶍彍偡傞
	delete iModel;
	// 慖戰崁栚偺嶍彍
	iSelectedItems.iIndexArray = NULL;
	iSelectedIndexArray.Reset();
	iSelectedIndexArray.Close();
//ADD-S [D_82400001770]
	delete iTimer;
//ADD-E [D_82400001770]
	}

/**
 * 儕僗僩儃僢僋僗傪惗惉
 */
void CSmbMusicAPMainPlayerFilterListView::ConstructControlL()
	{
	// 僞僀僩儖僶乕傪惗惉偡傞
	CSkonMusicTitleBar* titlebar = new(ELeave) CSkonMusicTitleBar();
	CleanupStack::PushL(titlebar);
	titlebar->SetContainerWindowL(*View());
	// 儊僀儞塼徎梡僞僀僩儖僶乕
	titlebar->ConstructL(CSkonMusicTitleBar::EDisplayModeLarge);
	// 僞僀僩儖僶乕偵僆僽僓乕僶傪搊榐偡傞
	// 仸僆僽僓乕僶搊榐偑昁梫丠
	titlebar->SetObserver(View());
	// 僞僀僩儖僶乕偺嵗昗傪愝掕偡傞
	titlebar->SetExtent(TPoint(0,0), TitleBarSize(titlebar));
	CleanupStack::Pop(titlebar);
	iTitleBar = titlebar;
	// 僞僀僩儖傪愝掕偡傞
//	iTitleBar->SetTitleTextL(Model()->TitleL());
	
	// 儕僗僩儃僢僋僗傪惗惉偡傞
	CSkonMusicListBox* listbox = new(ELeave) CSkonMusicListBox();
	CleanupStack::PushL(listbox);
	// 儕僗僩儃僢僋僗偵FilterView傪愝掕偡傞
	listbox->SetContainerWindowL(*View());
	// 儊僀儞塼徎梡儕僗僩儃僢僋僗
	listbox->ConstructL(View(), Model(), CSkonMusicListBox::EDisplayModeLarge);
	// 儕僗僩儃僢僋僗偺嵗昗傪愝掕偡傞
	//2006.09.28 TRK#10256
	TSize listSize = listbox->MinimumSize();
//	listSize.iWidth--;
	listbox->SetExtent(TPoint(0,TitleBarHeight()+1), listSize);
	// 2006.09.20 儕僗僩庢摼丒墳摎帪娫偺懳墳
	// 張棟拞傾僀僐儞偺抶墑傪愝掕偡傞
	listbox->SetProcessingIconDelay(KProcessingIconDelayDelayTime);
	
	// 儕僗僩儃僢僋僗偵僆僽僓乕僶傪搊榐偡傞
	listbox->SetObserver(this);
	
	// 儕僗僩儃僢僋僗偺恊僉乕僈僀僟儞僗傪愝掕偡傞
	CSakKeyGuidance* keyGuidance = static_cast<CSkonKeyGuidance*>(View()->KeyGuidance());
//	CSakKeyGuidance* keyGuidance = STATIC_CAST(CSkonKeyGuidance*, View()->KeyGuidance());
	if(NULL!=keyGuidance)
		{
		// 儕僗僩儃僢僋僗偺僉乕僈僀僟儞僗傪愝掕偡傞
//	    listbox->KeyGuidance()->SetArrowStateProvider(View());
		// 價儏乕偺僉乕僈僀僟儞僗傪恊僉乕僈僀僟儞僗偵愝掕偡傞
		listbox->KeyGuidance()->SetParentKeyGuidance(keyGuidance);
		// 恊僉乕僈僀僟儞僗偑僐儞僩儘乕儖偡傞曽岦僉乕傪巜帵偡傞
		listbox->KeyGuidance()->SetParentArrowMask(ESkonKeyGuidanceArrowLeft|ESkonKeyGuidanceArrowRight);
		}
		
	CleanupStack::Pop(listbox);
	iListBox = listbox;

	// 償傽乕僠儍儖僗儁乕僗偵僐儞僩儘乕儖傪捛壛偡傞
	View()->AddTitleBarL(iTitleBar, DefaultPoint());
	View()->AddListBoxL(iListBox, DefaultPoint());
	}

//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 儕僗僩儌僨儖傪弶婜愝掕偡傞
 */
void CSmbMusicAPMainPlayerFilterListView::SetupModelL()
	{
	// 婎掙僋儔僗偱偼壗傕偟側偄
	// 攈惗僋儔僗偱儕僗僩儌僨儖偵傾僀僥儉傪捛壛丒愝掕偡傞
	}
	
/**
 * 僐儞僩儘乕儖乮僞僀僩儖僶乕丒儕僗僩儃僢僋僗乯傪弶婜愝掕偡傞
 */
void CSmbMusicAPMainPlayerFilterListView::SetupControlL()
	{
	// 婎掙僋儔僗偱偼壗傕偟側偄
	// 攈惗僋儔僗偱僞僀僩儖傗儕僗僩儃僢僋僗傪弶婜愝掕偡傞
	}

/**
 * 僉乕僈僀僟儞僗傪弶婜愝掕偡傞
 *
 * @param	aKeyGuidance	僉乕僈僀僟儞僗
 */
void CSmbMusicAPMainPlayerFilterListView::SetupKeyGuidanceL(CSakKeyGuidance* aKeyGuidance)
	{
	// 僉乕僈僀僟儞僗傪僠僃僢僋偡傞
	if(NULL==aKeyGuidance)
		{
		return;
		}
	
	// 慖戰僉乕忣曬傪庢摼偡傞
	SetKeyGuidanceInfoL(ESkonKeyGuidanceSelectKey, aKeyGuidance);
	// 僜僼僩侾僉乕忣曬傪庢摼偡傞
	SetKeyGuidanceInfoL(ESkonKeyGuidanceSoftKeyLeft, aKeyGuidance);
	// 僜僼僩俀僉乕忣曬傪庢摼偡傞
	SetKeyGuidanceInfoL(ESkonKeyGuidanceSoftKeyRight, aKeyGuidance);
	}

/**
 * 僉乕僈僀僟儞僗忣曬傪愝掕偡傞
 *
 * @param	aKey			僉乕ID
 * @param	aKeyGuidance	僉乕僈僀僟儞僗
 */
void CSmbMusicAPMainPlayerFilterListView::SetKeyGuidanceInfoL(TSkonKeyGuidanceKeyIds aKey, CSakKeyGuidance* aKeyGuidance)
	{
	TBool visible = EFalse;
	TInt titleResId = 0;
	TInt commandId = 0;
	
	// 慖戰僉乕忣曬傪庢摼偡傞
	if(EFalse!=KeyGuidanceInfo(aKey, visible, titleResId, commandId))
		{
		aKeyGuidance->MakeVisibleKey(aKey, visible);
	    // 僉乕僈僀僟儞僗昞帵偺曄峏
	    if(0<titleResId)
			{
			HBufC* title;
			// 昞帵暥帤楍偺撉傒崬傒
			title = CEikonEnv::Static()->AllocReadResourceL(titleResId);
			// 僉乕僈僀僟儞僗偺昞帵暥帤楍偺曄峏
			aKeyGuidance->SetKeyInfoL(aKey, title->Des(), 0, 0, commandId);
			// 椞堟偺奐曻
			delete title;
			}
		else
			{
			// 嬻偺僞僀僩儖傪愝掕偡傞
			_LIT(KEmptyTitle, "");
			// 僉乕僈僀僟儞僗忣曬偺曄峏
			aKeyGuidance->SetKeyInfoL(aKey, KEmptyTitle, 0, 0, commandId);
			}
		}
	}
	
/**
 * 儕僜乕僗偐傜弶婜傾僀僥儉傪撉傒崬傓
 *
 * @param	aItemResID			儕僜乕僗ID
 */
void CSmbMusicAPMainPlayerFilterListView::ReadItemsFromResourceL(TInt aItemResID)
	{
	// 儕僜乕僗偐傜儊僯儏乕傾僀僥儉傪撉傒崬傓	
	// 儕僜乕僗儕乕僟傪惗惉偟偰僋儕乕儞僫僢僾僗僞僢僋丗PushL(itemResourceReader)
    TResourceReader itemResourceReader;
    CEikonEnv::Static()->CreateResourceReaderLC(itemResourceReader, aItemResID);
    // 傾僀僥儉悢傪撉傒崬傓
    TInt number = itemResourceReader.ReadInt16();	// number of items
    for (TInt index = 0; index < number; ++index)
        {
        // 傾僀僥儉傪撉傒崬傫偱儌僨儖偵捛壛偡傞
		CSmbMusicAPMainPlayerFilterListItem* item = CSmbMusicAPMainPlayerFilterListItem::NewL(0, 0, this);
		CleanupStack::PushL(item);
		// 傾僀僐儞傪撉傒崬傫偱愝掕偡傞
		CFbsBitmap* bmp = new(ELeave) CFbsBitmap();
		TInt iconID = itemResourceReader.ReadInt16();			// icon id
		if(0!=iconID)
			{
			CleanupStack::PushL(bmp);
			User::LeaveIfError(bmp->Load(KSkonMusicMbmFileName, iconID));
			item->SetImage(MSkonMusicListBoxItem::EImageIcon, CGulIcon::NewL(bmp, NULL));
			CleanupStack::Pop();	// bmp
			}
		else
			{
			delete bmp;
			bmp = NULL;				// 2007.04捛壛
			}
		// 僐儅儞僪ID傪撉傒崬傫偱愝掕偡傞
		TInt commandID = itemResourceReader.ReadInt16();		// command id
		item->SetCommandID(commandID);
		// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
		item->SetTextL(MSkonMusicListBoxItem::ETextMain, itemResourceReader.ReadTPtrC());	// title
		item->SetIndex(index);
		TBool disableFlag = (itemResourceReader.ReadInt8() != 0);	// disable
		item->SetIsDisabled(disableFlag);
		CleanupStack::Pop();	// item
		// 傾僀僥儉攝楍偵撉傒崬傫偩傾僀僥儉傪捛壛偡傞
		Model()->Append(item);
        }
    // 僋儕乕儞傾僢僾僗僞僢僋傪奐曻偡傞(itemResourceReader)
	CleanupStack::PopAndDestroy();
	}

/**
 * 弶婜埵抲傪庢摼偡傞
 *
 * @return	弶婜埵抲偺嵗昗
 */
TPoint CSmbMusicAPMainPlayerFilterListView::DefaultPoint() const
	{
	return TPoint(EDefaultPosition,KSmbLayout_BASE_Y);
	}
	
/**
 * 僞僀僩儖僶乕偺崅偝傪庢摼偡傞
 *
 * @return	僞僀僩儖僶乕偺崅偝
 */
TInt CSmbMusicAPMainPlayerFilterListView::TitleBarHeight() const
	{
	return ETitleBarHeight;
	}
	
/**
 * 僞僀僩儖僶乕偺僒僀僘傪庢摼偡傞
 *
 * @return	僞僀僩儖僶乕偺僒僀僘
 */
TSize CSmbMusicAPMainPlayerFilterListView::TitleBarSize(CSkonMusicTitleBar* aTitlebar)
	{

⌨️ 快捷键说明

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