📄 uiprobsolvcontent.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 + -