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

📄 uiprobsolvcontent.cpp

📁 嵌入式系统PDA的流程
💻 CPP
字号:
#include "UIProbSolvContent.h"
#include "ProbSolvContent.h"
#include "UIPrbSolvContainer.h"

#include "UI_Field.h"
#include "UI_Table.h"
#include "UI_Scrollbar.h"
#include "UI_String.h"
#include "UI_Poptrigger.h"

enum {
	ID_PROBSOLVCONTENT_BASE	= ID_XXX_BASE + 210,

	ID_PROBSOLVCONTENT_TABLE = ID_PROBSOLVCONTENT_BASE + 1,
	ID_PROBSOLVCONTENT_SCROLLBAR = ID_PROBSOLVCONTENT_BASE + 2,
	//there are 1 lines with only title on left
	NUM_TABLE_ROWS		= ProbSolvContent::NUM_SUBCONTENT + 1,

	ID_COLUMN0_OBJECT0	= ID_PROBSOLVCONTENT_SCROLLBAR + 1,
	ID_COLUMN1_OBJECT0	= ID_COLUMN0_OBJECT0 + NUM_TABLE_ROWS,

	COLUMN0_WIDTH	= 54,
	COLUMN1_WIDTH	= 93,

	COLUMN1_CHAR_NUM = 14,

	POPTRIGGER_BEGIN = 6,
};

const struct
{
	CHAR *Title;
	SHORT SubIndex;
	BYTE ControlType;
	BYTE MatchType;	
}RowInfo[NUM_TABLE_ROWS] = 
{
	{"电话号码",		 0, FIELD,  MATCH_NUMBER},
	{"障碍流水",		 1, FIELD,  MATCH_NUMBER},
	{"障碍状态",		 2, FIELD,  MATCH_NO_ENTER},
	{"障碍部位",		3, FIELD, MATCH_NO_ENTER},
	{"查修员工号",		 4, FIELD,  MATCH_NUMBER},
	{"数据专线",	 -1, 0,0 },
	{"环阻",		5, CONTROL,  0},
	{"电容",		 6, CONTROL,0},
	{"绝缘A",		 7, CONTROL,0},
	{"绝缘B",		 8, CONTROL,0},
	{"绝缘AB",		 9, CONTROL,0},
};

const CHAR pszText1[8][12] = 
{
	"1.5K",
	"1.4K",
	"1.3K",
	"1.2K",
	"1.1K",
	"1.0K",
	"0.9K",
	"0.8K",
};

const CHAR pszText2[5][12] = 
{
	"1.5F",
	"1.4F",
	"1.3F",
	"1.2F",
	"1.1F",
};

const CHAR pszText3[8][12] =
{
	"500M-1KM",
	"100M-200M",
	"50M-100M",
	"20M-50M",
	"15M-20M",
	"10M-15M",
	"5M-10M",
	"1M-5M",
};

const struct
{
	SHORT	Text_Num;
	SHORT	Text_Wedth;
	const CHAR*  pszText;
} PopTrigger_Text [5] =
{
	{8, 12, (const CHAR*)pszText1},
	{5, 12, (const CHAR*)pszText2},
	{8, 12, (const CHAR*)pszText3},
	{8, 12, (const CHAR*)pszText3},
	{8, 12, (const CHAR*)pszText3},
};


UIProbSolvContent::UIProbSolvContent ()
:m_iTopRow(0)
{
	memset(&m_Content, 0, ProbSolvContent::CONTENT_LEN);
}

//##ModelId=3D65F08000EB
void UIProbSolvContent::SetContent(ProbSolvContent *pContent)
{
	m_Content = *pContent;
}

void UIProbSolvContent::GetContent(ProbSolvContent *pContent)
{
	CHAR* pszText;

	memset(pContent->m_strContent, 0, sizeof(pContent->m_strContent));

	SHORT SubPos = 0, SubLength = 0;
	for (SHORT SubIndex = 0; SubIndex < ProbSolvContent::NUM_SUBCONTENT; SubIndex++)
	{
		SubLength = pContent->GetSubContentLength(SubIndex);
		for (SHORT row = 0; row < NUM_TABLE_ROWS; row++)
		{
			if (RowInfo[row].SubIndex == SubIndex)
			{
				switch (RowInfo[row].ControlType)
				{
				case FIELD:
					FieldGetTextPointer(ID_COLUMN1_OBJECT0 + row, (BYTE**)&pszText);
					strncpy(&pContent->m_strContent[SubPos], pszText, SubLength);
					break;
				case CONTROL:
					ControlGetLabel(ID_COLUMN1_OBJECT0 + row, (BYTE**)&pszText);
					strncpy(&pContent->m_strContent[SubPos], pszText, SubLength);
					break;
				}
				break;//break to outer loop(SubIndex)
			}
		}
		SubPos += SubLength;
	}
}

//##ModelId=3D6D64050233
void UIProbSolvContent::Show()
{
	TableUpdateTable(ID_PROBSOLVCONTENT_TABLE, m_iTopRow);
	ScrollbarDrawScrollbar(ID_PROBSOLVCONTENT_SCROLLBAR);
}

/*
//##ModelId=3D65F0920051
Err UIProbSolvContent::Exit()
{
	return 1;
}
*/

//##ModelId=3D65F0AA01B4
BOOLEAN UIProbSolvContent::HandleEvent(EvtType* pEvent)
{
	switch (pEvent->eventType)
	{
	case EVT_SCROLLBAR_REPEAT:
		ScrollbarDrawScrollbar(ID_PROBSOLVCONTENT_SCROLLBAR);
		return TRUE;
		break;
	case EVT_SCROLLBAR_SELECT:
		m_iTopRow = (USHORT)pEvent->para2;
		TableUpdateTable(ID_PROBSOLVCONTENT_TABLE, m_iTopRow);
		return TRUE;
	default:
		return FALSE;
		break;
	}
	return FALSE;
}

//##ModelId=3D65F099000B
Err UIProbSolvContent::Initialize()
{
	CHAR ContentText[ProbSolvContent::CONTENT_LEN];
	WORD FieldNumLines;
	SHORT row = 0;

	UI_TableInit(ID_PROBSOLVCONTENT_TABLE,
				2, SECTIONUP_HEIGHT+3,//X,Y
				160-SECTIONUP_HEIGHT-SECTIONDOWN_HEIGHT-15-5-3-3, COLUMN0_WIDTH+COLUMN1_WIDTH+1,//h,w
				2, NUM_TABLE_ROWS,//columns, rows
				PDAXWT_FORM);
	TableSetColumnWidth(ID_PROBSOLVCONTENT_TABLE, 0, COLUMN0_WIDTH);
	TableSetColumnWidth(ID_PROBSOLVCONTENT_TABLE, 1, COLUMN1_WIDTH);
	TableSetAttributes(ID_PROBSOLVCONTENT_TABLE, TRUE, FALSE, TRUE, TRUE, TRUE);
	//create srcollbar
	UI_ScrollBarInit(ID_PROBSOLVCONTENT_SCROLLBAR,
					151, SECTIONUP_HEIGHT+3,//x,y
					160-SECTIONUP_HEIGHT-SECTIONDOWN_HEIGHT-15-5-3-3,//height
					PDAXWT_FORM);
	ScrollbarSetScrollbar(ID_PROBSOLVCONTENT_SCROLLBAR,
						0,//value
						NUM_TABLE_ROWS-2,0,//max, min value
						2, NUM_TABLE_ROWS);//page_size, total_num_lines
	ScrollbarSetScrollbarDrawPagesize(ID_PROBSOLVCONTENT_SCROLLBAR, 2);
	ScrollbarSetScrollbarVisible(ID_PROBSOLVCONTENT_SCROLLBAR, TRUE);

	for (row = 0; row < NUM_TABLE_ROWS; row++)
	{
	//the left column
		ObjectBounds FieldBounds1 = {0, 0, COLUMN0_WIDTH, 13};
		UI_FieldInit(ID_COLUMN0_OBJECT0 + row,
					FieldBounds1.xcoord, FieldBounds1.ycoord,//x,y
					FieldBounds1.height,FieldBounds1.width,//ObjHeight, ObjWidth,//height, width
					strlen(RowInfo[row].Title),//char num
					(BYTE*)RowInfo[row].Title,//text
					PDAXWT_FORM);
		//recalculate field height
		FieldGetTotalNumOfLines(ID_COLUMN0_OBJECT0 + row, &FieldNumLines);
		if (FieldNumLines > 1)
		{
			FieldBounds1.height = (SHORT)(13 * FieldNumLines);
			FieldSetBounds(ID_COLUMN0_OBJECT0 + row, FieldBounds1);
		}

		UI_FieldSetNoLine(ID_COLUMN0_OBJECT0 + row);
		UI_FieldSet(ID_COLUMN0_OBJECT0 + row, FALSE, FALSE, TRUE, FALSE);
		TableSetItemType(ID_PROBSOLVCONTENT_TABLE, row, 0, TABLE_UI_OBJECT);
		UI_TableSetItemId(ID_PROBSOLVCONTENT_TABLE, row, 0, ID_COLUMN0_OBJECT0 + row);

	//the right column
		ObjectBounds FieldBounds2 = {0, 0, COLUMN1_WIDTH, 13};
		if (RowInfo[row].SubIndex != -1)// -1 means empty cell
		{
			//get the text first
			m_Content.GetSubContent(RowInfo[row].SubIndex, (CHAR*)ContentText);

			if (FIELD == RowInfo[row].ControlType)
			{
				//set height of row2
				FieldBounds2.height = 13 * (1 + m_Content.GetSubContentLength (RowInfo[row].SubIndex)
					/ COLUMN1_CHAR_NUM);

				UI_FieldInit(ID_COLUMN1_OBJECT0 + row,
							FieldBounds2.xcoord, FieldBounds2.ycoord,//x,y
							FieldBounds2.height,FieldBounds2.width,//ObjHeight, ObjWidth,//height, width
							m_Content.GetSubContentLength (RowInfo[row].SubIndex),//char num
							(BYTE*)ContentText,//text
							PDAXWT_FORM);
				UI_FieldSetKeyMatch (ID_COLUMN1_OBJECT0 + row, RowInfo[row].MatchType);
				//recalculate field height
				/*
				FieldGetTotalNumOfLines(ID_COLUMN1_OBJECT0 + row, &FieldNumLines);
				FieldBounds2.height = (SHORT)(13 * FieldNumLines);
				FieldSetBounds(ID_COLUMN1_OBJECT0 + row, FieldBounds2);
				*/

				UI_FieldSet(ID_COLUMN1_OBJECT0 + row, TRUE, FALSE, TRUE, FALSE);
				TableSetItemType(ID_PROBSOLVCONTENT_TABLE, row, 1, TABLE_UI_OBJECT);
				UI_TableSetItemId(ID_PROBSOLVCONTENT_TABLE, row, 1, ID_COLUMN1_OBJECT0 + row);
			}
			else if (CONTROL == RowInfo[row].ControlType)
			{
				UI_PoptriggerInit (ID_COLUMN1_OBJECT0 + row, 
					FieldBounds2.xcoord, FieldBounds2.ycoord, //x,y
					FieldBounds2.height, FieldBounds2.width, //h,w
					(BYTE*)ContentText, 
					PopTrigger_Text[row - POPTRIGGER_BEGIN].Text_Num, //count
					PopTrigger_Text[row - POPTRIGGER_BEGIN].Text_Wedth, //count
					(BYTE*)PopTrigger_Text[row - POPTRIGGER_BEGIN].pszText,
					PDAXWT_FORM
					);

				ControlSetAttributes(ID_COLUMN1_OBJECT0 + row,TRUE,FALSE,FALSE,TRUE,TRUE);

				TableSetItemType(ID_PROBSOLVCONTENT_TABLE, row, 1, TABLE_UI_OBJECT);
				UI_TableSetItemId(ID_PROBSOLVCONTENT_TABLE, row, 1, ID_COLUMN1_OBJECT0 + row);
			}
		}

		//set row height
		TableSetRowHeight(ID_PROBSOLVCONTENT_TABLE, row,
				(FieldBounds1.height > FieldBounds2.height) ? FieldBounds1.height+1 : FieldBounds2.height+1);

	}

	return SUC;
}

