smbmusicapmainplayerfilterlistviewplaylistselect.cpp

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

CPP
676
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListViewPlaylistSelect.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListViewPlaylistSelect class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     	|撪梕
//--------------+---------------+----------------------------------------------
//2006/08/16	|SDNA嶳壀		| 怴婯嶌惉
//2006/09/03	|SDNA嶳壀		| 僾儗僀儕僗僩搊榐拞巭偺廋惓
//2006/09/04	|SDNA壀嶳		| 僾儗僀儕僗僩搊榐拞巭偺廋惓(嵞廋惓)
//2006/09/14	|SDNA彫椦仌壀嶳 |TRK9092懳墳

#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbAfWording.loc>
#include <Music.mbg>
#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterListViewPlaylistSelect.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListFromSearchTop.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListFromSearchCurrentList.h"
#include "SmbMusicAPMainPlayerFilterProcessCreatePlaylist.h"
#include "SmbMusicAPMainPlayerFilterProcessRegisterToPlaylist.h"
#include "SmbMusicAPMainPlayerPLSelectView.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"

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

SEMCJ_NAMESPACE_BEGIN

/**
 * 僾儗僀儕僗僩慖戰僋儔僗
 *	KSmbMusicAPMainPlayerPLListViewUid
 */

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

/**
 * 僐儞僗僩儔僋僞
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				僾儗僀儕僗僩堦棗僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::CSmbMusicAPMainPlayerFilterListViewPlaylistSelect()
	{
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞
 * @param aView       [in] FilterView
 * @param aSyncEngine [in] 摨婜僄儞僕儞
 * 
 */
void CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::ConstructL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僞僀僩儖僶乕丄儕僗僩儃僢僋僗傪惗惉偡傞
	CSmbMusicAPMainPlayerFilterListView::ConstructL(aViewUid, aView);
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::~CSmbMusicAPMainPlayerFilterListViewPlaylistSelect()
	{
	}

//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::SetupModelL()
	{
	}

void CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::SetupControlL()
	{
	// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
	SetTitleTextL(R_SMB_AF_STR_WRD2806);
	}

////////////////////////////////////////////////////////////////////////////
// 僼傿儖僞儕僗僩儌僨儖僀儀儞僩
////////////////////////////////////////////////////////////////////////////
TBool CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::HasParentList()
	{
	return EFalse;
	}

TBool CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::HasChildList()
	{
	return EFalse;
	}

////////////////////////////////////////////////////////////////////////////
// 僐儅儞僪幚峴
////////////////////////////////////////////////////////////////////////////
// from MSmbAfCommandBase
/**
 * 儐乕僓僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::HandleCommandL(TInt aCommandId)
	{
	// 婎杮僐儅儞僪
	switch(aCommandId)
		{
		case ECmdFilterViewSelectPlaylistComplete:
		case EMainPlayerFilterViewKGCmdSelect:			// 崁栚慖戰僐儅儞僪乮抁墴偟乯
			{
			if(0==ItemCount())
				{
				return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
				}
			// 儕僗僩僴儞僪儖庢摼偡傞
			return ProcessCommandL(ECmdFilterViewSelectPlaylistComplete);
			}
		case ECmdFilterViewSelectPlaylistCancel:
		case EMainPlayerFilterViewKGCmdClear:			// 僋儕傾乮慜夋柺乯僐儅儞僪
			{
			if(NULL!=ProcessObj()
			&& CSmbMusicAPMainPlayerFilterProcess::EProcessTypeRegisterToPlaylist==ProcessObj()->GetProcessType())
				{
				return ProcessCommandL(ECmdFilterViewRegisterToPlaylistCancel);
				}
			else
				{
				return ProcessCommandL(ECmdFilterViewSelectPlaylistCancel);
				}
			}
		case EMainPlayerFilterViewKGCmdCreate:			// 亂怴婯亃
		case ECmdFilterViewCreatePlaylist:				// 僾儗僀儕僗僩嶌惉
			{
			return ProcessCommandL(ECmdFilterViewCreatePlaylist);
			}
		case EMainPlayerFilterViewKGCmdLongPlay:		// 亂嵞惗亃	
		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case EMainPlayerFilterViewKGCmdChildView:		// 巕奒憌夋柺慗堏僐儅儞僪
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case EMainPlayerFilterViewKGCmdParentView:		// 恊奒憌夋柺慗堏僐儅儞僪
			break;
		}
	return CSmbMusicAPMainPlayerFilterListView::HandleCommandL(aCommandId);
	}

/**
 * 僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::ProcessCommandL(TInt aCommandId)
	{
	CSmbMusicAPMainPlayerPLSelectView* view = static_cast<CSmbMusicAPMainPlayerPLSelectView*>(View());
//	CSmbMusicAPMainPlayerPLSelectView* view = STATIC_CAST(CSmbMusicAPMainPlayerPLSelectView*, View());
	// 僾儗僀儕僗僩堦棗僐儅儞僪
	switch(aCommandId)
		{
		case ECmdFilterViewSelectPlaylistComplete:
			{
			// 搊榐愭僾儗僀儕僗僩偺僴儞僪儖丄傾僀僥儉僀儞僨僢僋僗傪曐帩偡傞
			view->SetTargetItem(ListHandle(), CurrentItemIndex());
			// 僾儗僀儕僗僩搊榐曽朄乮忋彂偒/捛壛乯傪慖戰
			HandleDialogCommandL(EShowSelectionModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTERMODE_SELECTION);
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case ECmdFilterViewSelectPlaylistCancel:
			{
			// 慖戰搊榐偺応崌
			if(1<View()->ViewModel()->FilterPathCount())	// 夋柺悢偑俀夋柺偁傞応崌
				{
				// 暋悢慖戰夋柺乮嬋堦棗乯傪傾僋僥傿僽偵偡傞
				View()->ViewModel()->SetActiveParentView();
				// 暋悢慖戰夋柺乮嬋堦棗乯傪昞帵偡傞
				View()->JumpToPrevScreen();
				}
			// 侾審/慡審搊榐偺応崌
			else
				{
				// 慖戰儌乕僪傪夝彍偟偰丄屇傃弌偟尦偵栠傞
				view->DeleteSelectedItems();
				view->HandleReturnViewL();
				}
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case ECmdFilterViewInsertItemsToPlaylist:
			{
			// 僾儗僀儕僗僩捛壛搊榐僐儅儞僪傪幚峴偡傞
			TSmbMusicAPMainPlayerFilterListItems selectedItems;
			view->SelectedItems(selectedItems);
			ResetProgress();
			ProcessRegisterToPlaylist(ECmdFilterViewInsertItemsToPlaylist, selectedItems.iAllItem, selectedItems.iListHandle, selectedItems.iCount, selectedItems.iIndexArray, 0);
			}
			break;
		case ECmdFilterViewOverWritePlaylist:
			{
			// 僾儗僀儕僗僩忋彂偒搊榐僐儅儞僪傪幚峴偡傞
			TSmbMusicAPMainPlayerFilterListItems selectedItems;
			view->SelectedItems(selectedItems);
			ResetProgress();
			ProcessRegisterToPlaylist(ECmdFilterViewOverWritePlaylist, selectedItems.iAllItem, selectedItems.iListHandle, selectedItems.iCount, selectedItems.iIndexArray, -1);
			}
			break;
			
		case ECmdFilterViewRegisterToPlaylistComplete:
			break;
		case ECmdFilterViewRegisterToPlaylistCancel:
			// 僾儘僌儗僗僟僀傾儘僌傪徚嫀偡傞
			FinishProgress();
			HandleDialogCommandL(ECloseModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_PROGRESS);
			CancelProcess(CSmbMusicAPMainPlayerFilterProcess::EProcessTypeRegisterToPlaylist);	// 幚峴拞偺旕摨婜僾儘僙僗傪拞抐偡傞
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
			
		case ECmdFilterViewShowOriginalPlaylistForInsert:	// 僆儕僕僫儖僾儗僀儕僗僩乮搊榐梡乯
		case ECmdFilterViewCreatePlaylist:					// 僾儗僀儕僗僩嶌惉
			{
			CSmbMusicAPMainPlayerFilterListViewPlaylist::ProcessCommandL(aCommandId);
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;

		default:
			break;
		}
	return MSmbAfCommandBase::ESmbAfCmdIdWasNotConsumed;
	}

//////////////////////////////////////////////////////////////////////////////////////
// 旕摨婜僾儘僙僗
//////////////////////////////////////////////////////////////////////////////////////
// from MSmbMusicAPMainPlayerFilterProcessObserver
void CSmbMusicAPMainPlayerFilterListViewPlaylistSelect::ProcessComplete(TInt aResult, CSmbMusicAPMainPlayerFilterProcess& aProcess)
	{
	if( NULL!=ProcessObj() && &aProcess==ProcessObj())
		{
		// 幚峴拞偺僐儅儞僪傪僠僃僢僋偡傞
		switch(aProcess.GetRequestOwnerInfo())
			{
			case ECmdFilterViewInsertItemsToPlaylist:		// 僾儗僀儕僗僩捛壛搊榐僐儅儞僪
			case ECmdFilterViewOverWritePlaylist:			// 僾儗僀儕僗僩忋彂偒搊榐僐儅儞僪
				{
				CSmbMusicAPMainPlayerFilterProcessRegisterToPlaylist* processObj = static_cast<CSmbMusicAPMainPlayerFilterProcessRegisterToPlaylist*>(&aProcess);
//				CSmbMusicAPMainPlayerFilterProcessRegisterToPlaylist* processObj = STATIC_CAST(CSmbMusicAPMainPlayerFilterProcessRegisterToPlaylist*,&aProcess);

				// 僾儘僌儗僗僟僀傾儘僌傪徚嫀偡傞
				FinishProgress();
				//2006.10.14 TRK#11387
//				HandleDialogCommandL(ECloseModelessDialog, R_MUSIC_MAINPLAYER_PLAYLIST_REGISTER_PROGRESS);
				if(R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_PROGRESS==iLocalDlogResId
				|| R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_PROGRESS_SINGULAR==iLocalDlogResId)
					{
					HandleDialogCommandL(ECloseModelessDialog, iLocalDlogResId);
					}
				switch(aResult)
					{
					case KErrNone:
						{
						// 搊榐姰椆僟僀傾儘僌傪昞帵偡傞
						HandleDialogCommandL(EShowConfirmModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_COMPLETE_CONFIRM);
						}
						break;
					case KErrOverflow:
						{
						// 壜擻搊榐嬋悢挻夁僟僀傾儘僌傪昞帵偡傞
						TInt count=	processObj->GetResultCount();
// Change-S PTX-824 (TRK-569懳墳) 暯壀
//						HandleFormatDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_LIMITOVER_WARNING, R_SMB_AF_STR_MSG1913, count);
						if (0 == count) 
							{
							// 乽搊榐悢偑偄偭傁偄偱偡乿
							HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_LIMITOVER_NOREGIST_WARNING);
							}
						else
							{
							// 乽搊榐悢偑偄偭傁偄偱偡{nn}審搊榐偟傑偟偨乿
							HandleFormatDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_LIMITOVER_WARNING, R_SMB_AF_STR_MSG1913, count);
							}
// Change-E PTX-824 (TRK-569懳墳) 暯壀
						}
						break;
					case KErrCancel:
						{
						TInt count=	processObj->GetResultCount();
						if(0==count)
							{
							// 憖嶌拞巭僟僀傾儘僌傪昞帵偡傞
							HandleDialogCommandL(EShowConfirmModelessDialog, R_DL_MUSIC_MAIN_FLT_OPERATION_CANCEL_CONFIRM);
							}
						else
							{
							// 搊榐拞巭僟僀傾儘僌乽拞巭偟傑偟偨{NNNN}審搊榐偟傑偟偨乿
							HandleFormatDialogCommandL(EShowConfirmModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_CANCEL_CONFIRM, R_SMB_AF_STR_MSG1909, count);
							}
						}
						break;
					case KErrGeneral:
						{
						// 搊榐幐攕僟僀傾儘僌乽搊榐偱偒側偄僼傽僀儖偑偁傝傑偡{NNNN}審搊榐偟傑偟偨
						TInt count=	processObj->GetResultCount();
						HandleFormatDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_DISABLED_WARNING, R_SMB_AF_STR_MSG1912, count);
						}
						break;
					default:
						{
						// 搊榐幐攕僟僀傾儘僌傪昞帵偡傞
						HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_REGISTER_FAILED_WARNING);
						}
						break;
					}

⌨️ 快捷键说明

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