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

📄 listview2.cpp

📁 《UIQ 3 The Complete Guide》书的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		case 1:
		case 5:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Largeicon1,EMbmListview2Largeicon1mask);
			break;
		case 2:
		case 6:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Largeicon2,EMbmListview2Largeicon2mask);
			break;
		case 3:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Largeicon3,EMbmListview2Largeicon3mask);
			break;
		default: // remaining items dont have images...
			break;
			}
		if (icon)
			{
			CleanupStack::PushL(icon);
			lbData->AddIconL(icon,EQikListBoxSlotLeftMediumIcon1);
			CleanupStack::Pop(icon); // since lbData now taken ownership
			}
		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList4L()
//
// The highlighted entry is displayed as a two line list box entry. 
// 	standard_normal_layout = EQikListBoxIconLineIcon;
//	standard_highlight_layout = EQikListBoxIconIconLine;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId4);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

		iEikonEnv->ReadResourceL(bb,R_STR_LIST_CONTENT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText1);

		// List 4 has 3 diffent icon slots leftSlot1, leftSlot2 and rightSlot1
		CQikContent* icon1=NULL;
		CQikContent* icon2=NULL;
		CQikContent* icon3=NULL;
		switch (i)
			{
		case 0:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon0,EMbmListview2Icon0mask);
			CleanupStack::PushL(icon1);

			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			CleanupStack::PushL(icon2);

			icon3=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			CleanupStack::PushL(icon3);
			break;
		case 1:
		case 5:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			CleanupStack::PushL(icon1);

			icon3=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			CleanupStack::PushL(icon3);
			break;
		case 2:
		case 6:
			// these only have a 2nd icon defined, showing first icon can be NULL
			icon3=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon3);
			break;

		case 3:
			// this only has 1st icon defined, showing second icon can be NULL
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon1);

			break;
		// the remaining items (case 4) dont have images... so show its entirely feasible
		// to have rows with no image.
		default:
			break;
			}

		if (icon3)
			{
			lbData->AddIconL(icon3,EQikListBoxSlotRightSmallIcon1);
			CleanupStack::Pop(icon3); // since lbData now taken ownership
			}
		if (icon2)
			{
			lbData->AddIconL(icon2,EQikListBoxSlotLeftSmallIcon2);
			CleanupStack::Pop(icon2); // since lbData now taken ownership
			}
		if (icon1)
			{
			lbData->AddIconL(icon1,EQikListBoxSlotLeftSmallIcon1);
			CleanupStack::Pop(icon1); // since lbData now taken ownership
			}
		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList5L()
//
// Lines are displayed with varying numbers of icons
//	standard_normal_layout = EQikListBoxLineIconIcon;
//	standard_highlight_layout = EQikListBoxIconLineIconIcon;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId5);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

		iEikonEnv->ReadResourceL(bb,R_STR_LIST_CONTENT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText1);

		CQikContent* icon1=NULL;
		CQikContent* icon2=NULL;
		CQikContent* icon3=NULL;
		switch (i)
			{
		case 0:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon0,EMbmListview2Icon0mask);
			CleanupStack::PushL(icon1);

			// List 5 has upto 3 icons per line - load the 2nd icon for this line
			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			CleanupStack::PushL(icon2);

			// List 5 has upto 3 icons per line - load the 3rd icon for this line
			icon3=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			CleanupStack::PushL(icon3);
			break;
		case 1:
		case 5:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			CleanupStack::PushL(icon1);

			// List 5 has upto 3 icons per line - load the 2nd icon for this line
			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			CleanupStack::PushL(icon2);
			break;
		case 2:
		case 6:
			// List 5 has upto 3 icons per line - load the 2nd icon for this line
			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon2);
			break;

		case 3:
			// this only has 3rd icon defined, showing 1st + 2nd icon can be NULL
			icon3=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon3);

			break;
		// the remaining items (case 4) dont have images... so show its entirely feasible
		// to have rows with no image.
		default:
			break;
			}

		if (icon3)
			{
			lbData->AddIconL(icon3,EQikListBoxSlotRightSmallIcon2);
			CleanupStack::Pop(icon3);
			}
		if (icon2)
			{
			lbData->AddIconL(icon2,EQikListBoxSlotRightSmallIcon1);
			CleanupStack::Pop(icon2);
			}
		if (icon1)
			{
			lbData->AddIconL(icon1,EQikListBoxSlotLeftSmallIcon1);
			CleanupStack::Pop(icon1);
			}

		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList6L()
