📄 mytext.final
字号:
pMe->status = STATUS_MENU;
break;
default:
break;
}
}
else if(pMe->pSoftkey2 && IMENUCTL_IsActive(pMe->pSoftkey2))
{
item = IMENUCTL_GetSel(pMe->pSoftkey2);
switch(item)
{
case ID_INPUTMODE:
IMENUCTL_Release(pMe->pSoftkey2);
pMe->pSoftkey2 = NULL;
ITEXTCTL_Release(pMe->pMultiText1);
pMe->pMultiText1 = NULL;
ITEXTCTL_Release(pMe->pMultiText2);
pMe->pMultiText2 = NULL;
BuildInputMenu(pMe);
break;
case ID_OK:
IMENUCTL_Release(pMe->pSoftkey2);
pMe->pSoftkey2 = NULL;
ITEXTCTL_Release(pMe->pMultiText1);
pMe->pMultiText1 = NULL;
ITEXTCTL_Release(pMe->pMultiText2);
pMe->pMultiText2 = NULL;
IMENUCTL_SetActive(pMe->pMenu,TRUE);
pMe->status = STATUS_MENU;
break;
}
}
else if(pMe->pInputMenu && IMENUCTL_IsActive(pMe->pInputMenu))
{
item = IMENUCTL_GetSel(pMe->pInputMenu);
pMe->input_mode = item;
if(pMe->input_mode == AEE_TM_SYMBOLS)
pMe->input_flag = 1;
IMENUCTL_SetActive(pMe->pInputMenu,FALSE);
IMENUCTL_Release(pMe->pInputMenu);
pMe->pInputMenu = NULL;
DisplayMultiText(pMe);
SetContent(pMe);
if(pMe->textctl_focus == FOCUS_TEXT2)
{
ITEXTCTL_Redraw(pMe->pMultiText1);
ITEXTCTL_SetActive(pMe->pMultiText2,TRUE);
ITEXTCTL_SetInputMode(pMe->pMultiText2,pMe->input_mode);
}
else
{
ITEXTCTL_Redraw(pMe->pMultiText2);
ITEXTCTL_SetActive(pMe->pMultiText1,TRUE);
ITEXTCTL_SetInputMode(pMe->pMultiText1,pMe->input_mode);
}
return TRUE;
}
return TRUE;
case EVT_CTL_TAB:
if(pMe->status == STATUS_MULTI)
{
if(ITEXTCTL_IsActive(pMe->pMultiText1))
{
ITEXTCTL_SetActive(pMe->pMultiText1,FALSE);
ITEXTCTL_SetActive(pMe->pMultiText2,TRUE);
}
else if(ITEXTCTL_IsActive(pMe->pMultiText2))
{
ITEXTCTL_SetActive(pMe->pMultiText2,FALSE);
ITEXTCTL_SetActive(pMe->pMultiText1,TRUE);
}
return TRUE;
}
else
return FALSE;
// If nothing fits up to this point then we'll just break out
default:
break;
}
return FALSE;
}
// this function is called when your application is starting up
boolean mytext_InitAppData(mytext* pMe)
{
// Get the device information for this handset.
// Reference all the data by looking at the pMe->DeviceInfo structure
// Check the API reference guide for all the handy device info you can get
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&(pMe->DeviceInfo));
// The display and shell interfaces are always created by
// default, so we'll asign them so that you can access
// them via the standard "pMe->" without the "a."
pMe->pIDisplay = pMe->a.m_pIDisplay;
pMe->pIShell = pMe->a.m_pIShell;
// Insert your code here for initializing or allocating resources...
pMe->pMenu = NULL;
pMe->pSingleText = NULL;
pMe->pSoftkey1 = NULL;
pMe->pMultiText1 = NULL;
pMe->pMultiText2 = NULL;
pMe->pSoftkey2 = NULL;
pMe->pInputMenu = NULL;
pMe->pContent1 = NULL;
pMe->pContent2 = NULL;
// if there have been no failures up to this point then return success
return TRUE;
}
// this function is called when your application is exiting
void mytext_FreeAppData(mytext* pMe)
{
// insert your code here for freeing any resources you have allocated...
// example to use for releasing each interface:
// if ( pMe->pIMenuCtl != NULL ) // check for NULL first
// {
// IMENUCTL_Release(pMe->pIMenuCtl) // release the interface
// pMe->pIMenuCtl = NULL; // set to NULL so no problems trying to free later
// }
//
if(pMe->pMenu)
{
IMENUCTL_Release(pMe->pMenu);
pMe->pMenu = NULL;
}
if(pMe->pSingleText)
{
ITEXTCTL_Release(pMe->pSingleText);
pMe->pSingleText = NULL;
}
if(pMe->pSoftkey1)
{
IMENUCTL_Release(pMe->pSoftkey1);
pMe->pSoftkey1 = NULL;
}
if(pMe->pMultiText1)
{
ITEXTCTL_Release(pMe->pMultiText1);
pMe->pMultiText1 = NULL;
}
if(pMe->pMultiText2)
{
ITEXTCTL_Release(pMe->pMultiText2);
pMe->pMultiText2 = NULL;
}
if(pMe->pSoftkey2)
{
IMENUCTL_Release(pMe->pSoftkey2);
pMe->pSoftkey2 = NULL;
}
if(pMe->pInputMenu)
{
IMENUCTL_Release(pMe->pInputMenu);
pMe->pInputMenu = NULL;
}
if(pMe->pContent1)
{
FREE(pMe->pContent1);
pMe->pContent1 = NULL;
}
if(pMe->pContent2)
{
FREE(pMe->pContent2);
pMe->pContent2 = NULL;
}
}
static void BuildMainMenu(mytext *pMe)
{
if(!pMe->pMenu)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pMenu) != SUCCESS)
return ;
}
IMENUCTL_SetTitle(pMe->pMenu,MYTEXT_RES_FILE,IDS_TITLE,NULL);
IMENUCTL_AddItem(pMe->pMenu,MYTEXT_RES_FILE,IDS_SINGLE,ID_SINGLE,NULL,0);
IMENUCTL_AddItem(pMe->pMenu,MYTEXT_RES_FILE,IDS_MULTI,ID_MULTI,NULL,0);
IMENUCTL_SetActive(pMe->pMenu,TRUE);
pMe->status = STATUS_MENU;
}
static void DisplaySingleText(mytext *pMe)
{
AEERect rect;
if(!pMe->pSingleText)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pSingleText) != SUCCESS)
return;
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void**)&pMe->pSoftkey1) != SUCCESS)
{
ITEXTCTL_Release(pMe->pSingleText);
pMe->pSingleText = NULL;
return ;
}
}
IMENUCTL_SetActive(pMe->pMenu,FALSE);
IDISPLAY_ClearScreen(pMe->pIDisplay);
ITEXTCTL_SetTitle(pMe->pSingleText,MYTEXT_RES_FILE,IDS_INPUT_INFO,NULL);
ITEXTCTL_SetProperties(pMe->pSingleText,TP_FRAME);
ITEXTCTL_SetMaxSize(pMe->pSingleText,5);
SETAEERECT(&rect,0,20,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen/2);
ITEXTCTL_SetRect(pMe->pSingleText,&rect);
ITEXTCTL_SetSoftKeyMenu(pMe->pSingleText,pMe->pSoftkey1);
ITEXTCTL_SetInputMode(pMe->pSingleText,AEE_TM_FIRST_OEM+1);
IMENUCTL_AddItem(pMe->pSoftkey1,MYTEXT_RES_FILE,IDS_DISPLAY,ID_DISPLAY,NULL,0);
IMENUCTL_AddItem(pMe->pSoftkey1,MYTEXT_RES_FILE,IDS_OK,ID_OK,NULL,0);
ITEXTCTL_SetActive(pMe->pSingleText,TRUE);
pMe->status = STATUS_SINGLE;
}
static void DisplayMultiText(mytext *pMe)
{
AEERect rect;
int ascent;
int descent;
pMe->status = STATUS_MULTI;
if(!pMe->pMultiText1)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pMultiText1) != SUCCESS)
return;
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pMultiText2) != SUCCESS)
{
ITEXTCTL_Release(pMe->pMultiText1);
pMe->pMultiText1 = NULL;
return;
}
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void**)&pMe->pSoftkey2) != SUCCESS)
{
ITEXTCTL_Release(pMe->pMultiText1);
pMe->pMultiText1 = NULL;
ITEXTCTL_Release(pMe->pMultiText2);
pMe->pMultiText2 = NULL;
return ;
}
}
IMENUCTL_SetActive(pMe->pMenu,FALSE);
IDISPLAY_ClearScreen(pMe->pIDisplay);
IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,&ascent,&descent);
ITEXTCTL_SetTitle(pMe->pMultiText1,MYTEXT_RES_FILE,IDS_INPUT_INFO,NULL);
ITEXTCTL_SetProperties(pMe->pMultiText1,TP_FRAME);
ITEXTCTL_SetMaxSize(pMe->pMultiText1,5);
SETAEERECT(&rect,0,20,pMe->DeviceInfo.cxScreen,ascent + descent +2);
ITEXTCTL_SetRect(pMe->pMultiText1,&rect);
ITEXTCTL_SetTitle(pMe->pMultiText2,MYTEXT_RES_FILE,IDS_TITLE_ADDED,NULL);
ITEXTCTL_SetProperties(pMe->pMultiText2,TP_FRAME);
ITEXTCTL_SetMaxSize(pMe->pMultiText2,5);
SETAEERECT(&rect,0,60,pMe->DeviceInfo.cxScreen,ascent + descent + 2);
ITEXTCTL_SetRect(pMe->pMultiText2,&rect);
IMENUCTL_AddItem(pMe->pSoftkey2,MYTEXT_RES_FILE,IDS_INPUTMODE,ID_INPUTMODE,NULL,0);
IMENUCTL_AddItem(pMe->pSoftkey2,MYTEXT_RES_FILE,IDS_OK,ID_OK,NULL,0);
IMENUCTL_Redraw(pMe->pSoftkey2);
}
static void BuildInputMenu(mytext *pMe)
{
AEETextInputMode i;
AEETextInputModeInfo info;
ITextCtl *pTextCtl;
if(!pMe->pInputMenu)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pInputMenu) != SUCCESS)
return ;
}
pMe->status = STATUS_INPUTMENU;
IDISPLAY_ClearScreen(pMe->pIDisplay);
IMENUCTL_SetTitle(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_INPUTMODE,NULL);
ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pTextCtl);
ITEXTCTL_EnumModeInit(pTextCtl);
i = ITEXTCTL_EnumNextMode(pTextCtl,&info);
while(i != AEE_TM_NONE)
{
switch(i)
{
case AEE_TM_PINYIN:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_PINYIN,AEE_TM_PINYIN,NULL,0);
break;
case AEE_TM_STROKE:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_STROKE,AEE_TM_STROKE,NULL,0);
break;
case AEE_TM_EZTEXT:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_EZTEXT,AEE_TM_EZTEXT,NULL,0);
break;
case AEE_TM_NUMBERS:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_NUMBERS,AEE_TM_NUMBERS,NULL,0);
break;
case AEE_TM_LETTERS:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_ENGLISH,AEE_TM_LETTERS,NULL,0);
break;
case AEE_TM_SYMBOLS:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_SYMBOLS,AEE_TM_SYMBOLS,NULL,0);
break;
case AEE_TM_RAPID:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_RAPID,AEE_TM_RAPID,NULL,0);
break;
case AEE_TM_T9:
IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_T9,AEE_TM_T9,NULL,0);
break;
}
i = ITEXTCTL_EnumNextMode(pTextCtl,&info);
}
IMENUCTL_SetActive(pMe->pInputMenu,TRUE);
ITEXTCTL_Release(pTextCtl);
}
static void GetContent(mytext *pMe)
{
if(ITEXTCTL_IsActive(pMe->pMultiText1))
pMe->textctl_focus = FOCUS_TEXT1;
if(ITEXTCTL_IsActive(pMe->pMultiText2))
pMe->textctl_focus = FOCUS_TEXT2;
if(!pMe->pContent1)
pMe->pContent1 = (AECHAR*)MALLOC(12);
if(!pMe->pContent1)
return;
ITEXTCTL_GetText(pMe->pMultiText1,pMe->pContent1,6);
if(!pMe->pContent2)
pMe->pContent2 = (AECHAR*)MALLOC(12);
if(!pMe->pContent2)
return;
ITEXTCTL_GetText(pMe->pMultiText2,pMe->pContent2,6);
ITEXTCTL_SetActive(pMe->pMultiText1,FALSE);
ITEXTCTL_SetActive(pMe->pMultiText2,FALSE);
}
static void SetContent(mytext *pMe)
{
if(pMe->pContent1)
{
ITEXTCTL_SetText(pMe->pMultiText1,pMe->pContent1,-1);
ITEXTCTL_SetCursorPos(pMe->pMultiText1,TC_CURSOREND);
}
if(pMe->pContent2)
{
ITEXTCTL_SetText(pMe->pMultiText2,pMe->pContent2,-1);
ITEXTCTL_SetCursorPos(pMe->pMultiText2,TC_CURSOREND);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -