📄 cdplayer.c
字号:
{
bcd_pause();
cd_track_pause = 1;
}
else
{
bcd_resume();
cd_track_pause = 0;
}
}; break;
case MSG_STOP : {
clear_event(event);
bcd_stop();
cd_track_pause = 0;
}; break;
case MSG_RR : {
clear_event(event);
bcd_play_ff_or_re( -400);
}; break;
case MSG_FF : {
clear_event(event);
bcd_play_ff_or_re( 200);
}; break;
case MSG_OUT : {
clear_event(event);
if ( bcd_device_status() & BCD_DOOR_OPEN ) {
bcd_close_door();
cd_track_max = bcd_get_audio_info();
} else
bcd_open_door();
cd_track_pause = 0;
cd_track = 1;
}; break;
case MSG_PREV : {
clear_event(event);
cd_track = min(cd_track_max, max(1, cd_track-1));
bcd_play_to_end(cd_track);
cd_track_pause = 0;
}; break;
case MSG_NEXT : {
clear_event(event);
cd_track = min(cd_track_max, max(1, cd_track+1));
bcd_play_to_end(cd_track);
cd_track_pause = 0;
}; break;
case MSG_RBACK : {
clear_event(event);
cd_track_in_background = 1;
}; break;
case MSG_TIME : {
clear_event(event);
time_type ++;
if (time_type > 2) time_type = 0;
}; break;
case MSG_DRIVE : {
l_int drive;
clear_event(event);
bcd_stop();
drive = bcd_get_num_drives();
if (cur_drive_no > drive)
bcd_set_drive( cur_drive_no + 1);
else bcd_set_drive(0);
cd_track_max = bcd_get_audio_info();
cd_track_pause = 0;
cd_track = 1;
update_titel(o, set_format_text(NULL, TXT_TITEL, bcd_get_drive_letter( cur_drive_no )));
}; break;
case MSG_ABOUT:
seal2_app_about("CD Player", load_image("/system/bmp/cdplayer.ico,32"));
clear_event(event);
break;
};
};
};
p_object get_button ( t_rect r, l_text str, l_text stralt, l_dword msg, l_int flags, l_text i_t) {
p_button o = button_init(_malloc(sizeof(t_button)),
r,
str,
msg,
flags);
if ( o )
{
VIEW(o)->font = get_font_in_size("Symbols", 14, 14);
if(!VIEW(o)->font){
VIEW(o)->font=font_system;
if(o->caption)_free(o->caption);
o->caption=(l_text)_strdup(stralt);
}
VIEW(o)->info_text = strdup(i_t);
}
return OBJECT(o);
};
void init_cdplayer ( void )
{
t_rect r = rect_assign(0, 0, 225, 150);
t_rect t = r;
p_button button = NULL;
p_appwin o = appwin_init(_malloc(sizeof(t_appwin)), /* make window */
r,
"",
0x02,
ap_id, /* application id */
&trans_ev);
VIEW(o)->align |= TX_ALIGN_CENTER; /* set alignment */
o->icon16 = load_image("/system/bmp/cdplayer.ico,16");
o->menu = standard_system_menu_items(o,
new_menu_line(
new_menu_item("About CD Player...", 0, 0, MSG_ABOUT, NULL,
NULL)));
OBJECT(desktop)->insert(OBJECT(desktop), OBJECT(o)); /* insert it on the desktop */
update_titel(OBJECT(o), set_format_text(NULL, TXT_TITEL, bcd_get_drive_letter( cur_drive_no )));
VIEW(o)->info_text = strdup(TXT_CDPLAYER);
r = VIEW(o)->size_limits(VIEW(o));
r = rect_assign(r.a.x+10, r.a.y+10, r.a.x+210, r.a.y+65);
OBJECT(o)->insert(OBJECT(o), OBJECT(trackinfo_init(_malloc(sizeof(t_view)), r)));
//r = rect_assign(r.b.x+10, r.a.y, r.b.x+2, r.b.y);
r = rect_assign(r.a.x+2, r.b.y+5, r.b.x, r.b.y+55);
t = r;
r = rect_assign(r.a.x, r.a.y, r.a.x+64, r.a.y+25); /* play button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "b","Play", MSG_PLAY, BF_NORMAL, TXT_PLAY)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.a.y+25); /* play at background button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "M","Quit", MSG_PLAYATBACKGROUND, BF_NORMAL, TXT_PLAYBACKGROUND)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* pause button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "a","||", MSG_PAUSE, BF_NORMAL, TXT_PAUSE)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* stop button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "W","Stop", MSG_STOP, BF_NORMAL, TXT_STOP)); /* insert button to window ...see get_button function under this function */
r = rect_assign(t.a.x, r.b.y+5, t.a.x+30, r.b.y+30); /* |<< button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "Z","|<<", MSG_PREV, BF_NORMAL, TXT_LAST)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* << button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "X","<<", MSG_RR, BF_NORMAL, TXT_REWIND)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* >> button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "Y",">>", MSG_FF, BF_NORMAL, TXT_FORWARD)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* >>| button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "c",">>|", MSG_NEXT, BF_NORMAL, TXT_NEXT)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* /\ button */
OBJECT(o)->insert(OBJECT(o), get_button(r, "d","Eject", MSG_OUT, BF_NORMAL, TXT_OPEN_CLOSE)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.b.x+4, r.a.y, r.b.x+34, r.b.y); /* time button */
button = BUTTON(get_button(r, "T","T", MSG_TIME, BF_NORMAL, TXT_TIME));
VIEW(button)->font = get_font_in_size("ActivaCE", 14, 14);
if(!VIEW(button)->font){
VIEW(button)->font=font_system;
if(button->caption)_free(button->caption);
button->caption=(l_text)_strdup("Time");
}
OBJECT(o)->insert(OBJECT(o), OBJECT(button)); /* insert button to window ...see get_button function under this function */
r = rect_assign(r.a.x, r.a.y - 30, r.b.x, r.a.y - 5); /* drive button */
button = BUTTON(get_button(r, "D","D", MSG_DRIVE, BF_NORMAL, TXT_DRIVE));
VIEW(button)->font = get_font_in_size("ActivaCE", 14, 14);
if(!VIEW(button)->font){
VIEW(button)->font=font_system;
if(button->caption)_free(button->caption);
button->caption=(l_text)_strdup("Drive");
}
OBJECT(o)->insert(OBJECT(o), OBJECT(button)); /* insert button to window ...see get_button function under this function */
};
static l_int get_track ( l_text args )
{
if ( args ) {
l_text x = args;
l_text s;
l_int i = 0;
while ( *x && ( (*x < '0') || (*x > '9') ) ) x++;
args = x;
while ( *x && (*x >= '0') && (*x <= '9') ) x++;
s = stridup(args, strsize(args, x));
if ( s ) i = atol(s);
_free(s);
return i;
};
return 0;
};
app_begin ( void ) {
if ( ap_process == AP_INIT ) {
l_int err = 0;
l_int i = 0;
AP_SETNUMOFCALLS(1); /* set max num of calls */
bcd_open();
err = bcd_audio_busy();
if ( !err ) { /* audio is not play, ok ! */
bcd_reset();
} else if ( err == -1 ) /* audio error */
seal_error(ERR_INFO, "%s !", TXT_ERRORINLOADINGAUDIO);
else /* audio is play now */
cd_track = bcd_now_playing();
cd_track_max = bcd_get_audio_info();
init_cdplayer();
i = get_track(ap_args);
if ( i > 0 ) {
cd_track = min(cd_track_max, max(1, i));
bcd_play_to_end(cd_track);
};
};
if ( ap_process == AP_FREE ) {
if ( !cd_track_in_background ) {
bcd_stop();
bcd_close();
};
};
} app_end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -