/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
#include "mre_sms_sample.h"
/* ---------------------------------------------------------------------------
* global variables
* ------------------------------------------------------------------------ */
vm_sms_msg_data_t *message_data =NULL; /* structure pointer for message information */
#define SUPPORT_BG
VMINT layer_hdl[1]; ////layer handle array.
VMINT sms_box_type = 0;
VMINT sms_box_type_for_id = 0;
VMINT16 message_id = 0;
/**
* entry
*/
void vm_main(void)
{
#ifdef MRE_LOG_ON
VMINT drv;
VMCHAR drv_buf[MRE_MAX_SIZE_STRING] = {0};
if((drv = vm_get_removable_driver()) < 0)
{
drv = vm_get_system_driver();
}
sprintf(drv_buf, "%c:\\mre_sample3_sms.log", drv);
vm_log_init(drv_buf, VM_INFO_LEVEL);
vm_set_log_level(VM_INFO_LEVEL);
#endif
layer_hdl[0] = -1;
vm_reg_sysevt_callback(handle_sysevt);
vm_reg_keyboard_callback(handle_keyevt);
vm_reg_pen_callback(handle_penevt);
}
void handle_sysevt(VMINT message, VMINT param)
{
vm_log_info("entering system event %s","handle_sysevt(VMINT message, VMINT param)");
#ifdef SUPPORT_BG
/* The application updates the screen when receiving the message VM_MSG_PAINT
* what is sent after the application is activated. The application can skip
* the process on screen when the VM_MSG_ACTIVE or VM_MSG_INACTIVE is received.
*/
switch (message)
{
case VM_MSG_CREATE:
/* the GDI operation is not recommended as the response of the message*/
break;
case VM_MSG_PAINT:
/* cerate base layer that has same size as the screen*/
layer_hdl[0] = vm_graphic_create_layer(0, 0, vm_graphic_get_screen_width(),
vm_graphic_get_screen_height(), -1);
/* set clip area */
vm_graphic_set_clip(0, 0,
vm_graphic_get_screen_width(),
vm_graphic_get_screen_height());
mre_draw_screen();
break;
case VM_MSG_HIDE:
case VM_MSG_QUIT:
if( layer_hdl[0] != -1 )
{
vm_graphic_delete_layer(layer_hdl[0]);
layer_hdl[0] = -1;
}
break;
}
#else
switch (message)
{
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG");
case VM_MSG_CREATE:
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG,VM_MSG_CREATE");
case VM_MSG_ACTIVE:
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG,VM_MSG_ACTIVE");
/*cerate base layer that has same size as the screen*/
layer_hdl[0] = vm_graphic_create_layer(0, 0,
vm_graphic_get_screen_width(), vm_graphic_get_screen_height(), -1);
/* set clip area*/
vm_graphic_set_clip(0, 0,
vm_graphic_get_screen_width(), vm_graphic_get_screen_height());
break;
case VM_MSG_PAINT:
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG,VM_MSG_PAINT");
vm_log_info("before calling %s","mre_draw_screen()");
mre_draw_screen();
vm_log_info("after calling %s","mre_draw_screen()");
break;
case VM_MSG_INACTIVE:
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG,VM_MSG_INACTIVE");
vm_graphic_delete_layer(layer_hdl[0]);
break;
case VM_MSG_QUIT:
vm_log_info("Entering %s","handle_sysevt,#else SUPPORT_BG,VM_MSG_QUIT");
if( layer_hdl[0] != -1 )
vm_graphic_delete_layer(layer_hdl[0]);
break;
}
#endif
}
void handle_keyevt(VMINT event, VMINT keycode)
{
vm_log_info("key event handle function starts with event : %d and keycode : %d", event, keycode);
if(event==VM_KEY_EVENT_DOWN)
{
switch(keycode)
{
case VM_KEY_NUM1 :
vm_log_info("pressing %s","VM_KEY_NUM1");
mre_read_sms();
break;
case VM_KEY_NUM2 :
vm_log_info("pressing %s","VM_KEY_NUM2");
mre_delete_msg();
break;
case VM_KEY_NUM3 :
vm_log_info("pressing %s","VM_KEY_NUM3");
mre_delete_msg_list();
break;
case VM_KEY_RIGHT_SOFTKEY :
vm_log_info("pressing %s","VM_KEY_RIGHT_SOFTKEY");
vm_exit_app();
break;
default :
break;
}
}
}
void handle_penevt(VMINT event, VMINT x, VMINT y)
{
if( layer_hdl[0] != -1 )
{
vm_graphic_delete_layer(layer_hdl[0]);
layer_hdl[0] = -1;
}
}
/*************************************************************************
* FUNCTION
* static void mre_draw_screen()
*
* DESCRIPTION : to draw the user menu
*
* PARAMETERS : no
*
* RETURNS : nothing
*
*************************************************************************/
static void mre_draw_screen()
{
VMWCHAR s[MRE_MAX_SIZE_STRING];
VMUINT8* buf;
int x, y;
vm_log_info("Entering %s","static void mre_draw_screen()");
/* get the target buffer*/
buf = vm_graphic_get_layer_buffer(layer_hdl[0]);
/* fill the screen*/
vm_graphic_fill_rect(buf,
VM_SCREEN_START_X, VM_SCREEN_START_X, vm_graphic_get_screen_width(),
vm_graphic_get_screen_height(), VM_COLOR_WHITE, VM_COLOR_BLACK);
vm_gb2312_to_ucs2(s, MRE_MAX_SIZE_STRING, "MENU : ");
x = MRE_STRING_PRINT_X;
y = MRE_STRING_PRINT_Y;
/* get the target buffer*/
buf = vm_graphic_get_layer_buffer(layer_hdl[0]);
/* draw text */
vm_graphic_textout(buf, x, y, s, wstrlen(s), VM_COLOR_WHITE);
/* to show input screen as Press-1 to call*/
vm_gb2312_to_ucs2(s, MRE_MAX_SIZE_STRING, "1-read a msg ");
x = MRE_STRING_PRINT_X;
y = MRE_STRING_PRINT_Y + MARGIN;
/* get the target buffer*/
buf = vm_graphic_get_layer_buffer(layer_hdl[0]);
/* draw text */
vm_graphic_textout(buf, x, y, s, wstrlen(s), VM_COLOR_WHITE);
vm_gb2312_to_ucs2(s, MRE_MAX_SIZE_STRING, "2-delete a msg ");
x = MRE_STRING_PRINT_X;
y = MRE_STRING_PRI