#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "phone.h" #include "status.h" static char status_msg[128]; static int status_touch(EVEView *view, EVETouch *touch, uint16_t evt, uint8_t tag0) { unsigned char state = app_phone_state_get(); int8_t touch_idx = eve_touch_get_idx(touch); if (touch_idx != 0) return 0; evt = eve_touch_evt(touch, evt, tag0, view->window->tag, 2); if (touch && (evt & EVE_TOUCH_ETYPE_POINT_UP)) { if ((state == VOICE_STATE_RING) && (touch->eevt & EVE_TOUCH_EETYPE_TRACK_LEFT)) { unsigned char *buf = eos_net_alloc(); buf[0] = EOS_CELL_MTYPE_VOICE | EOS_CELL_MTYPE_VOICE_ANSWER; eos_net_send(EOS_NET_MTYPE_CELL, buf, 1, 0); status_msg[0] = '\0'; } if ((state != VOICE_STATE_IDLE) && (touch->eevt & EVE_TOUCH_EETYPE_TRACK_RIGHT)) { unsigned char *buf = eos_net_alloc(); buf[0] = EOS_CELL_MTYPE_VOICE | EOS_CELL_MTYPE_VOICE_HANGUP; eos_net_send(EOS_NET_MTYPE_CELL, buf, 1, 0); status_msg[0] = '\0'; } return 1; } return 0; } static uint8_t status_draw(EVEView *view, uint8_t tag0) { uint8_t tag_opt = EVE_TOUCH_OPT_TRACK | EVE_TOUCH_OPT_TRACK_XY; if (view->window->tag != EVE_TAG_NOTAG) eve_touch_set_opt(view->window->tag, eve_touch_get_opt(view->window->tag) | tag_opt); if (tag0 != EVE_TAG_NOTAG) { eve_touch_set_opt(tag0, eve_touch_get_opt(tag0) | tag_opt); eve_cmd_dl(TAG(tag0)); tag0++; } eve_cmd(CMD_TEXT, "hhhhs", 0, 0, 31, 0, status_msg); return tag0; } void app_status_msg_set(char *msg, int refresh) { strcpy(status_msg, msg); if (refresh) app_screen_refresh(); } void app_status_init(void) { EVEScreen *screen = app_screen(); EVEWindow *status = eve_window_get(screen, "status"); status->view->touch = status_touch; status->view->draw = status_draw; }