//
// Icon to left, half lines of text.
//	standard_normal_layout = EQikListBoxIconHalfLineHalfLine;
//	standard_highlight_layout = EQikListBoxIconHalfLineHalfLineLine;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId6);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

		// slots 1 and 2 are the half lines
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_CONTENT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText1);
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_ALT_TEXT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText2);

		// slot 3 is the full line when an item is highlighted
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_DETAILS_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText3);

		CQikContent* icon=NULL;
		switch (i)
			{
		case 0:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon0,EMbmListview2Icon0mask);
			break;
		case 1:
		case 5:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			break;
		case 2:
		case 6:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			break;
		case 3:
			icon=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			break;
		// the remaining items (case 4) dont have images... so show its entirely feasible
		// to have rows with no image.
		default:
			break;
			}
		if (icon)
			{
			CleanupStack::PushL(icon);
			lbData->AddIconL(icon,EQikListBoxSlotLeftSmallIcon1);
			CleanupStack::Pop(icon); // since lbData now taken ownership
			}
		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList7L()
//
// Icon to left, half lines of text.
//	standard_normal_layout = EQikListBoxIconTwoLines;
//	standard_highlight_layout = EQikListBoxIconIconTwoLines;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId7);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

		iEikonEnv->ReadResourceL(bb,R_STR_LIST_CONTENT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText1);
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_DETAILS_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText2);

		CQikContent* icon1=NULL;
		CQikContent* icon2=NULL;
		switch (i)
			{
		case 0:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon0,EMbmListview2Icon0mask);
			CleanupStack::PushL(icon1);

			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon1,EMbmListview2Icon1mask);
			CleanupStack::PushL(icon2);
			break;
		case 1:
		case 5:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon2,EMbmListview2Icon2mask);
			CleanupStack::PushL(icon1);

			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon2);
			break;
		case 2:
		case 6:
			icon1=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon3,EMbmListview2Icon3mask);
			CleanupStack::PushL(icon1);
			break;

		case 3:
			icon2=CQikContent::NewL(NULL,KMbmFile,EMbmListview2Icon0,EMbmListview2Icon0mask);
			CleanupStack::PushL(icon2);

			break;
		// the remaining items (case 4) dont have images... so show its entirely feasible
		// to have rows with no image.
		default:
			break;
			}

		if (icon2)
			{
			lbData->AddIconL(icon2,EQikListBoxSlotLeftSmallIcon2);
			CleanupStack::Pop(icon2);
			}
		if (icon1)
			{
			lbData->AddIconL(icon1,EQikListBoxSlotLeftSmallIcon1);
			CleanupStack::Pop(icon1);
			}
		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList8L()
//
// Thumbnail images within a listbox.
//	standard_highlight_layout = EQikListBoxMediumThumbTwoLines;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId8);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	TBool reportedMissing=EFalse;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

		// This listbox has 2 lines of data
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_CONTENT_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText1);
		iEikonEnv->ReadResourceL(bb,R_STR_LIST_DETAILS_1+i);
		lbData->AddTextL(bb,EQikListBoxSlotText2);

		// Now the medium icon
		// Note that combining the two switch statements requires us to change our current
		// object ownership/error handling strategy so we dont cause alloc heaven should
		// loading one icon fail.Whilst entirely feasible, we have chosen not to do that here.

		// For whatever reason it appears that thumbnails have to be loaded from file.
		// There are no methods to support simply using in memory CFbsBitMaps etc 

		TRAPD(err,
			_LIT(KPicture1jpg,"c:\\Picture1.jpg");
			lbData->AddThumbnailImageL(KPicture1jpg,EQikListBoxSlotLeftMediumThumbnail1);
			);

		// This app expects to be able to locate the picture file c:\\Picture1.jpg. You 
		// will need to copy from the ListView2 project to ....\epoc32\winscw\c 
		// (emulators drive C:\) to be able to see this in practice
		if ((err!=KErrNone) && (!reportedMissing))
			{
			_LIT(KMissingFile,"Missing file");
			_LIT(KPleaseCopyPicture1,"Please copy Picture1.jpg from the ListView2 example to c:\\ of your emulator");
			iEikonEnv->InfoWinL(KMissingFile,KPleaseCopyPicture1);
			reportedMissing=ETrue; // dont keep repeating the msg.
			}
		CleanupStack::PopAndDestroy(lbData);
		}
	model.ModelEndUpdateL();
	}

void CAppSpecificListView::AddItemsToList9L()
//
//	standard_highlight_layout = EQikListBoxCheckLineSwappingLine;
//
	{
	CQikListBox* listbox=LocateControlByUniqueHandle<CQikListBox>(EAppSpecificListViewListId9);
	MQikListBoxModel& model(listbox->Model());
	model.ModelBeginUpdateLC();
	TBuf<KMaxListItemText>bb;
	for (TInt i=0;i<KListView2Items;i++)
		{
		MQikListBoxData* lbData=model.NewDataL(MQikListBoxModel::EDataNormal);
		CleanupClosePushL(*lbData);

⌨️ 快捷键说明

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