smbmusicapmainplayerdialogmanager.cpp

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

CPP
932
字号
	if (err != KErrNone)
		{
		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowSelectionModelessDialogL(0x%08x)[%d append failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18023, ELogLevelHighest, KLogFmt, aResId, err);

		User::Leave(err);
		}

	// 儌乕僪儗僗僟僀傾儘僌昞帵
	TRAP(err, dialog->ShowSelectionModelessDialogL());// 仐嵎暘
	if (err != KErrNone)
		{
		// 嵟屻偵捛壛偟偰偄偨偺傪庢傝彍偔
		TInt lastIndex = iModelessDialogs.Count() - 1;
		iModelessDialogs.Remove(lastIndex);

		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowSelectionModelessDialogL(0x%08x)[show failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18023, ELogLevelHighest, KLogFmt, aResId);

		User::Leave(err);
		}
	}

/**
 * 儌乕僪儗僗恑捇僟僀傾儘僌昞帵
 *
 * @param[in] aResId 儕僜乕僗ID乮CSmbMusicAPLibProgressDialog弨嫆乯
 * @param[out] aProgressLabel CSkonCompoundProgressLabel僋儔僗偺億僀儞僞
 * @param[in] aDialogObserver 僟僀傾儘僌傾僀僥儉僆僽僓乕僶乮僟僀傾儘僌徚嫀帪偵僐乕儖僶僢僋偑梸偟偄応崌偵巊梡偡傞堷悢乯
 * @param[in] aClearKeyDisable 僋儕傾僉乕桳岠丒柍岠
 * @param[in] aTimerClose 僋儘乕僘僞僀僾
 * @param[in] aHoldAppFlag 僒僽僾儗僀儎乕傪儊僀儞憖嶌拞夋柺偵偡傞偐斲偐乮仸僒僽僾儗僀儎乕偺夋柺忬懺傪堄幆偟偰巜掕偡傞偙偲乯
 */
void CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(TInt aResId, MSmbMusicAPMainPlayerDialogObserver* aDialogObserver, CSkonCompoundProgressLabel** aProgressLabel, TBool aClearKeyDisable, TSmbMusicAPMainPlayerProgressDialogClose aTimerClose, TBool aHoldAppFlag)
	{
	//_LIT(KLogFmt1, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(0x%08x)[start.]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18024, ELogLevelLowest, KLogFmt1, aResId);

	// 僐乕僨傿儞僌儈僗
	__ASSERT_DEBUG(aProgressLabel != NULL, PANIC(9018006));

	// 摨偠儕僜乕僗ID偺僟僀傾儘僌偑昞帵拞偺応崌偼暵偠偰偐傜昞帵偡傞
	CloseModelessDialog(aResId);

	// 僟僀傾儘僌惗惉
	//__UHEAP_FAILNEXT(1);  // UT丗CSmbMusicAPMainPlayerDialogItem惗惉幐攕
	CSmbMusicAPMainPlayerDialogItem* dialog = new(ELeave) CSmbMusicAPMainPlayerDialogItem(*this, iSyncEngine, aResId, NULL, NULL, aDialogObserver);

	// Leave偟偰傕戝忎晇側傛偆偵攝楍傪捛壛偟偰偍偔
	//__UHEAP_FAILNEXT(1);  // UT丗Append幐攕
	TInt err = iModelessDialogs.Append(dialog);
	if (err != KErrNone)
		{
		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(0x%08x)[%d append failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18025, ELogLevelHighest, KLogFmt, aResId, err);

		User::Leave(err);
		}

	// 儌乕僪儗僗僟僀傾儘僌昞帵
	TRAP(err, dialog->ShowProgressModelessDialogL(aTimerClose, aClearKeyDisable, &aProgressLabel, aHoldAppFlag));// 仐嵎暘
	if (err != KErrNone)
		{
		// 嵟屻偵捛壛偟偰偄偨偺傪庢傝彍偔
		TInt lastIndex = iModelessDialogs.Count() - 1;
		iModelessDialogs.Remove(lastIndex);

		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(0x%08x)[show failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18026, ELogLevelHighest, KLogFmt, aResId);

		User::Leave(err);
		}
	}

/**
 * 儌乕僪儗僗傒側偟恑捇僟僀傾儘僌昞帵
 *
 * @param[in] aResId 儕僜乕僗ID乮CSmbMusicAPLibProgressDialog弨嫆乯
 * @param[in] aDialogObserver 僟僀傾儘僌傾僀僥儉僆僽僓乕僶乮僟僀傾儘僌徚嫀帪偵僐乕儖僶僢僋偑梸偟偄応崌偵巊梡偡傞堷悢乯
 * @param[in] aInterval 峏怴娫妘 (扨埵: 儅僀僋儘昩)
 * @param[in] aProgressValue 憹壛偝偣傞恑捇抣
 * @param[in] aFinalValue 帺摦峏怴偡傞恑捇偺嵟戝抣 (柍岠抣: 0)乮100埲壓偺抣偱愝掕乯
 * @param[in] aClearKeyDisable 僋儕傾僉乕桳岠丒柍岠
 * @param[in] aTimerClose 僋儘乕僘僞僀僾
 * @param[in] aHoldAppFlag 僒僽僾儗僀儎乕傪儊僀儞憖嶌拞夋柺偵偡傞偐斲偐乮仸僒僽僾儗僀儎乕偺夋柺忬懺傪堄幆偟偰巜掕偡傞偙偲乯
 */
void CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogExL(TInt aResId, MSmbMusicAPMainPlayerDialogObserver* aDialogObserver, TTimeIntervalMicroSeconds32 aInterval, TUint aProgressValue, TUint aFinalValue, TBool aClearKeyDisable, TSmbMusicAPMainPlayerProgressDialogClose aTimerClose, TBool aHoldAppFlag)
	{
	//_LIT(KLogFmt1, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogExL(0x%08x)[start.]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18024, ELogLevelLowest, KLogFmt1, aResId);

	// 摨偠儕僜乕僗ID偺僟僀傾儘僌偑昞帵拞偺応崌偼暵偠偰偐傜昞帵偡傞
	CloseModelessDialog(aResId);

	// 僟僀傾儘僌惗惉
	//__UHEAP_FAILNEXT(1);  // UT丗CSmbMusicAPMainPlayerDialogItem惗惉幐攕
	CSmbMusicAPMainPlayerDialogItem* dialog = new(ELeave) CSmbMusicAPMainPlayerDialogItem(*this, iSyncEngine, aResId, NULL, NULL, aDialogObserver);

	// Leave偟偰傕戝忎晇側傛偆偵攝楍傪捛壛偟偰偍偔
	//__UHEAP_FAILNEXT(1);  // UT丗Append幐攕
	TInt err = iModelessDialogs.Append(dialog);
	if (err != KErrNone)
		{
		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(0x%08x)[%d append failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18025, ELogLevelHighest, KLogFmt, aResId, err);

		User::Leave(err);
		}

	// 儌乕僪儗僗傒側偟恑捇僟僀傾儘僌昞帵
	TRAP(err, dialog->ShowProgressModelessDialogExL(aTimerClose, aClearKeyDisable, aInterval, aProgressValue, aFinalValue, aHoldAppFlag));// 仐嵎暘
	if (err != KErrNone)
		{
		// 嵟屻偵捛壛偟偰偄偨偺傪庢傝彍偔
		TInt lastIndex = iModelessDialogs.Count() - 1;
		iModelessDialogs.Remove(lastIndex);

		delete dialog;

		_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowProgressModelessDialogL(0x%08x)[show failed.]");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18026, ELogLevelHighest, KLogFmt, aResId);

		User::Leave(err);
		}
	}

/**
 * 僌儘乕僶儖慖戰僟僀傾儘僌昞帵
 *
 * @param[in] aResId 儕僜乕僗ID
 * @param[in] aObserver 僟僀傾儘僌僋儘乕僘帪偺捠抦愭
 */
