1979 lines
57 KiB
C
1979 lines
57 KiB
C
#include "app_config.h"
|
||
#ifdef CONFIG_UI_ENABLE //上电执行则打开app_config.h TCFG_DEMO_UI_RUN = 1
|
||
|
||
#include "ui/ui.h"
|
||
#include "ui_api.h"
|
||
#include "system/timer.h"
|
||
#include "server/server_core.h"
|
||
#include "os/os_api.h"
|
||
#include "asm/gpio.h"
|
||
#include "system/includes.h"
|
||
#include "server/audio_server.h"
|
||
#include "storage_device.h"
|
||
#include "font/font_textout.h"
|
||
#include "ui/includes.h"
|
||
#include "ui_action_video.h"
|
||
#include "font/font_all.h"
|
||
#include "font/language_list.h"
|
||
#include "ename.h"
|
||
#include "asm/rtc.h"
|
||
#include "lcd_drive.h"
|
||
#include "video_rec.h"
|
||
#include "yuv_soft_scalling.h"
|
||
#include "event/key_event.h"
|
||
#include "net_video_rec.h"
|
||
#include "asm/jpeg_codec.h"
|
||
#include "ui_demo.h"
|
||
#include "action.h"
|
||
#include "video/camera_effect.h"
|
||
#include "lcd_data_driver.h"
|
||
|
||
#if TCFG_DEMO_UI_RUN
|
||
|
||
extern void set_kaleidoscope_mode(u8 demo);
|
||
|
||
|
||
enum video_show_mode {//按顺序
|
||
SH_MAIN_PAGE = 0,
|
||
SH_BOOTH_1,
|
||
SH_BOOTH_2,
|
||
SH_BOOTH_3,
|
||
SH_FLIP_LR,//左右对称
|
||
SH_QUADRATE,//正方形
|
||
SH_QUADRATE_UNIFROM,
|
||
SH_VERTICAL_STRIPE,
|
||
SH_DOWN_SAMP,
|
||
SH_REFLECTION_P,
|
||
SH_FOUR_CORNER,
|
||
SH_ROTATE_180,
|
||
SH_MULTIPLE_1,
|
||
SH_MULTIPLE_2,
|
||
SH_MULTIPLE_3,
|
||
SH_MULTIPLE_4,//15
|
||
SH_MODE_END,
|
||
};
|
||
|
||
#if (defined CONFIG_VIDEO_ENABLE && (__SDRAM_SIZE__ >= (2 * 1024 * 1024)))
|
||
|
||
#if 1
|
||
#define log_info(x, ...) printf("\r\n>>>>>>[UI]" x " ", ## __VA_ARGS__)
|
||
#else
|
||
#define log_info(...)
|
||
#endif
|
||
|
||
|
||
struct ui_demo_date_hdl *ui_data;
|
||
#define __this ui_data
|
||
|
||
#define POST_TASK_NAME "ui_demo"
|
||
|
||
static char photo_selection = 0;
|
||
static char get_photo_mode = 0;
|
||
char choice_piece = 0;
|
||
|
||
u8 switch_save = 0;
|
||
|
||
extern void get_jpg_show_to_lcd(u8 *img_bug, u32 img_len);
|
||
extern void get_jpg_show_lcd(u8 *img_buf, u32 img_len);
|
||
extern void lcd_show_frame_1(u8 *buf, u32 len);
|
||
extern int video_rec_start_notify(void);
|
||
extern int avi_net_playback_unpkg_init(FILE *fd, u8 state);//state : 0 preview , 1 playback
|
||
extern int avi_video_get_frame(FILE *fd, int offset_num, u8 *buf, u32 buf_len, u8 state);
|
||
extern void set_photo_compose_mode(u8 mode, u8 choice_show_piece);
|
||
extern void set_init_value(u8 set_init_value);
|
||
|
||
|
||
static void ui_play_mp3(char *name)
|
||
{
|
||
#if CONFIG_MP3_DEC_ENABLE
|
||
post_msg_play_flash_mp3(name, __this->play_mp3_sound_size); //开机提示音
|
||
#endif
|
||
}
|
||
|
||
static void get_sys_time(struct sys_time *time)
|
||
{
|
||
void *fd = dev_open("rtc", NULL);
|
||
|
||
if (!fd) {
|
||
memset(time, 0, sizeof(*time));
|
||
return;
|
||
}
|
||
|
||
dev_ioctl(fd, IOCTL_GET_SYS_TIME, (u32)time);
|
||
/* printf("get_sys_time : %d-%d-%d,%d:%d:%d\n", time->year, time->month, time->day, time->hour, time->min, time->sec); */
|
||
dev_close(fd);
|
||
}
|
||
|
||
|
||
/*==================开机播提示音已经开机动画==================*/
|
||
static void open_animation(char speed)//开机图片以及开机音乐播放
|
||
{
|
||
set_lcd_show_data_mode(UI);
|
||
|
||
key_event_disable();//如果需要提示音播放完要关按键开关
|
||
|
||
ui_play_mp3(POWER_ON_MP3);
|
||
|
||
ui_show_main(PAGE_2);
|
||
|
||
for (u8 i = 0; i < 5; i++) {
|
||
log_info("i=%d.\n", i);
|
||
ui_pic_show_image_by_id(BASEFORM_19, i);
|
||
os_time_dly(speed);
|
||
}
|
||
|
||
ui_hide_main(PAGE_2);
|
||
|
||
key_event_enable();
|
||
}
|
||
|
||
void *get_ui_demo_hd(void)
|
||
{
|
||
return ui_data;
|
||
}
|
||
u8 get_take_photo_status(void)
|
||
{
|
||
return __this->get_photo;
|
||
}
|
||
|
||
void set_take_photo_status(u8 choice)
|
||
{
|
||
__this->get_photo = choice;
|
||
}
|
||
|
||
void set_take_photo_ok(void)
|
||
{
|
||
__this->get_photo = 0;
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*********************************************************
|
||
* PAGE_0 显示时钟表盘功能
|
||
*********************************************************/
|
||
static u32 sidebar_root = 0;
|
||
|
||
/*
|
||
* 表盘以及子控件参数更新
|
||
* */
|
||
int watch_child_cb(void *_ctrl, int id, int type)
|
||
{
|
||
switch (type) {
|
||
case CTRL_TYPE_WATCH:
|
||
/* watch_refresh(id, (struct ui_watch *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_PROGRESS:
|
||
/* progress_refresh(id, (struct ui_progress *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_MULTIPROGRESS:
|
||
/* multiprogress_refresh(id, (struct ui_multiprogress *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_TEXT:
|
||
/* text_refresh(id, (struct ui_text *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_NUMBER:
|
||
/* number_refresh(id, (struct ui_number *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_TIME:
|
||
/* time_refresh(id, (struct ui_time *)_ctrl); */
|
||
break;
|
||
|
||
case CTRL_TYPE_LAYOUT:
|
||
/* struct element *p; */
|
||
/* list_for_each_child_element(p, (struct element *)_ctrl) { */
|
||
/* if (watch_child_cb(p, p->id, ui_id2type(p->id))) { */
|
||
/* break; */
|
||
/* } */
|
||
/* } */
|
||
break;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
static void WATCH_timer(void *priv)
|
||
{
|
||
ui_get_child_by_id(WATCH, watch_child_cb);
|
||
|
||
struct element *elm = NULL;
|
||
|
||
/* if (sidebar_root) { */
|
||
/* elm = ui_core_get_element_by_id(sidebar_root); */
|
||
/* } */
|
||
|
||
|
||
if (!elm) {
|
||
elm = ui_core_get_element_by_id(WATCH);
|
||
}
|
||
|
||
if (elm) {
|
||
ui_core_redraw(elm);
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 表盘以及子控件onkey响应
|
||
* */
|
||
int watch_child_onkey(void *_ctrl, struct element_key_event *e)
|
||
{
|
||
/* struct element *elm = (struct element *)_ctrl; */
|
||
/* int type = ui_id2type(elm->id); */
|
||
|
||
#if 0
|
||
switch (type) {
|
||
case CTRL_TYPE_PROGRESS:
|
||
/* progress_onkey(_ctrl, e); */
|
||
break;
|
||
|
||
case CTRL_TYPE_MULTIPROGRESS:
|
||
/* multiprogress_onkey(_ctrl, e); */
|
||
break;
|
||
|
||
case CTRL_TYPE_TEXT:
|
||
/* text_onkey(_ctrl, e); */
|
||
break;
|
||
|
||
case CTRL_TYPE_NUMBER:
|
||
/* number_onkey(_ctrl, e); */
|
||
break;
|
||
|
||
case CTRL_TYPE_TIME:
|
||
/* time_onkey(_ctrl, e); */
|
||
break;
|
||
}
|
||
|
||
#endif
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int watch_child_ontouch(void *_ctrl, struct element_touch_event *e)
|
||
{
|
||
struct element *elm = (struct element *)_ctrl;
|
||
|
||
/* int type = ui_id2type(elm->id); */
|
||
|
||
|
||
/* switch (type) { */
|
||
/* case CTRL_TYPE_PROGRESS: */
|
||
/* progress_ontouch(_ctrl, e); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_MULTIPROGRESS: */
|
||
/* multiprogress_ontouch(_ctrl, e); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_TEXT: */
|
||
/* text_ontouch(_ctrl, e); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_NUMBER: */
|
||
/* number_ontouch(_ctrl, e); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_TIME: */
|
||
/* time_ontouch(_ctrl, e); */
|
||
/* break; */
|
||
/* default: */
|
||
/* break; */
|
||
/* } */
|
||
|
||
return 0;
|
||
}
|
||
struct watch_param {
|
||
int curr_watch_style;
|
||
FILE *view_file;
|
||
int find_animation;
|
||
int picture_num;
|
||
int curr_picture;
|
||
};
|
||
/*
|
||
* 表盘以及子控件onchange响应
|
||
* */
|
||
int watch_child_onchange(void *_ctrl, enum element_change_event event, void *arg)
|
||
{
|
||
/* struct element *elm = (struct element *)_ctrl; */
|
||
/* int type = ui_id2type(elm->id); */
|
||
|
||
/* switch (type) { */
|
||
/* case CTRL_TYPE_PROGRESS: */
|
||
/* progress_onchange(_ctrl, event, arg); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_MULTIPROGRESS: */
|
||
/* multiprogress_onchange(_ctrl, event, arg); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_TEXT: */
|
||
/* text_onchange(_ctrl, event, arg); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_NUMBER: */
|
||
/* number_onchange(_ctrl, event, arg); */
|
||
/* break; */
|
||
/* case CTRL_TYPE_TIME: */
|
||
/* time_onchange(_ctrl, event, arg); */
|
||
/* break; */
|
||
/* default: */
|
||
/* break; */
|
||
/* } */
|
||
|
||
return 0;
|
||
}
|
||
|
||
|
||
|
||
/* extern void ui_watch_tick(void *_watch); */
|
||
|
||
static int WATCH_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_watch *watch = (struct ui_watch *)ctr;
|
||
struct draw_context *dc = (struct draw_context *)arg;
|
||
struct element *elm = (struct element *)ctr;
|
||
static int timer = 0;
|
||
struct sys_time time;
|
||
char animpath[46];
|
||
static struct watch_param param = {0};
|
||
FILE *view_file;
|
||
u32 flag;
|
||
char *bg_path;
|
||
int timer_interval = 0;
|
||
union ui_control_info info;
|
||
void *hdl;
|
||
struct element_css *css;
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
printf("\n [ERROR] %s -[yuyu] %d\n", __FUNCTION__, __LINE__);
|
||
|
||
/* ui_watch_set_time(watch, time.hour % 12, time.min, time.sec); */
|
||
watch->hour = time.hour % 12;
|
||
watch->min = time.min;
|
||
watch->sec = time.sec;
|
||
/* ui_set_default_handler(watch_child_ontouch, watch_child_onkey, watch_child_onchange); */
|
||
timer_interval = 500;
|
||
|
||
/* ui_watch_tick(watch); */
|
||
/* param.curr_watch_style = -1; */
|
||
/* param.find_animation = false; */
|
||
/* param.curr_picture = 0; */
|
||
/* param.view_file = NULL; */
|
||
|
||
if (!timer) {
|
||
timer = sys_timer_add(NULL, WATCH_timer, timer_interval);
|
||
}
|
||
|
||
break;
|
||
|
||
case ON_CHANGE_SHOW:
|
||
|
||
break;
|
||
|
||
case ON_CHANGE_RELEASE:
|
||
|
||
break;
|
||
}
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(WATCH)
|
||
.onchange = WATCH_onchange,
|
||
/* .onkey = NULL, */
|
||
/* .ontouch = WATCH_ontouch, */
|
||
};
|
||
|
||
|
||
|
||
/*===========声音数字加减操作==============*/
|
||
static void sound_mub(int mub, char dir)//0加时间 1减时间
|
||
{
|
||
struct unumber timer;
|
||
|
||
timer.type = TYPE_NUM;
|
||
timer.numbs = 2;
|
||
|
||
if (dir) { //+
|
||
__this->play_mp3_sound_size++;
|
||
} else { //-
|
||
__this->play_mp3_sound_size--;
|
||
}
|
||
|
||
timer.number[0] = mub;
|
||
ui_number_update_by_id(__SOUND, &timer);
|
||
}
|
||
static void sound_mub_show_init(int mub)
|
||
{
|
||
struct unumber timer;
|
||
|
||
timer.type = TYPE_NUM;
|
||
timer.numbs = 2;
|
||
timer.number[0] = mub;
|
||
ui_number_update_by_id(__SOUND, &timer);
|
||
}
|
||
static void form_highlight(u32 id, int status)
|
||
{
|
||
struct element *elm = ui_core_get_element_by_id(id);
|
||
/* log_info("elm = %x.\n", elm); */
|
||
int ret1 = ui_core_highlight_element(elm, status);
|
||
/* log_info("ret1 = %d.\n", ret1); */
|
||
int ret2 = ui_core_redraw(elm->parent);
|
||
/* log_info("ret2 = %d.\n", ret2); */
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*===========日期时间=刷新时间设置界面==============*/
|
||
static void time_set_page(char day, char dir) //0加时间 1减时间 day时间选择
|
||
{
|
||
struct unumber timer;
|
||
|
||
timer.type = TYPE_NUM;
|
||
timer.numbs = 2;
|
||
|
||
if (dir) { //加时间
|
||
switch (day) {
|
||
case 0://年
|
||
test_rtc_time.year++;
|
||
timer.number[0] = test_rtc_time.year;
|
||
ui_number_update_by_id(__TIME1, &timer);
|
||
break;
|
||
|
||
case 1://月
|
||
test_rtc_time.month++;
|
||
|
||
if (test_rtc_time.month == 13) {
|
||
test_rtc_time.month = 1;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.month;
|
||
ui_number_update_by_id(__TIME2, &timer);
|
||
break;
|
||
|
||
case 2://日
|
||
test_rtc_time.day++;
|
||
|
||
if (test_rtc_time.day == 31) {
|
||
test_rtc_time.day = 1;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.day;
|
||
ui_number_update_by_id(__TIME3, &timer);
|
||
break;
|
||
|
||
case 3://时
|
||
test_rtc_time.hour++;
|
||
|
||
if (test_rtc_time.hour == 25) {
|
||
test_rtc_time.hour = 1;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.hour;
|
||
ui_number_update_by_id(__TIME4, &timer);
|
||
break;
|
||
|
||
case 4://分
|
||
test_rtc_time.min++;
|
||
|
||
if (test_rtc_time.min == 61) {
|
||
test_rtc_time.min = 1;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.min;
|
||
ui_number_update_by_id(__TIME5, &timer);
|
||
break;
|
||
|
||
case 5://退出
|
||
|
||
break;
|
||
}
|
||
} else { //减时间
|
||
switch (day) {
|
||
case 0://年
|
||
test_rtc_time.year--;
|
||
|
||
if (test_rtc_time.year == 0) {
|
||
test_rtc_time.year = 2021;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.year;
|
||
ui_number_update_by_id(__TIME1, &timer);
|
||
break;
|
||
|
||
case 1://月
|
||
test_rtc_time.month--;
|
||
|
||
if (test_rtc_time.month == 0) {
|
||
test_rtc_time.month = 12;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.month;
|
||
ui_number_update_by_id(__TIME2, &timer);
|
||
break;
|
||
|
||
case 2://日
|
||
test_rtc_time.day--;
|
||
|
||
if (test_rtc_time.day == 0) {
|
||
test_rtc_time.day = 31;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.day;
|
||
ui_number_update_by_id(__TIME3, &timer);
|
||
break;
|
||
|
||
case 3://时
|
||
test_rtc_time.hour--;
|
||
|
||
if (test_rtc_time.hour == 0) {
|
||
test_rtc_time.hour = 24;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.hour;
|
||
ui_number_update_by_id(__TIME4, &timer);
|
||
break;
|
||
|
||
case 4://分
|
||
test_rtc_time.min--;
|
||
|
||
if (test_rtc_time.min == 0) {
|
||
test_rtc_time.min = 60;
|
||
}
|
||
|
||
timer.number[0] = test_rtc_time.min;
|
||
ui_number_update_by_id(__TIME5, &timer);
|
||
break;
|
||
|
||
case 5://退出
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*===========刷新系统时间================*/
|
||
void undata_sys_time(void)
|
||
{
|
||
void *dev = NULL;
|
||
dev = dev_open("rtc", NULL);
|
||
dev_ioctl(dev, IOCTL_SET_SYS_TIME, (u32)&test_rtc_time);
|
||
dev_close(dev);
|
||
/* log_info("@@@@@@@@@@@@@@@@get_sys_time: %d-%d-%d %d:%d:%d\n", test_rtc_time.year, test_rtc_time.month, test_rtc_time.day, test_rtc_time.hour, test_rtc_time.min, test_rtc_time.sec); */
|
||
}
|
||
|
||
/*===========日期时间=刷新时间设置界面==============*/
|
||
void time_updata(void)
|
||
{
|
||
struct unumber timer;
|
||
|
||
timer.type = TYPE_NUM;
|
||
timer.numbs = 2;
|
||
timer.number[0] = test_rtc_time.year;
|
||
ui_number_update_by_id(__TIME1, &timer);
|
||
|
||
timer.number[0] = test_rtc_time.month;
|
||
ui_number_update_by_id(__TIME2, &timer);
|
||
|
||
timer.number[0] = test_rtc_time.day;
|
||
ui_number_update_by_id(__TIME3, &timer);
|
||
|
||
timer.number[0] = test_rtc_time.hour;
|
||
ui_number_update_by_id(__TIME4, &timer);
|
||
|
||
timer.number[0] = test_rtc_time.min;
|
||
ui_number_update_by_id(__TIME5, &timer);
|
||
|
||
/*timer.number[0] = test_rtc_time.sec;*/
|
||
timer.number[0] = 00;
|
||
ui_number_update_by_id(__TIME6, &timer);
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*==================UI_camera时间显示==================*/
|
||
static void set_rtc_init_time(void)
|
||
{
|
||
void *dev = NULL;
|
||
/* 打开RTC设备 */
|
||
dev = dev_open("rtc", NULL);
|
||
/* 赋值时间信息 */
|
||
test_rtc_time.year = 2021;
|
||
test_rtc_time.month = 5;
|
||
test_rtc_time.day = 19;
|
||
test_rtc_time.hour = 11;
|
||
test_rtc_time.min = 43;
|
||
test_rtc_time.sec = 0;
|
||
/* 设置时间信息 */
|
||
dev_ioctl(dev, IOCTL_SET_SYS_TIME, (u32)&test_rtc_time);
|
||
dev_close(dev);
|
||
}
|
||
static void get_rtc_time(void)
|
||
{
|
||
void *dev = NULL;
|
||
/* 打开RTC设备 */
|
||
dev = dev_open("rtc", NULL);
|
||
/* 获取时间信息 */
|
||
dev_ioctl(dev, IOCTL_GET_SYS_TIME, (u32)&test_rtc_time);
|
||
/* 打印时间信息 */
|
||
/*log_info("get_sys_time: %d-%d-%d %d:%d:%d\n", test_rtc_time.year, test_rtc_time.month, test_rtc_time.day, test_rtc_time.hour, test_rtc_time.min, test_rtc_time.sec);*/
|
||
dev_close(dev);
|
||
}
|
||
|
||
static void timer_change_handler(void *priv)
|
||
{
|
||
void *dev = NULL;
|
||
static u32 sec = 0;
|
||
struct utime time_r;
|
||
|
||
if (!__this->init_flog) {
|
||
dev = dev_open("rtc", NULL);
|
||
/* 获取时间信息 */
|
||
dev_ioctl(dev, IOCTL_GET_SYS_TIME, (u32)&test_rtc_time);
|
||
|
||
/* log_info("get_sys_time: %d-%d-%d %d:%d:%d\n", test_rtc_time.year, test_rtc_time.month, test_rtc_time.day, test_rtc_time.hour, test_rtc_time.min, test_rtc_time.sec); */
|
||
time_r.year = test_rtc_time.year;
|
||
time_r.month = test_rtc_time.month;
|
||
time_r.day = test_rtc_time.day;
|
||
time_r.hour = test_rtc_time.hour;
|
||
time_r.min = test_rtc_time.min;
|
||
time_r.sec = test_rtc_time.sec;
|
||
|
||
ui_time_update_by_id(BASEFORM_2, &time_r);
|
||
/* 关闭RTC设备 */
|
||
dev_close(dev);
|
||
}
|
||
}
|
||
|
||
static int timer_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_time *time = (struct ui_time *)ctr;
|
||
static u8 init_flog = 0;
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
if (!init_flog) {
|
||
init_flog = 1;
|
||
log_info("!!!!!!!!!!!!!!!!!init");
|
||
set_rtc_init_time();
|
||
__this->time_time_id = sys_timer_add(NULL, timer_change_handler, 1000);
|
||
}
|
||
|
||
break;
|
||
|
||
case ON_CHANGE_HIDE:
|
||
break;
|
||
|
||
case ON_CHANGE_SHOW_PROBE:
|
||
break;
|
||
|
||
case ON_CHANGE_SHOW_POST:
|
||
break;
|
||
|
||
default:
|
||
return false;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(BASEFORM_2)
|
||
.onchange = timer_onchange,
|
||
};
|
||
/*****************end**********************/
|
||
|
||
/*==================battery电池图标显示==================*/
|
||
static void battery_change_handler(void *priv)
|
||
{
|
||
static u8 percent = 0;
|
||
ui_battery_level_change(percent, 0);
|
||
percent += 10;
|
||
|
||
if (percent >= 120) {
|
||
percent = 0;
|
||
}
|
||
}
|
||
|
||
static int battery_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_battery *battery = (struct ui_battery *)ctr;
|
||
static u32 timer = 0;
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
if (!timer) {
|
||
timer = sys_timer_add(NULL, battery_change_handler, 1000); //开启进入动态电池电量显示
|
||
}
|
||
|
||
break;
|
||
|
||
case ON_CHANGE_RELEASE:
|
||
if (timer) {
|
||
sys_timer_del(timer);
|
||
timer = 0;
|
||
}
|
||
|
||
break;
|
||
|
||
default:
|
||
return false;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(BASEFORM_4)
|
||
.onchange = battery_onchange,
|
||
};
|
||
/*****************end**********************/
|
||
|
||
|
||
/*=============SD卡图标===============*/
|
||
static void SD_car_image_change(char sd_in)
|
||
{
|
||
if (sd_in) {
|
||
ui_pic_show_image_by_id(BASEFORM_103, 0);
|
||
} else {
|
||
ui_pic_show_image_by_id(BASEFORM_103, 1);
|
||
}
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*============录像红点闪烁以及录像控制===============*/
|
||
static void display_red_dot(void *priv)
|
||
{
|
||
static u8 time = 0;
|
||
time++;
|
||
|
||
if (time == 2) {
|
||
time = 0;
|
||
}
|
||
|
||
log_info(">>>>>>>>>red_dot=%d.\n", time);
|
||
ui_pic_show_image_by_id(BASEFORM_6, time);
|
||
}
|
||
|
||
static void reset_ui_video_time(void)
|
||
{
|
||
struct utime time_r;
|
||
time_r.hour = 0;
|
||
time_r.min = 0;
|
||
time_r.sec = 0;
|
||
ui_time_update_by_id(BASEFORM_5, &time_r);
|
||
}
|
||
static void ui_video_rec_display(void)
|
||
{
|
||
struct utime time_r;
|
||
static u8 run_flog = 0;
|
||
log_info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ui_video_star");
|
||
|
||
if (!run_flog) {
|
||
run_flog = 1;
|
||
reset_ui_video_time();
|
||
ui_show_main(BASEFORM_104);
|
||
ui_show_main(BASEFORM_5);
|
||
log_info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>add_time");
|
||
ui_play_mp3(VIDEIO_START_MP3);
|
||
__this->red_time_id = sys_timer_add(NULL, display_red_dot, 1000);
|
||
} else {
|
||
log_info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>ui_video_stop");
|
||
ui_hide_main(BASEFORM_104);
|
||
ui_hide_main(BASEFORM_5);
|
||
ui_play_mp3(VIDEIO_STOP_MP3);
|
||
run_flog = 0;
|
||
sys_timer_del(__this->red_time_id);
|
||
ui_pic_show_image_by_id(BASEFORM_6, 0);
|
||
__this->red_time_id = 0;
|
||
}
|
||
}
|
||
//UI_camera录像控制
|
||
static void ui_video_rec_contrl_doing()
|
||
{
|
||
video_rec_control_doing();
|
||
}
|
||
|
||
/*****************end**********************/
|
||
|
||
/*===========文件预览===============*/
|
||
|
||
/*********************************************************************************
|
||
* 预览框回调
|
||
*********************************************************************************/
|
||
#if 0
|
||
static int browser_open_file(int p)
|
||
{
|
||
struct intent it;
|
||
FILE *fp = (FILE *)p;
|
||
if (fp) {
|
||
init_intent(&it);
|
||
it.name = "video_dec";
|
||
it.action = ACTION_VIDEO_DEC_OPEN_FILE;
|
||
it.data = (const char *)fp;
|
||
it.exdata = (u32)__this->path;
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
static int browser_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_browser *bro = ctr;
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
bro->order = 1;
|
||
bro->path = __this->path;
|
||
/* __this->browser->path = cPATH[__this->dir]; */
|
||
bro->ftype = "-tMOVJPGAVI -st -d";
|
||
bro->show_mode = 1;
|
||
|
||
if (__this->cur_file) {
|
||
fclose(__this->cur_file);
|
||
__this->cur_file = 0;
|
||
}
|
||
if (__this->page) {
|
||
ui_file_browser_set_page(bro, __this->page);
|
||
}
|
||
if (__this->item) {
|
||
ui_file_browser_highlight_item(bro, 0, false);
|
||
ui_file_browser_highlight_item(bro, __this->item, true);
|
||
}
|
||
break;
|
||
case ON_CHANGE_FIRST_SHOW:
|
||
__this->if_in_bro = 1;
|
||
sys_key_event_takeover(true, false);
|
||
break;
|
||
case ON_CHANGE_SHOW_COMPLETED:
|
||
if (!ui_file_browser_page_num(bro)) {
|
||
__this->no_file = 1;
|
||
/* __dec_msg_show(BOX_MSG_NO_FILE, 0); */
|
||
} else {
|
||
__this->no_file = 0;
|
||
/* __dec_msg_hide(BOX_MSG_NO_FILE); */
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
return false;
|
||
}
|
||
static int browser_onkey(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_browser *_browser = ctr;
|
||
struct ui_file_attrs attrs;
|
||
int _file_num = 0;
|
||
__this->page = ui_file_browser_cur_page(_browser, &_file_num);
|
||
__this->item = ui_file_browser_cur_item(_browser);
|
||
|
||
switch (e->event) {
|
||
case KEY_EVENT_CLICK:
|
||
switch (e->value) {
|
||
case KEY_MODE:
|
||
//返回上级目录
|
||
if (strcmp(__this->path, CONFIG_DEC_ROOT_PATH)) {
|
||
__this->if_in_bro = 1;
|
||
int len = strlen(__this->path);
|
||
len--;
|
||
while (--len) {
|
||
if (__this->path[len] != '/') {
|
||
__this->path[len] = 0;
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
printf("path = %s\n", __this->path);
|
||
/* ui_text_set_str_by_id(TEXT_PATH_BROWSER, "ascii", __this->path + sizeof(CONFIG_ROOT_PATH) - 1); */
|
||
ui_file_browser_set_dir_by_id(BROWSER, __this->path, "-tMOVJPGAVI -st -d");
|
||
return true;
|
||
} else {
|
||
log_d("root ptah");
|
||
sys_key_event_takeover(false, true);
|
||
sys_key_event_takeover(false, false);
|
||
__this->if_in_bro = 0;
|
||
}
|
||
break;
|
||
case KEY_OK:
|
||
if (_file_num == 0) {
|
||
log_d("no file\n");
|
||
return true;
|
||
}
|
||
printf("item=%d \n", __this->item);
|
||
ui_file_browser_get_file_attrs(_browser, __this->item, &attrs); //获取文件属性
|
||
if (attrs.ftype == UI_FTYPE_DIR) {
|
||
//进入文件夹
|
||
if (__this->path == 0) {
|
||
log_e("DIR ERR\n");
|
||
return false;
|
||
}
|
||
strcat(__this->path, attrs.fname);
|
||
int len = strlen(__this->path);
|
||
__this->path[len] = '/';
|
||
__this->path[len + 1] = '\0';
|
||
|
||
printf("path=%s\n", __this->path);
|
||
#ifdef CONFIG_EMR_DIR_ENABLE
|
||
if (strcmp(__this->path, CONFIG_DEC_PATH_1) == 0
|
||
|| strcmp(__this->path, CONFIG_DEC_PATH_2) == 0
|
||
|| strcmp(__this->path, CONFIG_DEC_PATH_3) == 0) {
|
||
log_d("dec_path");
|
||
ui_file_browser_set_dir_by_id(BROWSER, __this->path, "-tMOVJPGAVI -st -r");
|
||
} else {
|
||
ui_file_browser_set_dir_by_id(BROWSER, __this->path, "-tMOVJPGAVI -st -d");
|
||
}
|
||
#else
|
||
ui_file_browser_set_dir_by_id(BROWSER, __this->path, "-tMOVJPGAVI -st -d");
|
||
#endif
|
||
|
||
/* ui_text_set_str_by_id(TEXT_PATH_BROWSER, "ascii", __this->path + sizeof(CONFIG_ROOT_PATH) - 1); */
|
||
__this->if_in_bro = 1;
|
||
return true;
|
||
} else if (attrs.ftype == UI_FTYPE_IMAGE || attrs.ftype == UI_FTYPE_VIDEO) {
|
||
//播放文件
|
||
printf("path=%s, num=%d\n", __this->path, attrs.file_num);
|
||
if (attrs.attr.attr & F_ATTR_RO) {
|
||
__this->is_lock = 1;
|
||
} else {
|
||
__this->is_lock = 0;
|
||
}
|
||
FILE *fp = ui_file_browser_open_file(_browser, __this->item);
|
||
__this->sum_time.sec = 0;
|
||
__this->sum_time.min = 0;
|
||
__this->sum_time.hour = 0;
|
||
/* ui_hide(LAYER_BROWSER); */
|
||
/* ui_show(LAYER_UP_REP); */
|
||
ui_set_call(browser_open_file, (int)fp);
|
||
__this->if_in_bro = 0;
|
||
return true;
|
||
}
|
||
break;
|
||
case KEY_MENU:
|
||
if (_file_num == 0) {
|
||
log_d("no file\n");
|
||
return false;
|
||
}
|
||
ui_file_browser_get_file_attrs(_browser, __this->item, &attrs); //获取文件属性
|
||
if (attrs.ftype == UI_FTYPE_IMAGE || attrs.ftype == UI_FTYPE_VIDEO) {
|
||
__dec_msg_hide(0);
|
||
__this->cur_file = ui_file_browser_open_file(_browser, __this->item);
|
||
/* ui_hide(LAYER_UP_REP); */
|
||
/* ui_hide(LAYER_BROWSER); */
|
||
/* ui_show(LAYER_MENU_REP); */
|
||
/* ui_show(LAYOUT_MN_REP_REP); */
|
||
__this->menu_status = 1;
|
||
return true;
|
||
}
|
||
break;
|
||
}
|
||
default:
|
||
if (e->event == KEY_EVENT_LONG && e->value == KEY_POWER) {
|
||
sys_key_event_takeover(false, true);
|
||
/* puts("\n take off msg power rep\n"); */
|
||
return false;
|
||
}
|
||
break;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(BROWSER)
|
||
.onchange = browser_onchange,
|
||
.onkey = browser_onkey,
|
||
};
|
||
#endif
|
||
|
||
/*****************end**********************/
|
||
|
||
/*===========视频回放ui================*/
|
||
static const char ascii_str[] = "ABCDEFGHIJK";
|
||
|
||
static void ui_video_playback_show_text(char *file_name)
|
||
{
|
||
/* ui_text_set_text_by_id(BASEFORM_64, file_name, strlen(file_name), FONT_DEFAULT); */
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*===========照片回放ui================*/
|
||
static void ui_photo_playback_show_text(char *file_name)
|
||
{
|
||
ui_text_set_text_by_id(BASEFORM_68, file_name, strlen(file_name), FONT_DEFAULT);
|
||
}
|
||
void photo_find_to_show_lcd(char dir, char run_flog)//选择文件的方向dir = 1 nextfile 0you know,last ,run_flog = 1start, run_flog = 0end
|
||
{
|
||
static FILE *fd = NULL;
|
||
static struct vfscan *fs = NULL;
|
||
static u8 run_time = 0;
|
||
u32 f_size;
|
||
char path[64];
|
||
char *buf_img = NULL;
|
||
|
||
if (run_time == 0) { // run one time start
|
||
run_time = 1;
|
||
strcpy(path, CONFIG_REC_PATH_0);
|
||
fs = fscan(path, "-tJPG -st", 0);//筛选出JPG图片 每次调用这个都会重新指向第一个
|
||
|
||
if (fs == NULL) {
|
||
log_info("[error]>>>>>fs = NULL");
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (run_flog == 0) { //run end
|
||
run_time = 0;
|
||
free(buf_img);
|
||
fscan_release(fs);
|
||
buf_img = NULL;
|
||
fs = NULL;
|
||
fd = NULL;
|
||
run_time = 0;
|
||
return;
|
||
}
|
||
|
||
if (fd == NULL) {
|
||
fd = fselect(fs, FSEL_FIRST_FILE, 0);//文件选择第一个
|
||
} else {
|
||
if (dir) { //next
|
||
fd = fselect(fs, FSEL_NEXT_FILE, 0);//文件选择下一个
|
||
} else {
|
||
fd = fselect(fs, FSEL_PREV_FILE, 0);//
|
||
if (fd == NULL) {
|
||
fd = fselect(fs, FSEL_LAST_FILE, 0);//
|
||
}
|
||
}
|
||
}
|
||
|
||
if (fd == NULL) {
|
||
log_info("[error]>>>>>>>>>>>>>>>>fd == NULL");
|
||
return;
|
||
}
|
||
|
||
f_size = flen(fd);
|
||
buf_img = malloc(f_size);
|
||
fread(buf_img, f_size, 1, fd);
|
||
fclose(fd);
|
||
log_info("\n [ERROR] %s -[yuyu] %d\n", __FUNCTION__, __LINE__);
|
||
/* get_jpg_show_lcd(buf_img, f_size); */
|
||
free(buf_img);
|
||
}
|
||
|
||
|
||
/*****************end**********************/
|
||
extern int avi_net_playback_unpkg_init(FILE *fd, u8 state);//state : 0 preview , 1 playbackh
|
||
void yuv420p_quto_rgb565(unsigned char *yuvBuffer_in, unsigned char *rgbBuffer_out, int width, int height);
|
||
int avi_video_get_frame(FILE *fd, int offset_num, u8 *buf, u32 buf_len, u8 state);
|
||
#define IDX_00DC ntohl(0x30306463)
|
||
#define IDX_01WB ntohl(0x30317762)
|
||
#define IDX_00WB ntohl(0x30307762)
|
||
/*int start_play_video(const char *path)*/
|
||
/*==========视频回放ui=================*/
|
||
static void video_find_to_show_lcd(char dir, run_flog)//选择文件的方向
|
||
{
|
||
int ret;
|
||
char *fbuf = NULL;
|
||
char *yuv = NULL;
|
||
char *cy, *cb, *cr;
|
||
int fbuflen = 50 * 1024;
|
||
int num = 0;
|
||
int pix;
|
||
char ytype;
|
||
int yuv_len;
|
||
|
||
FILE *fd = NULL;
|
||
char path[64];
|
||
struct vfscan *fs = NULL;
|
||
static char *buf_img = NULL;
|
||
static u8 run_time = 0;
|
||
|
||
if (buf_img == NULL) {
|
||
buf_img = malloc(320 * 240 * 2);
|
||
fbuf = malloc(fbuflen);
|
||
}
|
||
|
||
if (run_time == 0) {
|
||
run_time = 1;
|
||
strcpy(path, CONFIG_REC_PATH_0);
|
||
fs = fscan(path, "-tAVI -st", 0);//筛选出AVI图片 每次调用这个都会重新指向第一个
|
||
|
||
if (fs == NULL) {
|
||
log_info("[error]>>>>>fs = NULL");
|
||
return;
|
||
}
|
||
|
||
}
|
||
|
||
if (run_flog == 0) { //run end
|
||
run_time = 0;
|
||
free(buf_img);
|
||
fscan_release(fs);
|
||
buf_img = NULL;
|
||
fs = NULL;
|
||
fd = NULL;
|
||
run_time = 0;
|
||
return;
|
||
}
|
||
|
||
if (fd == NULL) {
|
||
fd = fselect(fs, FSEL_FIRST_FILE, 0);//文件选择第一个
|
||
} else {
|
||
if (dir) { //next
|
||
fd = fselect(fs, FSEL_NEXT_FILE, 0);//文件选择下一个
|
||
} else {
|
||
fd = fselect(fs, FSEL_PREV_FILE, 0);//
|
||
|
||
if (fd == NULL) {
|
||
fd = fselect(fs, FSEL_LAST_FILE, 0);//
|
||
}
|
||
}
|
||
}
|
||
|
||
if (fd == NULL) {
|
||
log_info("[error]>>>>>>>>>>>>>>>>fd == NULL");
|
||
return;
|
||
}
|
||
|
||
ret = avi_net_playback_unpkg_init(fd, 1); //解码初始化,最多10分钟视频
|
||
|
||
if (ret) {
|
||
log_info("avi_net_playback_unpkg_init err!!!\n");
|
||
}
|
||
|
||
log_info("@@@>>>>>>>>>>video_start");
|
||
|
||
while (1) {
|
||
ret = avi_video_get_frame(fd, ++num, fbuf, fbuflen, 1); //全回放功能获取帧
|
||
|
||
if (ret > 0) {
|
||
struct jpeg_image_info info = {0};
|
||
struct jpeg_decode_req req = {0};
|
||
u32 *head = (u32 *)fbuf;
|
||
u8 *dec_buf = fbuf;
|
||
u32 fblen = ret;
|
||
|
||
if (*head == IDX_00DC || *head == IDX_01WB || *head == IDX_00WB) {
|
||
fblen -= 8;
|
||
dec_buf += 8;
|
||
}
|
||
|
||
info.input.data.buf = dec_buf;
|
||
info.input.data.len = fblen;
|
||
|
||
if (jpeg_decode_image_info(&info)) { //获取JPEG图片信息
|
||
log_info("jpeg_decode_image_info err\n");
|
||
break;
|
||
} else {
|
||
switch (info.sample_fmt) {
|
||
case JPG_SAMP_FMT_YUV444:
|
||
ytype = 1;
|
||
break;//444
|
||
|
||
case JPG_SAMP_FMT_YUV420:
|
||
ytype = 4;
|
||
break;//420
|
||
|
||
default:
|
||
ytype = 2;
|
||
}
|
||
|
||
pix = info.width * info.height;
|
||
yuv_len = pix + pix / ytype * 2;
|
||
|
||
if (!yuv) {
|
||
yuv = malloc(yuv_len);
|
||
|
||
if (!yuv) {
|
||
log_info("yuv malloc err len : %d , width : %d , height : %d \n", yuv_len, info.width, info.height);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/*log_info("width : %d , height : %d \n", info.width, info.height);*/
|
||
|
||
cy = yuv;
|
||
cb = cy + pix;
|
||
cr = cb + pix / ytype;
|
||
|
||
req.input_type = JPEG_INPUT_TYPE_DATA;
|
||
req.input.data.buf = info.input.data.buf;
|
||
req.input.data.len = info.input.data.len;
|
||
req.buf_y = cy;
|
||
req.buf_u = cb;
|
||
req.buf_v = cr;
|
||
req.buf_width = info.width;
|
||
req.buf_height = info.height;
|
||
req.out_width = info.width;
|
||
req.out_height = info.height;
|
||
req.output_type = JPEG_DECODE_TYPE_DEFAULT;
|
||
req.bits_mode = BITS_MODE_UNCACHE;
|
||
/*req.bits_mode = BITS_MODE_CACHE;*/
|
||
|
||
ret = jpeg_decode_one_image(&req);//JPEG转YUV解码
|
||
|
||
if (ret) {
|
||
log_info("jpeg decode err !!\n");
|
||
break;
|
||
}
|
||
|
||
YUV420p_Soft_Scaling(yuv, NULL, 640, 480, 320, 240);
|
||
yuv420p_quto_rgb565(yuv, buf_img, 320, 240);
|
||
/* lcd_show_frame_1(buf_img, (320 * 240 * 2));//240*320*2=153600 */
|
||
log_info("\n [ERROR] %s -[yuyu] %d\n", __FUNCTION__, __LINE__);
|
||
}
|
||
} else {
|
||
log_info("@@@>>>>>>>>>>video_end");
|
||
break ;
|
||
}
|
||
}
|
||
|
||
run_time = 0; //这里没有做切视频播放 请参考照片切换
|
||
free(buf_img);
|
||
fscan_release(__this->fs);
|
||
buf_img = NULL;
|
||
__this->fs = NULL;
|
||
fd = NULL;
|
||
run_time = 0;
|
||
}
|
||
/*****************end**********************/
|
||
|
||
/*==========ui界面:主界面=================*/
|
||
static int ui_page1_main(void *_grid, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)_grid;
|
||
int err;
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
(grid)->hi_index = __this->page_x;
|
||
(grid)->page_mode = 1;
|
||
break;
|
||
|
||
case ON_CHANGE_RELEASE:
|
||
break;
|
||
|
||
default:
|
||
return FALSE;
|
||
}
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(BASEFORM_32)
|
||
.onchange = ui_page1_main,
|
||
};
|
||
/*****************end**********************/
|
||
|
||
/*==========显示某个界面===============*/
|
||
static void show_page(int id)
|
||
{
|
||
ui_hide_curr_main(); //关闭上一个画面
|
||
ui_show_main(id);
|
||
}
|
||
/*****************end**********************/
|
||
static void ui_demo_check_system_status(void)
|
||
{
|
||
os_taskq_post(POST_TASK_NAME, 1, UI_EVENT_SD_IN_OUT);
|
||
}
|
||
|
||
static void ui_demo(void *priv)
|
||
{
|
||
int msg[32];
|
||
//初始化demo使用的变量
|
||
ui_data = (struct ui_demo_date_hdl *)calloc(1, sizeof(struct ui_demo_date_hdl));
|
||
//设置全局提示音音量
|
||
__this->play_mp3_sound_size = 30;
|
||
//设置定时器定时检查系统状态
|
||
__this->ui_check_id = sys_timer_add(NULL, ui_demo_check_system_status, 200);
|
||
//初始化摄像头
|
||
camera_to_lcd_init(0);
|
||
//初始化ui服务和lcd
|
||
user_ui_lcd_init();
|
||
|
||
//如果第一张图像是全屏的图像系统会自己判断方向
|
||
|
||
//开机动画 20为延时 200ms每帧
|
||
open_animation(1);
|
||
|
||
//设置图像合成模式
|
||
set_lcd_show_data_mode(UI_CAMERA);
|
||
//ui显示界面
|
||
ui_show_main(PAGE_0);
|
||
|
||
while (1) {
|
||
os_taskq_pend("taskq", msg, ARRAY_SIZE(msg));
|
||
|
||
switch (msg[1]) {
|
||
case UI_EVENT_VIDEO_START_STOP://录像启停
|
||
if (storage_device_ready()) {
|
||
ui_video_rec_display();
|
||
ui_video_rec_contrl_doing();
|
||
} else {
|
||
ui_play_mp3(PLEASE_INSERT_SD_MP3);
|
||
}
|
||
|
||
break;
|
||
|
||
case UI_EVENT_COMPLETE_RECORD://完成录像
|
||
reset_ui_video_time();
|
||
break;
|
||
|
||
case UI_EVENT_TAKE_PHOTO://拍照控制
|
||
if (storage_device_ready()) {
|
||
ui_show_main(BASEFORM_108);
|
||
if (get_video_rec_status()) { //如果开了录像就走VIDEO的视频录取拿照片
|
||
video_rec_take_photo();
|
||
} else {//如果没有开录像就走GET_YUV_DATA去获取照片
|
||
/* __this->get_photo = 1; */
|
||
}
|
||
ui_play_mp3(TAKE_PHOTO_MP3);
|
||
os_time_dly(10);
|
||
ui_hide_main(BASEFORM_108);
|
||
} else {
|
||
ui_play_mp3(PLEASE_INSERT_SD_MP3);
|
||
}
|
||
|
||
break;
|
||
|
||
case UI_EVENT_SD_IN_OUT://SD卡事件
|
||
if (storage_device_ready()) {
|
||
if (__this->status_sd) {
|
||
__this->status_sd = 0;
|
||
SD_car_image_change(1);
|
||
ui_play_mp3(SD_IN_MP3);
|
||
}
|
||
} else {
|
||
if (!__this->status_sd) {
|
||
__this->status_sd = 1;
|
||
SD_car_image_change(0);
|
||
ui_play_mp3(SD_OUT_MP3);
|
||
}
|
||
}
|
||
|
||
break;
|
||
|
||
case UI_EVENT_POWER_CHECK://供电检查
|
||
|
||
break;
|
||
|
||
case UI_EVENT_IN_SET_MODE://进入设置模式
|
||
|
||
break;
|
||
|
||
case UI_EVENT_IN_VIEW://进入文件预览
|
||
|
||
break;
|
||
|
||
case UI_EVENT_IN_TIME://进入待机屏保
|
||
|
||
break;
|
||
}
|
||
|
||
#if 0
|
||
if (get_lcd_show_deta_mode() == ui_user) {
|
||
if (choice_photo_flog == 1) { //start init
|
||
choice_photo_flog = 0;
|
||
photo_find_to_show_lcd(1, 1);
|
||
}
|
||
|
||
if (choice_photo_flog == 2) { //photo next
|
||
choice_photo_flog = 0;
|
||
photo_find_to_show_lcd(1, 1);
|
||
}
|
||
|
||
if (choice_photo_flog == 3) { //photo last
|
||
choice_photo_flog = 0;
|
||
photo_find_to_show_lcd(0, 1);
|
||
}
|
||
|
||
if (choice_photo_flog == 4) { //out end
|
||
choice_photo_flog = 0;
|
||
photo_find_to_show_lcd(0, 0);
|
||
}
|
||
|
||
if (choice_video_flog == 1) {
|
||
choice_video_flog = 0;
|
||
video_find_to_show_lcd(1, 1);
|
||
}
|
||
}
|
||
#endif
|
||
}
|
||
}
|
||
|
||
static int ui_demo_task_init(void)
|
||
{
|
||
puts("ui_demo_task_init \n\n");
|
||
return thread_fork("ui_demo", 11, 1024, 32, 0, ui_demo, NULL);
|
||
}
|
||
platform_initcall(ui_demo_task_init);
|
||
|
||
/*****************end**********************/
|
||
|
||
/*==========ui按键控制============*/
|
||
int ui_key_control(u8 value, u8 event)//纯ui按键控制
|
||
{
|
||
int msg;
|
||
|
||
switch (event) {
|
||
case KEY_EVENT_CLICK:
|
||
switch (value) {
|
||
case KEY_K1:
|
||
log_info(">>>>>>>>>>>>>>>>ui_key1");//向下
|
||
|
||
if (__this->page_y == 0) {
|
||
__this->page_x++;
|
||
|
||
if (__this->page_x == 6) {
|
||
__this->page_x = 0;
|
||
}
|
||
|
||
log_info(">>>>>>>>>>page_x=%d", __this->page_x);
|
||
ui_key_msg_post(KEY_DOWN); //这里的按键下是发命令给底层UI控制控件向下 不是按键的方向
|
||
} else { //表示已经进入二级界面
|
||
switch (__this->page_x) {
|
||
case 0: //图片质量
|
||
__this->page2_x++;
|
||
|
||
if (__this->page2_x == 4) {
|
||
__this->page2_x = 0;
|
||
}
|
||
|
||
ui_key_msg_post(KEY_DOWN);//这里的按键下是发命令给底层UI控制控件向下 不是按键的方向
|
||
break;
|
||
|
||
case 1: //语言
|
||
__this->language_indx ^= 1;
|
||
ui_text_show_index_by_id(BASEFORM_11, __this->language_indx);//切换语言文字
|
||
break;
|
||
|
||
case 2: //日期时间
|
||
if (__this->page2_y) { //二级菜单确认
|
||
time_set_page(__this->page2_x, 0);//加时间操作
|
||
} else { //二级菜单退出确认
|
||
__this->page2_x++;
|
||
|
||
if (__this->page2_x == 6) {
|
||
__this->page2_x = 0;
|
||
}
|
||
|
||
ui_key_msg_post(KEY_DOWN); //这里的按键下是发命令给底层UI控制控件向下 不是按键的方向
|
||
}
|
||
|
||
break;
|
||
|
||
case 3: //声音
|
||
sound_mub(__this->play_mp3_sound_size, 0);
|
||
|
||
break;
|
||
|
||
case 4: //录像回放
|
||
/* choice_video_flog = 1; */
|
||
|
||
break;
|
||
|
||
case 5: //相册
|
||
/* choice_photo_flog = 2; */
|
||
break;
|
||
}
|
||
}
|
||
|
||
break;
|
||
|
||
case KEY_K2:
|
||
log_info(">>>>>>>>>>>>>>>ui_key1");//向上
|
||
|
||
if (__this->page_y == 0) {
|
||
__this->page_x--;
|
||
|
||
if (__this->page_x == 255) {
|
||
__this->page_x = 5;
|
||
}
|
||
|
||
log_info(">>>>>>>>>>page_x=%d", __this->page_x);
|
||
ui_key_msg_post(KEY_UP);
|
||
} else { //表示已经进入二级界面
|
||
switch (__this->page_x) {
|
||
case 0: //图片质量
|
||
__this->page2_x--;
|
||
|
||
if (__this->page2_x == 255) {
|
||
__this->page2_x = 3;
|
||
}
|
||
|
||
ui_key_msg_post(KEY_UP);
|
||
break;
|
||
|
||
case 1: //语言
|
||
__this->language_indx ^= 1;
|
||
ui_text_show_index_by_id(BASEFORM_11, __this->language_indx);//切换语言文字
|
||
break;
|
||
|
||
case 2: //日期时间
|
||
if (__this->page2_y) { //二级菜单确认
|
||
time_set_page(__this->page2_x, 1);//减时间操作
|
||
} else { //二级菜单退出确认
|
||
__this->page2_x--;
|
||
|
||
if (__this->page2_x == 255) {
|
||
__this->page2_x = 5;
|
||
}
|
||
|
||
ui_key_msg_post(KEY_UP);
|
||
}
|
||
|
||
break;
|
||
|
||
case 3: //声音
|
||
sound_mub(__this->play_mp3_sound_size, 1);
|
||
break;
|
||
|
||
case 4: //录像回放
|
||
|
||
break;
|
||
|
||
case 5: //相册
|
||
/* choice_photo_flog = 3; */
|
||
break;
|
||
}
|
||
}
|
||
|
||
break;
|
||
|
||
case KEY_K3:
|
||
log_info(">>>>>>>>>>>>>>>>ui_key3");//确定
|
||
|
||
switch (__this->page_x) { //目前在一级菜单 二级菜单控制 note.page_y = 0; 表示退出二级菜单
|
||
case 0: //图片质量
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
|
||
break;
|
||
|
||
case 1: //语言 //后面可以进行高亮语言文字
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
|
||
break;
|
||
|
||
case 2: //日期时间
|
||
__this->page_y = 1;
|
||
|
||
if (__this->init_flog == 1) { //初始化完后在点确认//才能++;
|
||
__this->page2_y++;
|
||
}
|
||
|
||
if (__this->page2_y == 2) { //二级菜单中确认控制
|
||
__this->page2_y = 0;
|
||
}
|
||
|
||
if (__this->page2_x == 5) { //完成秒设置后退出
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
}
|
||
|
||
break;
|
||
|
||
case 3: //声音
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
|
||
break;
|
||
|
||
case 4: //录像回放
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
|
||
break;
|
||
|
||
case 5: //相册
|
||
__this->page_y++;
|
||
|
||
if (__this->page_y == 2) {
|
||
__this->page_y = 0;
|
||
}
|
||
|
||
break;
|
||
}
|
||
|
||
if (__this->page_y == 1) { //进入二级菜单
|
||
switch (__this->page_x) {
|
||
case 0: //图片质量
|
||
show_page(PAGE_4);
|
||
break;
|
||
|
||
case 1: //语言 //后面可以进行高亮语言文字
|
||
break;
|
||
|
||
case 2: //日期时间
|
||
if (__this->init_flog == 0) {
|
||
__this->init_flog = 1;
|
||
show_page(PAGE_3);
|
||
get_rtc_time();
|
||
time_updata();
|
||
}
|
||
|
||
break;
|
||
|
||
case 3: //声音
|
||
if (__this->init_flog == 0) {
|
||
__this->init_flog = 1;
|
||
form_highlight(BASEFORM_69, __this->init_flog); //自定义数字不支持高亮
|
||
}
|
||
break;
|
||
|
||
case 4: //录像回放
|
||
set_lcd_show_data_mode(UI_USER);
|
||
show_page(PAGE_5);
|
||
/* ui_video_playback_show_text("video"); */
|
||
/* choice_video_flog = 1; */
|
||
break;
|
||
|
||
case 5: //相册
|
||
set_lcd_show_data_mode(UI_USER);
|
||
show_page(PAGE_6);
|
||
/* choice_photo_flog = 1; */
|
||
log_info(">>>>>lcd_mode == ui_camera");
|
||
break;
|
||
}
|
||
} else { //退出二级菜单
|
||
switch (__this->page_x) {
|
||
case 1: //语言
|
||
if (__this->language_indx == 1) {
|
||
ui_language_set(Chinese_Traditional);
|
||
log_info(">>>Chinese_Traditional");
|
||
} else {
|
||
ui_language_set(Chinese_Simplified);
|
||
log_info(">>>Chinese_Simplified");
|
||
}
|
||
|
||
break;
|
||
|
||
case 2: //日期时间
|
||
__this->init_flog = 0;
|
||
__this->page2_x = 0;
|
||
__this->page2_y = 0;
|
||
undata_sys_time();
|
||
break;
|
||
|
||
case 3: //声音
|
||
__this->init_flog = 0;
|
||
form_highlight(BASEFORM_69, __this->init_flog); //自定义数字不支持高亮
|
||
break;
|
||
|
||
case 4: //录像回放
|
||
set_lcd_show_data_mode(UI);
|
||
break;
|
||
|
||
case 5: //相册
|
||
set_lcd_show_data_mode(UI);
|
||
log_info(">>>>>lcd_mode == ui");
|
||
/* choice_photo_flog = 4; */
|
||
break;
|
||
}
|
||
show_page(PAGE_1);
|
||
sound_mub_show_init(__this->play_mp3_sound_size);
|
||
}
|
||
|
||
break;
|
||
|
||
case KEY_K4:
|
||
log_info(">>>>>>>>>>>>>>>key4");//按键切显示模式
|
||
set_lcd_show_data_mode(UI);
|
||
log_info(">>>>>lcd_mode == ui");
|
||
show_page(PAGE_1);
|
||
sound_mub_show_init(__this->play_mp3_sound_size);
|
||
break;
|
||
}
|
||
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
/*****************end**********************/
|
||
void page0_photo_choice_show(u8 mub, u8 dir)
|
||
{
|
||
printf("\n [ERROR] %s -[] %d mub == %d\n", __FUNCTION__, __LINE__, mub);
|
||
//合成逻辑查阅lcd_data_driver.c
|
||
switch (mub) {
|
||
case SH_MAIN_PAGE://加到初始界面 0
|
||
set_lcd_show_data_mode(UI_CAMERA);//设置成ui_camera模式
|
||
set_kaleidoscope_mode(EM_END);//万花筒模式设置成EM_END,防止数据被覆盖
|
||
get_photo_mode = PHOTO_MODE_TAKE_BOOTH;//拍照模式设置,ui_camera_key_control中使用
|
||
set_photo_compose_mode(0, 0);//配置图像合成模式, picture_compose_task实时进行图像合成
|
||
break;
|
||
case SH_BOOTH_1://加到第一个大头贴合成的图片 1
|
||
set_kaleidoscope_mode(EM_END);
|
||
get_photo_mode = PHOTO_MODE_TAKE_BOOTH;
|
||
set_photo_compose_mode(0, 0);
|
||
break;
|
||
case SH_BOOTH_2://第二个大头贴合成图片 2
|
||
set_kaleidoscope_mode(EM_END);
|
||
get_photo_mode = PHOTO_MODE_TAKE_BOOTH;
|
||
set_photo_compose_mode(0, 0);
|
||
break;
|
||
case SH_BOOTH_3://第三个大头贴合成图片 3
|
||
set_lcd_show_data_mode(UI_CAMERA);
|
||
set_kaleidoscope_mode(EM_END);
|
||
get_photo_mode = PHOTO_MODE_TAKE_BOOTH;
|
||
set_photo_compose_mode(0, 0);
|
||
break;
|
||
case SH_FLIP_LR://4
|
||
set_lcd_show_data_mode(CAMERA);
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_lcd_show_data_mode(CAMERA);
|
||
set_kaleidoscope_mode(EM_FLIP_LR);
|
||
break;
|
||
case SH_QUADRATE://5
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_QUADRATE);
|
||
break;
|
||
case SH_QUADRATE_UNIFROM://6
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_QUADRATE_UNIFROM);
|
||
break;
|
||
case SH_VERTICAL_STRIPE: //7
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_VERTICAL_STRIPE);
|
||
break;
|
||
case SH_DOWN_SAMP: //8
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_DOWN_SAMP);
|
||
break;
|
||
case SH_REFLECTION_P://9
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_REFLECTION_P);
|
||
break;
|
||
case SH_FOUR_CORNER://10
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_kaleidoscope_mode(EM_FOUR_CORNER);
|
||
break;
|
||
case SH_ROTATE_180://11
|
||
get_photo_mode = PHOTO_MODE_TAKE_KALEIDOSCOPE;
|
||
set_lcd_show_data_mode(CAMERA);
|
||
set_kaleidoscope_mode(EM_ROTATE_180);
|
||
break;
|
||
case SH_MULTIPLE_1://第一个多图像合成 的第一个模式 高2均分 12
|
||
set_lcd_show_data_mode(UI_CAMERA);
|
||
get_photo_mode = PHOTO_MODE_TAKE_MULTIPLE_1;//拍照键按下后的区分模式标志
|
||
set_photo_compose_mode(4, 0);
|
||
set_kaleidoscope_mode(EM_END);
|
||
break;
|
||
case SH_MULTIPLE_2://第二个多图像合成 的第二个模式 高3均分 13
|
||
get_photo_mode = PHOTO_MODE_TAKE_MULTIPLE_2;
|
||
set_photo_compose_mode(5, 0);
|
||
set_kaleidoscope_mode(EM_END);
|
||
break;
|
||
case SH_MULTIPLE_3://第三个多图像合成 的第三个模式 对角均分 14
|
||
get_photo_mode = PHOTO_MODE_TAKE_MULTIPLE_3;
|
||
set_photo_compose_mode(6, 0);
|
||
set_kaleidoscope_mode(EM_END);
|
||
break;
|
||
case SH_MULTIPLE_4://第四个多图像合成 的第四个模式 不规则合成(特殊) 15
|
||
set_photo_compose_mode(0, 0);//先把UI数据覆盖上
|
||
if (dir) { //加方向
|
||
ui_hide_main(BASEFORM_142);
|
||
/*switch_save = 1; //标志,在ui_send_data_ready中保存一张RGB图像*/
|
||
ui_show_main(BASEFORM_148);
|
||
} else { //减方向
|
||
ui_hide_main(BASEFORM_1);
|
||
/*switch_save = 1; //标志,在ui_send_data_ready中保存一张RGB图像*/
|
||
ui_show_main(BASEFORM_148);
|
||
}
|
||
get_photo_mode = PHOTO_MODE_TAKE_MULTIPLE_4;
|
||
set_init_value(1);//*标志,控制case 7中读取ui数据
|
||
set_photo_compose_mode(7, 0);//*
|
||
set_kaleidoscope_mode(EM_END);
|
||
break;
|
||
default :
|
||
break;
|
||
}
|
||
if (dir) { //加方向
|
||
switch (mub) {
|
||
case SH_MAIN_PAGE ://加到初始界面
|
||
ui_hide_main(BASEFORM_148);
|
||
ui_show_main(BASEFORM_1);
|
||
break;
|
||
case SH_BOOTH_1://加到第一个大头贴合成的图片
|
||
ui_hide_main(BASEFORM_1);
|
||
ui_show_main(BASEFORM_64);
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_BOOTH_2://第二个大头贴合成图片
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_BOOTH_3://第三个大头贴合成图片
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_MULTIPLE_1://第一种多图像合成样式
|
||
ui_hide_main(BASEFORM_64);
|
||
ui_show_main(BASEFORM_135);
|
||
break;
|
||
case SH_MULTIPLE_2://第二种多图像合成样式
|
||
ui_hide_main(BASEFORM_135);
|
||
ui_show_main(BASEFORM_138);
|
||
break;
|
||
case SH_MULTIPLE_3://第三种多图像合成样式
|
||
ui_hide_main(BASEFORM_138);
|
||
ui_show_main(BASEFORM_142);
|
||
break;
|
||
case SH_MULTIPLE_4://第四种多图像合成样式
|
||
/*ui_hide_main(BASEFORM_142);*/
|
||
/*ui_show_main(BASEFORM_148);*/
|
||
break;
|
||
default :
|
||
break;
|
||
}
|
||
} else {//减方向
|
||
switch (mub) {
|
||
case SH_MAIN_PAGE://加到初始界面
|
||
ui_hide_main(BASEFORM_64);
|
||
ui_show_main(BASEFORM_1);
|
||
break;
|
||
case SH_BOOTH_1://加到第一个大头贴合成的图片
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_BOOTH_2://第二个大头贴合成图片
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_BOOTH_3://第三个大头贴合成图片
|
||
ui_hide_main(BASEFORM_135);
|
||
ui_show_main(BASEFORM_64);
|
||
ui_pic_show_image_by_id(BASEFORM_65, mub - 1);
|
||
break;
|
||
case SH_MULTIPLE_1://第一种多图像合成样式
|
||
ui_hide_main(BASEFORM_138);
|
||
ui_show_main(BASEFORM_135);
|
||
break;
|
||
case SH_MULTIPLE_2://第二种多图像合成样式
|
||
ui_hide_main(BASEFORM_142);
|
||
ui_show_main(BASEFORM_138);
|
||
break;
|
||
case SH_MULTIPLE_3://第三种多图像合成样式
|
||
ui_hide_main(BASEFORM_148);
|
||
ui_show_main(BASEFORM_142);
|
||
break;
|
||
case SH_MULTIPLE_4://第四种多图像合成样式
|
||
/*ui_hide_main(BASEFORM_1);*/
|
||
/*ui_show_main(BASEFORM_148);*/
|
||
break;
|
||
default :
|
||
break;
|
||
}
|
||
|
||
}
|
||
}
|
||
/*==========ui_camera按键控制============*/
|
||
int ui_camera_key_control(u8 value, u8 event)//图像合成界面按键控制
|
||
{
|
||
switch (event) {
|
||
case KEY_EVENT_CLICK:
|
||
switch (value) {
|
||
case KEY_K1://拍照
|
||
log_info(">>>>>>>>>>>>>>>>ui_camera_key1"); //拍照
|
||
switch (get_photo_mode) {
|
||
case PHOTO_MODE_TAKE_BOOTH://大头贴拍照
|
||
set_take_photo_status(PHOTO_MODE_TAKE_BOOTH);
|
||
break;
|
||
case PHOTO_MODE_TAKE_KALEIDOSCOPE://万花筒拍照
|
||
set_take_photo_status(PHOTO_MODE_TAKE_KALEIDOSCOPE);
|
||
break;
|
||
case PHOTO_MODE_TAKE_MULTIPLE_1://第一种多图像合成模式 高2均分
|
||
choice_piece = ++choice_piece % 3;//1,2,0,1,2,0...
|
||
set_photo_compose_mode(4, choice_piece);
|
||
if (choice_piece == 2) {
|
||
set_take_photo_status(PHOTO_MODE_TAKE_MULTIPLE_1);//拍照标志
|
||
set_photo_compose_mode(-1, 0); //不设置模式
|
||
}
|
||
if (!choice_piece) {
|
||
ui_show_main(BASEFORM_135);//显示该模式的UI
|
||
}
|
||
break;
|
||
case PHOTO_MODE_TAKE_MULTIPLE_2://第二种多图像合成模式 高3均分
|
||
choice_piece = ++choice_piece % 4;//1,2,3,0,1,2,3,0
|
||
set_photo_compose_mode(5, choice_piece);
|
||
if (choice_piece == 3) {
|
||
set_take_photo_status(PHOTO_MODE_TAKE_MULTIPLE_2);
|
||
set_photo_compose_mode(-1, 0); //不设置模式
|
||
}
|
||
if (!choice_piece) {
|
||
ui_show_main(BASEFORM_138);
|
||
}
|
||
break;
|
||
case PHOTO_MODE_TAKE_MULTIPLE_3://第三种多图像合成模式 对角均分
|
||
choice_piece = ++choice_piece % 3;//1,2,0,1,2
|
||
set_photo_compose_mode(6, choice_piece);
|
||
if (choice_piece == 2) {
|
||
set_take_photo_status(PHOTO_MODE_TAKE_MULTIPLE_3);
|
||
set_photo_compose_mode(-1, 0); //不设置模式
|
||
}
|
||
if (!choice_piece) {
|
||
ui_show_main(BASEFORM_142);
|
||
}
|
||
break;
|
||
case PHOTO_MODE_TAKE_MULTIPLE_4://第四种多图像合成模式 不规则合成
|
||
choice_piece = ++choice_piece % 3;//1,2,0,1,2
|
||
set_photo_compose_mode(7, choice_piece);
|
||
if (choice_piece == 2) {
|
||
set_take_photo_status(PHOTO_MODE_TAKE_MULTIPLE_4);
|
||
set_photo_compose_mode(-1, 0); //不设置模式
|
||
}
|
||
if (!choice_piece) {
|
||
ui_show_main(BASEFORM_148);//148
|
||
}
|
||
break;
|
||
default :
|
||
break;
|
||
}
|
||
os_taskq_post(POST_TASK_NAME, 1, UI_EVENT_TAKE_PHOTO);
|
||
break;
|
||
|
||
case KEY_K2://录像
|
||
log_info(">>>>>>>>>>>>>>>>ui_camera_key2"); //录像
|
||
os_taskq_post(POST_TASK_NAME, 1, UI_EVENT_VIDEO_START_STOP);
|
||
break;
|
||
|
||
case KEY_K3://加界面
|
||
photo_selection++;
|
||
if (photo_selection > SH_MODE_END - 1) {//SH_MODE_END-1
|
||
photo_selection = SH_MAIN_PAGE;
|
||
}
|
||
choice_piece = 0;
|
||
page0_photo_choice_show(photo_selection, 1);
|
||
log_info(">>>>>>>>>>>>>>>>ui_camera_key3"); //切换特效样式
|
||
break;
|
||
|
||
case KEY_K4://减界面
|
||
photo_selection--;
|
||
if (photo_selection < SH_MAIN_PAGE) {
|
||
photo_selection = SH_MODE_END - 1;//SH_MODE_END - 1
|
||
}
|
||
choice_piece = 0;
|
||
page0_photo_choice_show(photo_selection, 0);
|
||
log_info(">>>>>>>>>>>>>>>>ui_camera_key4");//切换特效样式
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case KEY_EVENT_LONG:
|
||
log_info(">>>>>>>>>>>>>>>>KEY_EVENT_LONG");
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
/*****************end**********************/
|
||
#endif
|
||
#endif
|
||
#endif
|