📄 sendsmswnd.c
字号:
#include "SendSmsWnd.h"
#include "russdmd.h"
#include "russdmd_res.h"
static void SendSmsWnd_Update(SendSmsWnd* pthis);
static void SendSmsWnd_Notify(void * pUser,int st);
boolean SendSmsWnd_New(SendSmsWnd *pthis, RussDmdApp* pMe)
{
pthis->pMe = pMe;
return TRUE;
}
boolean SendSmsWnd_HandleEvent(SendSmsWnd* pthis, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_APP_SUSPEND:
ISHELL_CancelTimer(pthis->pMe->a.m_pIShell, (PFNNOTIFY)SendSmsWnd_Update, pthis);
return TRUE;
case EVT_APP_RESUME:
SendSmsWnd_Update(pthis);
return TRUE;
case EVT_KEY_RELEASE:
if (pthis->m_eState == eSendSmsState_INPUT)
{
if (wParam >= AVK_0 && wParam <= AVK_9)
{
int len = STRLEN(pthis->m_pszDst);
if (len < 11)
{
// 电话号码还未满位
pthis->m_pszDst[len] = (wParam - AVK_0) + 0x30;
pthis->m_pszDst[len + 1] = 0;
}
}
else if (wParam == AVK_CLR)
{
int len = STRLEN(pthis->m_pszDst);
if (len > 0)
pthis->m_pszDst[len - 1] = 0;
else
RussDmdApp_SetActiveWnd(pthis->pMe, IDW_MAINMENU);
}
pthis->pMe->keyFlag = 0;
}
return TRUE;
default:
return FALSE;
}
}
boolean SendSmsWnd_Open(SendSmsWnd* pthis)
{
ISHELL_CreateInstance(pthis->pMe->a.m_pIShell, AEECLSID_TAPI,(void**)&pthis->m_pITapi);
pthis->m_pszText = (AECHAR*)MALLOC(MAX_STRING_SIZE);
ISHELL_LoadResString(pthis->pMe->a.m_pIShell, RUSSDMD_RES_FILE, IDS_SMS, pthis->m_pszText, MAX_STRING_SIZE);
pthis->m_pszDst = (char*)MALLOC(20);
MEMSET(pthis->m_pszDst, 0, 20);
pthis->m_pimage = ISHELL_LoadResImage(pthis->pMe->a.m_pIShell, RUSSDMD_RES_FILE, IMG_OPTIONBG);
pthis->m_eState = eSendSmsState_INPUT;
SendSmsWnd_Update(pthis);
return TRUE;
}
static void SendSmsWnd_Update(SendSmsWnd* pthis)
{
AECHAR num[12] = {0};
ISHELL_SetTimer(pthis->pMe->a.m_pIShell, MAIN_LOOP_TIME, (PFNNOTIFY)SendSmsWnd_Update, pthis);
//IDISPLAY_FillRect(pthis->pMe->a.m_pIDisplay, NULL, RGB_BLACK);
IIMAGE_Draw(pthis->m_pimage, 0, 0);
switch(pthis->m_eState)
{
case eSendSmsState_INPUT:
// 检查是否满足发送条件
if (pthis->pMe->keyFlag & kKeypad_DPad_Click)
{
if (STRLEN(pthis->m_pszDst) == 11)
{
AECHAR szTxt[128];
ISHELL_LoadResString(pthis->pMe->a.m_pIShell, RUSSDMD_RES_FILE, IDS_SMS1, szTxt, sizeof(szTxt));
pthis->m_eState = eSendSmsState_SENDING;
ITAPI_SendSMS(pthis->m_pITapi, pthis->m_pszDst,(const char*)szTxt, 0, (PFNSMSSTATUS)SendSmsWnd_Notify, pthis);
return;
}
}
// 显示
IDISPLAY_DrawText(pthis->pMe->a.m_pIDisplay, AEE_FONT_NORMAL,
pthis->m_pszText, 7, 0, 10, NULL, IDF_TEXT_TRANSPARENT | IDF_ALIGN_CENTER);
if (STRLEN(pthis->m_pszDst) > 0)
{
STRTOWSTR(pthis->m_pszDst, num, sizeof(AECHAR) * 12);
IDISPLAY_DrawText( pthis->pMe->a.m_pIDisplay, AEE_FONT_NORMAL, num, -1, 0, 0, NULL,
IDF_TEXT_TRANSPARENT | IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
}
break;
case eSendSmsState_SENDING:
IDISPLAY_DrawText( pthis->pMe->a.m_pIDisplay, AEE_FONT_NORMAL, pthis->m_pszText + 7, 5, 0, 0, NULL,
IDF_TEXT_TRANSPARENT | IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
goto keyevent;
case eSendSmsState_OK:
IDISPLAY_DrawText( pthis->pMe->a.m_pIDisplay, AEE_FONT_NORMAL, pthis->m_pszText + 12, 5, 0, 0, NULL,
IDF_TEXT_TRANSPARENT | IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
goto keyevent;
case eSendSmsState_FAILED:
IDISPLAY_DrawText( pthis->pMe->a.m_pIDisplay, AEE_FONT_NORMAL, pthis->m_pszText + 17, 4, 0, 0, NULL,
IDF_TEXT_TRANSPARENT | IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
keyevent:
if (pthis->pMe->keyFlag & kKeypad_Clr)
{
RussDmdApp_SetActiveWnd(pthis->pMe, IDW_MAINMENU);
}
break;
}
IDISPLAY_Update(pthis->pMe->a.m_pIDisplay);
}
void SendSmsWnd_Close(SendSmsWnd* pthis)
{
ISHELL_CancelTimer(pthis->pMe->a.m_pIShell, (PFNNOTIFY)SendSmsWnd_Update, pthis);
if (pthis->m_pITapi)
{
ITAPI_Release(pthis->m_pITapi);
pthis->m_pITapi = NULL;
}
FREEIF(pthis->m_pszDst);
FREEIF(pthis->m_pszText);
CleanDeleteImage(pthis->m_pimage);
}
void SendSmsWnd_Free(SendSmsWnd* pthis)
{
SendSmsWnd_Close(pthis);
}
static void SendSmsWnd_Notify(void * pUser,int st)
{
SendSmsWnd* pthis = (SendSmsWnd*)pUser;
if (st == SUCCESS)
pthis->m_eState = eSendSmsState_OK;
else
pthis->m_eState = eSendSmsState_FAILED;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -