smbmusicapmainplayerfilterlistviewsong.cpp
来自「symbian」· C++ 代码 · 共 1,234 行 · 第 1/3 页
CPP
1,234 行
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPMainPlayerFilterListViewSong.cpp
//
// Description:
// CSmbMusicAPMainPlayerFilterListViewSong class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/16 |SDNA嶳壀 |怴婯嶌惉
//2006/09/12 |SDNA壀嶳 |TRK6892懳墳
//2006/09/12 |SDNA彫椦 |TRK8696懳墳
//2007/05/18 |SEMCJ暯壀 |PTX-824(TRK-712)懳墳
//2007/06/27 |SEMCJ暯壀 |僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
//2007/07/24 |SEMCJ暯壀 |D_82400007625懳墳
//2007/07/25 |SEMCJ暯壀 |D_82400006405, D_82400004469懳墳
//2007/08/29 |SEMCJ暯壀 |D_82400010412懳墳
//2007/09/11 |SEMCJ暯壀 |D_82400013891懳墳
#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbAfWording.loc>
#include <Music.mbg>
#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include <SmbMusicAPSongInfoExternalInterface.h>
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterListViewSong.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"
#include "SmbMusicAPMainPlayerFilterProcessDeleteOne.h"
#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"
SEMCJ_NAMESPACE_BEGIN
/**
* 嬋堦棗儕僗僩僋儔僗
* KSmbMusicAPMainPlayerSongListViewUid
*/
//////////////////////////////////////////////////////////////////////////////////////
// 僋儔僗偺惗惉偲攋婞
//////////////////////////////////////////////////////////////////////////////////////
/**
* 嬋堦棗僋儔僗偺惗惉
*
* @param aView [in] 僼傿儖僞價儏乕
* @return 嬋堦棗儕僗僩僋儔僗
*/
CSmbMusicAPMainPlayerFilterListViewSong* CSmbMusicAPMainPlayerFilterListViewSong::NewL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
{
// 僀儞僗僞儞僗惗惉
CSmbMusicAPMainPlayerFilterListViewSong* self = new(ELeave) CSmbMusicAPMainPlayerFilterListViewSong();
// 僋儕乕儞傾僢僾僗僞僢僋妋曐
CleanupStack::PushL(self);
// 僙僇儞僪僐儞僗僩儔僋僞
self->ConstructL(aViewUid, aView);
// 僋儕乕儞傾僢僾僗僞僢僋奐曻
CleanupStack::Pop();// self
return self;
}
/**
* 僐儞僗僩儔僋僞
*
* @param aView [in] 僼傿儖僞價儏乕
* @return 嬋堦棗儕僗僩僋儔僗
*/
CSmbMusicAPMainPlayerFilterListViewSong::CSmbMusicAPMainPlayerFilterListViewSong()
: iLog(CAfEnv::Static()->Log())
{
}
/**
* 僙僇儞僪僐儞僗僩儔僋僞
* @param aView [in] FilterView
* @param aSyncEngine [in] 摨婜僄儞僕儞
*
*/
void CSmbMusicAPMainPlayerFilterListViewSong::ConstructL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
{
// 僞僀僩儖僶乕丄儕僗僩儃僢僋僗傪惗惉偡傞
CSmbMusicAPMainPlayerFilterListView::ConstructL(aViewUid, aView);
// 儕僗僩儃僢僋僗僞僀僾偺弶婜抣傪庢摼偡傞
iViewStyle = SmbPGMusic::ListViewStyleL(View()->PropAgent());
// 儕僗僩儃僢僋僗僞僀僾傪愝掕偡傞
ListBox()->SetListBoxFormat(ListBoxFormat());
// 儕僗僩儃僢僋僗僆儁儗乕僔儑儞儌乕僪傪愝掕偡傞
ListBox()->SetOperationMode(CSkonRichListBoxBase::EOperationNormal);
}
/**
* 僨僗僩儔僋僞
*/
CSmbMusicAPMainPlayerFilterListViewSong::~CSmbMusicAPMainPlayerFilterListViewSong()
{
}
//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListViewSong::SetupModelL()
{
}
void CSmbMusicAPMainPlayerFilterListViewSong::SetupControlL()
{
// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
SetTitleTextL(R_OT_MUSIC_MAIN_FLT_SONGLIST_TITLE);
}
////////////////////////////////////////////////////////////////////////////
// 僼傿儖僞儕僗僩儌僨儖僀儀儞僩
////////////////////////////////////////////////////////////////////////////
TBool CSmbMusicAPMainPlayerFilterListViewSong::HasParentList()
{
// 恊奒憌偼偁傞
return ETrue;
}
TBool CSmbMusicAPMainPlayerFilterListViewSong::HasChildList()
{
// 巕奒憌偼側偄
return EFalse;
}
////////////////////////////////////////////////////////////////////////////
// 僐儅儞僪幚峴
////////////////////////////////////////////////////////////////////////////
// from MSmbAfCommandBase
/**
* 儐乕僓僐儅儞僪幚峴
*
* @param aCommandId [in] 僐儅儞僪ID
*/
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewSong::HandleCommandL(TInt aCommandId)
{
// 婎杮僐儅儞僪
switch(aCommandId)
{
case EMainPlayerFilterViewKGCmdSelect: // 崁栚慖戰僐儅儞僪乮抁墴偟乯
case EMainPlayerFilterViewKGCmdPlay: // 亂嵞惗亃
// Add-S PTX-824懳墳 2007.06.22 暯壀
case EMainPlayerFilterViewKGCmdLongSelect: // 崁栚慖戰僐儅儞僪乮挿墴偟乯
// Add-E PTX-824懳墳 2007.06.22 暯壀
return ProcessCommandL(EMainPlayerFilterViewKGCmdPlay);
case ECmdFilterViewChangeListMode: // 僕儍働僢僩昞帵愗懼
case ECmdFilterViewShowDetailInfomation: // 徻嵶忣曬昞帵
case ECmdFilterViewShowJacketImage: // 夋憸昞帵
case ECmdFilterViewShowLyricImage: // 壧帉昞帵
case ECmdFilterViewDeleteSong: //堦嬋嶍彍
case ECmdFilterViewAddEntryOne:
case ECmdFilterViewAddEntryMultiple:
case ECmdFilterViewAddEntryAll:
{
ProcessCommandL(aCommandId);
break;
}
case EMainPlayerFilterViewKGCmdChildView: // 巕奒憌夋柺慗堏僐儅儞僪
return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
// Del-S PTX-824懳墳 2007.06.22 暯壀
// case EMainPlayerFilterViewKGCmdLongSelect: // 崁栚慖戰僐儅儞僪乮挿墴偟乯
// break;
// Del-E PTX-824懳墳 2007.06.22 暯壀
case EMainPlayerFilterViewKGCmdClear: // 僋儕傾乮慜夋柺乯僐儅儞僪
break;
case EMainPlayerFilterViewKGCmdParentView: // 恊奒憌夋柺慗堏僐儅儞僪
break;
}
return CSmbMusicAPMainPlayerFilterListView::HandleCommandL(aCommandId);
}
/**
* 僐儅儞僪幚峴
*
* @param aCommandId [in] 僐儅儞僪ID
*/
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewSong::ProcessCommandL(TInt aCommandId)
{
//2006.09.28 僉乕楢懪帪偺懳墳
if(NULL!=ProcessObj() && ProcessObj()->InService())
{
return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
}
//
// 嬋堦棗僐儅儞僪
//
switch(aCommandId)
{
case EMainPlayerFilterViewKGCmdPlay: // 嬋堦棗儕僗僩嵞惗
{
// 嵞惗晄壜偐偳偆偐傪僠僃僢僋偡傞
CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
if(NULL!=item && EFalse==item->IsDisabled())
{
// Del-S PTX-824(TRK-712)懳墳丂暯壀
// // 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
// SetDefaultIndex(CurrentItemIndex());
// ListBox()->SetDefaultItemIndex(CurrentItemIndex());
// Del-E PTX-824(TRK-712)懳墳丂暯壀
//ListBox()->SetDefaultItemEmphasis(ETrue);
TSmbMusicAPMainPlayerPrmPlayList param;
param.iListHandle = ListHandle();
param.iCount = ItemCount();
param.iIndex = CurrentItemIndex();
param.iShuffle = EFalse;
param.iListType = SongListType();
// 嵞惗奐巒偡傞
// Mod-S PTX-824(TRK-712)懳墳丂暯壀
// View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param);
if (EFalse != View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param))
{
// 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
SetDefaultIndex(CurrentItemIndex());
ListBox()->SetDefaultItemIndex(CurrentItemIndex());
}
// Mod-E PTX-824(TRK-712)懳墳丂暯壀
}
// Add-S PTX-824 暯壀丂2007.06.27 僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
// 僆僼儔僀儞嬋/UIM惂尷嬋偱側偄丄僒僽僗僋儕僾僔儑儞嬋偱婜尷愗傟/CP忣曬側偟嬋偼僉乕僈僀僟儞僗偵乽嵞惗乿傪昞帵
// Mod-S PTX-824 D_82400007625懳墳丂暯壀
// else if (NULL != item && (item->IsDisabled() & ESmbMusicAPSyncEngineUIMLimit)
// && (item->IsDisabled() & ESmbMusicAPSyncEngineOffLine))
else if (NULL != item && ((item->IsDisabled() & ESmbMusicAPSyncEngineUIMLimit)
|| (item->IsDisabled() & ESmbMusicAPSyncEngineOffLine)))
// Mod-E PTX-824 D_82400007625懳墳丂暯壀
{
// 壗傕昞帵偟側偄
}
else if (NULL != item && ESmbMusicAPSyncEngineLimitSubscription == item->Limitation()
&& ((item->IsDisabled() & ESmbMusicAPSyncEngineNoCpInfo)
|| (item->IsDisabled() & ESmbMusicAPSyncEngineOverTimeLimit)))
{
TSmbMusicAPMainPlayerPrmPlayList param;
param.iListHandle = ListHandle();
param.iCount = ItemCount();
param.iIndex = CurrentItemIndex();
param.iShuffle = EFalse;
param.iListType = SongListType();
// 嵞惗奐巒偡傞
if (EFalse != View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param))
{
// 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
SetDefaultIndex(CurrentItemIndex());
ListBox()->SetDefaultItemIndex(CurrentItemIndex());
}
}
// Add-E PTX-824 暯壀丂2007.06.27
}
return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
case ECmdFilterViewChangeListMode: // 僕儍働僢僩昞帵愗懼
{
ProcessToggleViewFormatL();
break;
}
case ECmdFilterViewShowDetailInfomation: // 徻嵶忣曬昞帵
{
ProcessShowDetailInformationL();
break;
}
case ECmdFilterViewShowJacketImage: // 夋憸昞帵
case ECmdFilterViewShowLyricImage: // 壧帉昞帵
{
ProcessShowImageViewL(aCommandId);
break;
}
case ECmdFilterViewDeleteSong: //堦嬋嶍彍
{
//2006.10.18 TRK#11638
View()->StartProcessesWithHoldApp();
ProcessDeleteOne(aCommandId, CurrentItemIndex(), ESmbMusicAPMainPlayerDelSongStd);
break;
}
case ECmdFilterViewAddEntryOne:
case ECmdFilterViewAddEntryMultiple:
case ECmdFilterViewAddEntryAll:
{
// 婲摦僷儔儊乕僞嶌惉
TSmbMusicAPMainPlayerPrmRegister param;
param.iKind = ESmbMusicAPMainPlayerRegiterEntryKind;
if(ECmdFilterViewAddEntryOne==aCommandId)
{
param.iType = ESmbMusicAPMainPlayerSelectionOne;
}
else if(ECmdFilterViewAddEntryMultiple==aCommandId)
{
param.iType = ESmbMusicAPMainPlayerSelectionMultiple;
}
else if(ECmdFilterViewAddEntryAll==aCommandId)
{
param.iType = ESmbMusicAPMainPlayerSelectionAll;
}
param.iListHandle = ListHandle();
param.iIndex = CurrentItemIndex();
param.vparam.SetReturnView(*View());
TPckgBuf<TSmbMusicAPMainPlayerPrmRegister> parambuf(param);
// 僾儗僀儕僗僩慖戰傊愗懼偊傞丅
View()->ChangeViewL(ESmbMusicAPMainPlayerPLSelectViewId, KSmbMusicAPMainPlayerRegisterMsgUid, parambuf);
}
default:
break;
}
return MSmbAfCommandBase::ESmbAfCmdIdWasNotConsumed;
}
/**
* 儕僗僩昞帵愗傝懼偊僐儅儞僪
*/
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessToggleViewFormatL()
{
// 堦峴昞帵儌乕僪偱偁傟偽僒儉僱僀儖昞帵儌乕僪偵愗傝懼偊傞
if(CSkonMusicListBox::EFormatNormal==ListBox()->ListBoxFormat())
{
SetListBoxFormat(CSkonMusicListBox::EFormatThumbnail);
}
// 僒儉僱僀儖昞帵儌乕僪偱偁傟偽堦峴昞帵儌乕僪偵愗傝懼偊傞
else
{
SetListBoxFormat(CSkonMusicListBox::EFormatNormal);
}
// 夋柺傪嵞昤夋偡傞
HandleControlStatusUpdatedL();
// 儌乕僪傪愗傝懼偊偨応崌偵丄懌傝側偄傾僀僥儉傪曗廩偡傞丅
ProcessLoadListItems(ECmdFilterViewGetListItems);
}
/**
* 徻嵶忣曬昞帵僐儅儞僪
*/
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessShowDetailInformationL()
{
// 傾僋僥傿僽側價儏乕偺儌僨儖傪庢摼偡傞
if(0<ItemCount()) // 儕僗僩偵傾僀僥儉偑偁傞応崌
{
TSmbMusicAPSongInfoStartParam param;
param.SetReturnView(*View());
param.iSongID = View()->SyncModel().GetSongID(ListHandle(), CurrentItemIndex());// 徻嵶忣曬昞帵傪峴偆嬋ID
// Mod-S PTX-824懳墳丂暯壀
// param.iEditSelect = ETrue; // 曇廤壜斲傪愝掕偡傞
param.iEditSelect = EFalse; // 儊僀儞僾儗僀儎乕偐傜偼曇廤晄壜
// Mod-E PTX-824懳墳丂暯壀
param.iWebToSelect = ETrue; // WebTo壜斲傪愝掕偡傞
TSmbMusicAPSongInfoStartParamBuf paramBuf(param);
View()->StartChildAppL(KSmbMusicAPSongInfoUid, KSmbMusicAPSongInfoDetailViewUid, KSmbMusicAPSongInfoStartUid, paramBuf);
}
}
/**
* 夋憸昞帵僐儅儞僪
*/
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessShowImageViewL(TInt aCommandId)
{
if(0<ItemCount()) // 儕僗僩偵傾僀僥儉偑偁傞応崌
{
// 婲摦僷儔儊乕僞嶌惉
TSmbMusicAPMainPlayerPrmImageDisp param;
param.iListHandle = ListHandle();
param.iIndex = CurrentItemIndex();
param.kind = ECmdFilterViewShowJacketImage==aCommandId ? ESmbMusicAPMainPlayerImageKindJacket : ESmbMusicAPMainPlayerImageKindSongWords;
param.vparam.SetReturnView(*View());
TPckgBuf<TSmbMusicAPMainPlayerPrmImageDisp> parambuf(param);
// 夋憸昞帵價儏乕傊愗懼偊傞丅
View()->ChangeViewL(ESmbMusicAPMainPlayerImageViewId, KSmbMusicAPMainPlayerChangeViewMsgUid, parambuf);
}
}
//////////////////////////////////////////////////////////////////////////////////////
// 旕摨婜僾儘僙僗
//////////////////////////////////////////////////////////////////////////////////////
// from MSmbMusicAPMainPlayerFilterProcessObserver
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessComplete(TInt aResult, CSmbMusicAPMainPlayerFilterProcess& aProcess)
{
if( NULL!=ProcessObj() && &aProcess==ProcessObj() &&
CSmbMusicAPMainPlayerFilterProcess::EProcessTypeDeleteOne == aProcess.GetProcessType())
{
// 幚峴拞偺僐儅儞僪傪僠僃僢僋偡傞
switch(aProcess.GetRequestOwnerInfo())
{
case ECmdFilterViewDeleteSong: //堦嬋嶍彍
{
//2006.10.01 TRK#7270
CSmbMusicAPMainPlayerFilterListView::HandleDialogCommandL( ECloseModelessDialog, R_DL_MUSIC_MAIN_FLT_PROGRESS_MP04P001_SINGULAR);
// 婎掙僋儔僗偱姰椆張棟偡傞
CSmbMusicAPMainPlayerFilterListView::ProcessComplete(aResult,aProcess);
ProcessLoadListItems(ECmdFilterViewGetListItems);
}
return;
}
}
// 婎掙僋儔僗偱姰椆張棟偡傞
CSmbMusicAPMainPlayerFilterListView::ProcessComplete(aResult, aProcess);
}
// Add-S PTX-824 D_82400013891懳墳 暯壀 2007.09.11
void CSmbMusicAPMainPlayerFilterListViewSong::SetPrevListInfo(TSmbMusicAPSyncEnginePrevListInfo aPrevList)
{
iPrevList = aPrevList;
}
// Add-E PTX-824 D_82400013891懳墳 暯壀 2007.09.11
/**
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?