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

📄 sms.c

📁 BREW 短信开开发的例子
💻 C
📖 第 1 页 / 共 2 页
字号:
            IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
			ITEXTCTL_SetActive(pApp->m_pMessageText, TRUE);

         }

         return TRUE;
      
      case EVT_COMMAND:
         
		 if(pApp->m_focus == SOFTKEY_OK_CTL)
		 {
			   CurSel = IMENUCTL_GetSel(pApp->m_pSoftKey);
                if(CurSel == IDS_OK)
				{
                  pApp->m_focus= MESSAGE_TEXT_CTL;
				
				  TextMesage_init(pApp);
				  IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
				  ITEXTCTL_SetActive(pApp->m_pMessageText, TRUE);				
				}
				else
				{
                    ISHELL_CloseApplet(pApp->a.m_pIShell, FALSE);
                    return TRUE;
                    
				}
		 }
		 		
         else if(pApp->m_focus == SOFTKEY_MESSAGE_CTL) //send sms
         {
            
               CurSel=IMENUCTL_GetSel(pApp->m_pMessageSoftKey);

               if(CurSel==IDS_RETURN)
               {
                  ISHELL_CloseApplet(pApp->a.m_pIShell, FALSE);
                  return TRUE;
               }
			   else if(CurSel == IDS_SEND_SMS)
			   {
                 //send sms
				 IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
				 ITEXTCTL_SetActive(pApp->m_pMessageText, FALSE);
                 sms_Send(pApp);
				 pApp->m_focus = SEND_RESULT_CTL;
               }
          }

		 else if(pApp->m_focus == SEND_FEEDBACK_CTL)
		 {
            // return to the initial state, begin to send another sms 
			 sms_release(pApp);
             sms_InitAppData(pApp);
			 sms_init(pApp);
#if 0			 
/* added by zsx for test */
	  TextMesage_init(pApp);	
/*added end */	
#endif
             IMENUCTL_SetActive(pApp->m_pSoftKey, FALSE);
		     ITEXTCTL_SetActive(pApp->m_pText, TRUE);
      	      return(TRUE);
			 			 
		 }

         return TRUE;

	 case EVT_APP_SUSPEND:
         
      //IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
	  //sms_release(pApp);
	  DBGPRINTF("Received EVT_APP_SUSPEND Message!");
	      ProcessSuspend(pApp); 
	      return TRUE;

      case EVT_APP_RESUME:
	      DBGPRINTF("Received EVT_APP_RESUME Message!");
		  //sms_InitAppData(pApp);
		  //sms_init(pApp);
          //IMENUCTL_SetActive(pApp->m_pSoftKey, FALSE);
		  //ITEXTCTL_SetActive(pApp->m_pText, TRUE);
          ProcessResume(pApp);
		  return TRUE;

/* changed by zsx */	  
//	  case EVT_USER:
 	case EVT_USER1:
         
      if(wParam == SUCCESS)
      {
		 ISTATIC_SetActive(pApp->m_pStatic, FALSE);
		 ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_RESULT, szTitle, 20);
	     ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_SUCCESS, szText, 20);
	     ISTATIC_SetText(pApp->m_pStatic,szTitle,szText,AEE_FONT_BOLD, AEE_FONT_NORMAL);
	     ISTATIC_SetActive(pApp->m_pStatic, TRUE);
		 IMENUCTL_AddItem(pApp->m_pResultSoftKey, SMS_RES_FILE, IDS_BACK, IDS_BACK, NULL, NULL);
	     IMENUCTL_SetActive(pApp->m_pResultSoftKey,TRUE);

		 pApp->sendingflag = IDS_SEND_SUCCESS;

		 pApp->m_focus = SEND_FEEDBACK_CTL;
		  

         
      }
      else
      {
		 ISTATIC_SetActive(pApp->m_pStatic, FALSE);
		 ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_RESULT, szTitle, 20);
	     ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_FAIL, szText, 20);
	     ISTATIC_SetText(pApp->m_pStatic,szTitle,szText,AEE_FONT_BOLD, AEE_FONT_NORMAL);
	     ISTATIC_SetActive(pApp->m_pStatic, TRUE);

		 IMENUCTL_AddItem(pApp->m_pResultSoftKey, SMS_RES_FILE, IDS_BACK, IDS_BACK, NULL, NULL);
	     IMENUCTL_SetActive(pApp->m_pResultSoftKey,TRUE);
		 
		 pApp->sendingflag = IDS_SEND_FAIL;

		 pApp->m_focus = SEND_FEEDBACK_CTL;
         
      }
      

         return TRUE;
      
	 
         
      default:
         break;
   }
   return FALSE;
}


static void sms_init(CSmsApp * pApp)
{
   AEERect rect;
    

   //0. Create Main Info controls according to page
   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_TEXTCTL, (void**)(&pApp->m_pText))!=SUCCESS)
   {
      pApp->m_pText = NULL;
      return;
   }
   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_SOFTKEYCTL, (void**)(&pApp->m_pSoftKey))!=SUCCESS)
   {
      pApp->m_pSoftKey = NULL;
      return;
   }

   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_TAPI, (void**)(&pApp->m_pITAPI))!=SUCCESS)
   {
      pApp->m_pITAPI = NULL;
      return;
   }

    

   IDISPLAY_ClearScreen(pApp->a.m_pIDisplay);
  
   SETAEERECT(&rect, 0, 0, pApp->m_rc.dx, pApp->m_fontHeight*3);
   

   // Set title of Text Control of Phone number
   ITEXTCTL_SetTitle(pApp->m_pText, SMS_RES_FILE, IDS_PHONE_NUMBER, NULL);

   // Set maximum text size supported by the text control object
   ITEXTCTL_SetMaxSize(pApp->m_pText, PHONE_NUM);

   // Set properties to have thetext control object have a
   // frame and to have a multi-line text edit space.
   ITEXTCTL_SetProperties(pApp->m_pText,  TP_FRAME|TP_MULTILINE);
   ITEXTCTL_SetRect(pApp->m_pText, &rect);

   // Set the initial text of the text control object.
 
   if (ISHELL_GetPrefs(pApp->a.m_pIShell, AEECLSID_SMS, SMS_PREFS_VERSION,
						   &pApp->m_Prefs, sizeof(pApp->m_Prefs)) != SUCCESS)
   {
		   MEMSET(&pApp->m_Prefs, 0, sizeof(pApp->m_Prefs));
   }   
   STRCPY(pApp->strNum, pApp->m_Prefs.phoneNum);
   

   STRTOWSTR(pApp->strNum, pApp->wStrNum, sizeof(pApp->wStrNum));
   ITEXTCTL_SetText(pApp->m_pText, pApp->wStrNum, sizeof(pApp->wStrNum));


   ITEXTCTL_SetInputMode(pApp->m_pText, AEE_TM_NUMBERS);
    
   //set softkey
   IMENUCTL_AddItem(pApp->m_pSoftKey, SMS_RES_FILE, IDS_OK, IDS_OK, NULL, NULL);
   IMENUCTL_AddItem(pApp->m_pSoftKey, SMS_RES_FILE, IDS_RETURN, IDS_RETURN, NULL, NULL);
/*added by zsx */
   IMENUCTL_EnableCommand(pApp->m_pSoftKey,TRUE);	 
  
   IMENUCTL_Redraw(pApp->m_pSoftKey);

   IDISPLAY_UpdateEx(pApp->a.m_pIDisplay, TRUE);
   pApp->m_focus = PHONE_NUMBER_TEXT_CTL;
#if 0
/*added by zsx for test */
   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_STATIC, (void**)(&pApp->m_pStatic))!=SUCCESS)
   {
      pApp->m_pStatic = NULL;
      return;
   }
   // set static control
   SETAEERECT(&rect, 0, 0, pApp->m_rc.dx, pApp->m_fontHeight*6 );
   ISTATIC_SetRect(pApp->m_pStatic, &rect);
   ISTATIC_SetProperties(pApp->m_pStatic,  ST_CENTERTEXT|ST_MIDDLETEXT);
   /*added end */
 #endif  
    
}


static void TextMesage_init(CSmsApp * pApp)
{
    AEERect rect;
    
  
   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_TEXTCTL, (void**)(&pApp->m_pMessageText))!=SUCCESS)
   {
      pApp->m_pMessageText = NULL;
      return;
   }

   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_SOFTKEYCTL, (void**)(&pApp->m_pMessageSoftKey))!=SUCCESS)
   {
      pApp->m_pMessageSoftKey = NULL;
      return;
   }


   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_STATIC, (void**)(&pApp->m_pStatic))!=SUCCESS)
   {
      pApp->m_pStatic = NULL;
      return;
   }
  
   if(ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_SOFTKEYCTL, (void**)(&pApp->m_pResultSoftKey))!=SUCCESS)
   {
      pApp->m_pResultSoftKey = NULL;
      return;
   }

   //IDISPLAY_ClearScreen(pApp->a.m_pIDisplay);
  
   SETAEERECT(&rect, 0, 0, pApp->m_rc.dx, pApp->m_fontHeight*4 );
   

   // Set title of Message Text Box Control
   ITEXTCTL_SetTitle(pApp->m_pMessageText, SMS_RES_FILE, IDS_MESSAGE_TEXT, NULL);
   // Set maximum text size supported by the text control object
   ITEXTCTL_SetMaxSize(pApp->m_pMessageText, 100);

   // Set properties to have thetext control object have a
   // frame and to have a multi-line text edit space.
   ITEXTCTL_SetProperties(pApp->m_pMessageText,  TP_FRAME | TP_MULTILINE);
   
   ITEXTCTL_SetRect(pApp->m_pMessageText, &rect);
    
   ITEXTCTL_SetSoftKeyMenu(pApp->m_pMessageText, pApp->m_pMessageSoftKey);

   ITEXTCTL_SetInputMode(pApp->m_pMessageText, AEE_TM_FIRST_OEM+1);

   ITEXTCTL_SetActive (pApp->m_pMessageText, TRUE);

      
   IMENUCTL_AddItem(pApp->m_pMessageSoftKey, SMS_RES_FILE, IDS_SEND_SMS, IDS_SEND_SMS, NULL, NULL);
   IMENUCTL_AddItem(pApp->m_pMessageSoftKey, SMS_RES_FILE, IDS_RETURN, IDS_RETURN, NULL, NULL);
    
   IMENUCTL_Redraw(pApp->m_pMessageSoftKey);
  /*added by zsx */
   IMENUCTL_EnableCommand(pApp->m_pMessageSoftKey,TRUE);	  

   // set static control
   SETAEERECT(&rect, 0, 0, pApp->m_rc.dx, pApp->m_fontHeight*6 );
   ISTATIC_SetRect(pApp->m_pStatic, &rect);
   ISTATIC_SetProperties(pApp->m_pStatic,  ST_CENTERTEXT|ST_MIDDLETEXT);

}


static void sms_Send(CSmsApp * pApp)
{
   int16 ReturnValue;
   AECHAR szTitle[20];
   AECHAR szText[20];

   if(pApp->m_pITAPI == NULL)
      return;

   //get phone number
   ITEXTCTL_GetText(pApp->m_pText, pApp->wStrNum, PHONE_NUM);
   WSTRTOSTR(pApp->wStrNum, pApp->strNum, sizeof(pApp->strNum));

   //save phone number
   STRCPY(pApp->m_Prefs.phoneNum, pApp->strNum);
   ISHELL_SetPrefs(pApp->a.m_pIShell, AEECLSID_SMS, SMS_PREFS_VERSION,
				&pApp->m_Prefs, sizeof(pApp->m_Prefs));

   //get text message 
   ITEXTCTL_GetText(pApp->m_pMessageText, pApp->wStrMessage, MESSAGE_LENGTH);
	
	// send message
	ReturnValue = ITAPI_SendSMS(pApp->m_pITAPI, (const char *)pApp->strNum,  (const char *)pApp->wStrMessage,
    		0, (PFNSMSSTATUS)MySmsNotify, pApp);
    
	IDISPLAY_ClearScreen(pApp->a.m_pIDisplay);
	if(ReturnValue == SUCCESS)
	{
      
	  ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_RESULT, szTitle, 20);
	  ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SENDING, szText, 20);
	  ISTATIC_SetText(pApp->m_pStatic,szTitle,szText,AEE_FONT_BOLD, AEE_FONT_NORMAL);
	  ISTATIC_SetActive(pApp->m_pStatic, TRUE);

	  pApp->sendingflag = IDS_SENDING;
	  
	  pApp->m_focus = SEND_FEEDBACK_CTL;
	 

	}
	else
	{
        
	  ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_RESULT, szTitle, 20);
	  ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_FAIL, szText, 20);
	  ISTATIC_SetText(pApp->m_pStatic,szTitle,szText,AEE_FONT_BOLD, AEE_FONT_NORMAL);
	  ISTATIC_SetActive(pApp->m_pStatic, TRUE);

	  IMENUCTL_AddItem(pApp->m_pResultSoftKey, SMS_RES_FILE, IDS_BACK, IDS_BACK, NULL, NULL);
	  IMENUCTL_SetActive(pApp->m_pResultSoftKey,TRUE);	  
      
	   pApp->sendingflag = IDS_SEND_FAIL;
	}
	

}

static void MySmsNotify(CSmsApp * pApp, int16 status)
{
   
  pApp->SentStatus = status;
/* changed by zsx */
/*
  ISHELL_PostEvent (pApp->a.m_pIShell, AEECLSID_SMS, 
               EVT_USER, status, 0);  */
  ISHELL_PostEvent (pApp->a.m_pIShell, AEECLSID_SMS, 
               EVT_USER1, status, 0);              

   DBGPRINTF("Message send notify(%d)!",status);
}


void ProcessSuspend(CSmsApp * pApp)
{
	   
        ITEXTCTL_SetActive(pApp->m_pText, FALSE);
        IMENUCTL_SetActive(pApp->m_pSoftKey, FALSE);
           
	    ITEXTCTL_SetActive(pApp->m_pMessageText, FALSE);
        IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
            
	    if (pApp->m_pStatic != NULL)
             ISTATIC_Reset (pApp->m_pStatic);

		IMENUCTL_SetActive(pApp->m_pResultSoftKey, FALSE); 
            
}

void ProcessResume(CSmsApp * pApp)
{
   AECHAR szTitle[20];
   AECHAR szText[20];

	switch(pApp->m_focus)
	{
	    case  PHONE_NUMBER_TEXT_CTL:
             IMENUCTL_SetActive(pApp->m_pSoftKey, FALSE);
		     ITEXTCTL_SetActive(pApp->m_pText, TRUE);
             break;

		case  SOFTKEY_OK_CTL:
			  IMENUCTL_SetActive(pApp->m_pSoftKey, TRUE);
			  ITEXTCTL_SetActive(pApp->m_pText, FALSE); 
			  break;

		case  MESSAGE_TEXT_CTL:
              IMENUCTL_SetActive(pApp->m_pMessageSoftKey, FALSE);
			  ITEXTCTL_SetActive(pApp->m_pMessageText, TRUE);
			  break;

		case  SOFTKEY_MESSAGE_CTL:
              IMENUCTL_SetActive(pApp->m_pMessageSoftKey, TRUE);
			  ITEXTCTL_SetActive(pApp->m_pMessageText, FALSE);
			  break;

		case  SEND_RESULT_CTL:
		case  SEND_FEEDBACK_CTL:
			                  
			   //redraw the istatic
               ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, IDS_SEND_RESULT, szTitle, 20);
	           ISHELL_LoadResString(pApp->a.m_pIShell, SMS_RES_FILE, pApp->sendingflag, szText, 20);
	           ISTATIC_SetText(pApp->m_pStatic,szTitle,szText,AEE_FONT_BOLD, AEE_FONT_NORMAL);
	           ISTATIC_SetActive(pApp->m_pStatic, TRUE);

			   if(pApp->m_focus == SEND_FEEDBACK_CTL)
                  IMENUCTL_SetActive(pApp->m_pResultSoftKey,TRUE);

			   ISTATIC_Redraw(pApp->m_pStatic);
			   break;

		 default:
			   break;


	}         
}

⌨️ 快捷键说明

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