void CSmbMusicAPMainPlayerDialogManager::ShowGlobalSelectionDialogL(TInt aResId, MSmbMusicAPMainPlayerGlobalDialogObserver* aObserver)
	{
//	// 僌儘乕僶儖僟僀傾儘僌昞帵拞偵梫媮偑偒偰傕柍帇偡傞偺偱摿偵栤戣偼側偄偑丄杮棃偼偦偺傛偆側儐乕僗働乕僗偼側偄偼偢側偺偱丄ASSERT傪偐偗傞
//	__ASSERT_DEBUG(iGlobalSelectionDialog == NULL, PANIC(9018004));
	// 僆僽僓乕僶偱NULL傪巜掕偝傟偰傕捠抦傪峴傢側偄偩偗偱摿偵栤戣偼側偄偑丄偦偺傛偆側儐乕僗働乕僗偼側偄偼偢側偺偱丄ASSERT傪偐偗傞
	__ASSERT_DEBUG(aObserver != NULL, PANIC(9018005));

	if (iGlobalSelectionDialog != NULL)
		{
		delete iGlobalSelectionDialog;
		iGlobalSelectionDialog = NULL;
		}

	//_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::ShowGlobalSelectionDialogL(0x%08x)[start.]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18027, ELogLevelLowest, KLogFmt, aResId);

	//__UHEAP_FAILNEXT(1);  // UT丗CSmbMusicAPMainPlayerGlobalSelectionDialog惗惉幐攕
#ifdef __SMBMUSICAP_PTX824_DEF__
// PTX824懳墳
// SmbAf懳墳 2007.03.09
	iGlobalSelectionDialog = new(ELeave) CSmbMusicAPMainPlayerGlobalSelectionDialog(iAfEnv.SmbLaSession());
#else
	iGlobalSelectionDialog = new(ELeave) CSmbMusicAPMainPlayerGlobalSelectionDialog(iAfEnv.LauncherSession());
#endif
	iGlobalSelectionDialog->ShowL(aResId, aObserver);
	//iGlobalSelectionDialog->ShowL(aResId, aObserver);  // UT丗僌儘乕僶儖僟僀傾儘僌傪2夞屇傃弌偡
	}

/**
 * 僌儘乕僶儖僟僀傾儘僌傪昞帵偟偰偄傞偐敾掕偡傞
 *
 * @return ETrue:僌儘乕僶儖僟僀傾儘僌傪昞帵拞 | EFalse:僌儘乕僶儖僟僀傾儘僌傪昞帵偟偰偄側偄
 */
TBool CSmbMusicAPMainPlayerDialogManager::IsShowGlobalDialog()
	{
	// 僀儞僗僞儞僗偑側偄応崌偼昞帵偟偰偄側偄
	if (iGlobalSelectionDialog == NULL)
		{
		return EFalse;
		}

	// 僀儞僗僞儞僗偑偁傞応崌偼Active偐偳偆偐偱敾掕
	return iGlobalSelectionDialog->IsActive();
	}

/**
 * 傒側偟恑捇僟僀傾儘僌偺僶乕傪廔抂偵堏摦偝偣傞
 *
 * 張棟偑姰椆偟偨忬懺偱傒側偟恑捇僟僀傾儘僌傪僋儘乕僘偡傞応崌丄
 * 僋儘乕僘偺捈慜偵杮娭悢傪屇傃弌偡丅
 *
 * 傒側偟恑捇僟僀傾儘僌埲奜偵懳偟偰杮娭悢傪屇傃弌偟偰傕壗傕偟側偄
 *
 * @param[in] aResId 傒側偟恑捇僟僀傾儘僌偺儕僜乕僗ID
 */
void CSmbMusicAPMainPlayerDialogManager::DrawEndProgressBar(TInt aResId)
	{
	// 懳徾偺儌乕僪儗僗僟僀傾儘僌傪尒偮偗傞
	CSmbMusicAPMainPlayerDialogItem* dialog = NULL;
	for (TInt i = 0; i < iModelessDialogs.Count(); i++)
		{
		if (iModelessDialogs[i]->ResourceId() == aResId)
			{
			dialog = iModelessDialogs[i];
			break;
			}
		}

	// 尒偮偐傜側偄応崌偼屇傃弌偡傋偒忬懺偱屇傃弌偝傟偨偨傔丄僐乕僨傿儞僌儈僗
	__ASSERT_DEBUG(dialog != NULL, PANIC(9018007));

	if (dialog != NULL)
		{// 懳徾偺僾儘僌儗僗僶乕傪廔抂偵堏摦偝偣傞
		dialog->DrawEndProgressBar();
		}
	}

/**
 * 儌乕僪儗僗僟僀傾儘僌偺抶墑嶍彍傪峴偆僐乕儖僶僢僋娭悢
 *
 * @param[in] aInstance 抶墑嶍彍傪峴偆僆僽僕僃僋僩
 * @return KErrNone偺傒
 */
TInt CSmbMusicAPMainPlayerDialogManager::AsyncDestructor(TAny* aInstance)
	{
	//_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::AsyncDestructor()[start.]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18028, ELogLevelLowest, KLogFmt);// 偙偺儊僜僢僪偼僗僞僥傿僢僋側偺偱丄CAfEnv::Static()傪屇傃弌偝側偄偲側傜側偄

	CSmbMusicAPMainPlayerDialogManager* dialogManager = static_cast<CSmbMusicAPMainPlayerDialogManager*>(aInstance);

	// 嶍彍僼儔僌偑偨偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	// 屻傠偺梫慺偐傜嶍彍偟偰偄偔
	for (TInt i = dialogManager->iModelessDialogs.Count()-1; i >= 0; i--)
		{
		if (dialogManager->iModelessDialogs[i]->IsDelete() != EFalse) // == ETrue
			{// 嶍彍梫媮嵪傒偺僟僀傾儘僌偑尒偮偐偭偨応崌
			CSmbMusicAPMainPlayerDialogItem* item = dialogManager->iModelessDialogs[i];

			// 梫慺偐傜嶍彍
			dialogManager->iModelessDialogs.Remove(i);

			// 幚懱傪嶍彍
			delete item;

			//_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::AsyncDestructor()[delete.]");
			//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18029, ELogLevelLowest, KLogFmt);// 偙偺儊僜僢僪偼僗僞僥傿僢僋側偺偱丄CAfEnv::Static()傪屇傃弌偝側偄偲側傜側偄
			}
		}

	return KErrNone;
	}

/**
 * CSmbMusicAPMainPlayerModelessDialogItem偐傜埶棅偝傟偨僆僽僕僃僋僩傪抶墑嶍彍偡傞
 */
void CSmbMusicAPMainPlayerDialogManager::AsyncDeleteDialog()
	{
	//_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::AsyncDeleteDialog()[start.]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18030, ELogLevelLowest, KLogFmt);

	// 抶墑嶍彍梫媮傪敪峴偡傞
	if (iAsyncDestructor->IsActive() == EFalse)
		{
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerDialogManager::AsyncDeleteDialog()[callback start.]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iLog, 18031, ELogLevelLowest, KLogFmt);

		iAsyncDestructor->CallBack();
		}
	}

/**
 * 昞帵拞偺僟僀傾儘僌偺悢傪曉偡
 *
 * @return 昞帵拞偺僟僀傾儘僌偺悢乮僌儘乕僶儖僟僀傾儘僌偼娷傑傟側偄乯
 */
TInt CSmbMusicAPMainPlayerDialogManager::DisplayDialogNum() const
	{
	TInt num = 0;

	// 昞帵拞偺儌乕僟儖
	if (iModalDialog != NULL)
		{
		++num;
		}

	// 昞帵拞偺儌乕僟儗僗
	for (TInt i = 0; i < iModelessDialogs.Count(); i++)
		{
		if (iModelessDialogs[i]->IsDelete() == EFalse)
			{
			++num;
			}
		}

//	// 昞帵拞偺僌儘乕僶儖僟僀傾儘僌
//	if (iGlobalSelectionDialog != NULL)
//		{
//		++num;
//		}

	return num;
	}

SEMCJ_NAMESPACE_END

// end of SmbMusicAPMainPlayerDialogManager.cpp
/* Copyright (C) 2005-2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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