//##ModelId=3D65F0A30376
Err UIProbSolvContent::DestroyWindow()
{
	SHORT row = 0;

	for (row = 0; row < NUM_TABLE_ROWS; row++)
	{
		//FieldEraseField(ID_COLUMN0_OBJECT0 + row);
		UI_FormDeleteObject(ID_COLUMN0_OBJECT0 + row, PDAXWT_FORM);

		if (RowInfo[row].SubIndex != -1)
		{
			/*
			if (FIELD == RowInfo[row].ControlType)
			{
				FieldEraseField(ID_COLUMN1_OBJECT0 + row);
			}
			else if (CONTROL == RowInfo[row].ControlType)
			{
				ControlEraseControl (ID_COLUMN1_OBJECT0 + row);
			}
			*/
			UI_FormDeleteObject(ID_COLUMN1_OBJECT0 + row, PDAXWT_FORM);
		}
	}

	//TableEraseTable (ID_PROBSOLVCONTENT_TABLE);
	UI_FormDeleteObject(ID_PROBSOLVCONTENT_TABLE, PDAXWT_FORM);

	//ScrollbarEraseScrollbar(ID_PROBSOLVCONTENT_SCROLLBAR);
	UI_FormDeleteObject(ID_PROBSOLVCONTENT_SCROLLBAR, PDAXWT_FORM);
	return SUC;
}

⌨️ 快捷键说明

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