int Dialog::show() { calc_frame_size(); unsigned list_cnt = 0; unsigned list_item_cnt = 0; for (unsigned i = 0; i < items.size(); i++) { if (items[i].list_idx) { list_cnt++; list_item_cnt += items[i].list_size; } } Buffer<FarList> far_lists(list_cnt); far_lists.clear(); Buffer<FarListItem> far_list_items(list_item_cnt); far_list_items.clear(); Buffer<FarDialogItem> dlg_items(items.size()); dlg_items.clear(); unsigned fl_idx = 0; unsigned fli_idx = 0; for (unsigned i = 0; i < items.size(); i++) { FarDialogItem* dlg_item = dlg_items.data() + i; dlg_item->Type = items[i].type; dlg_item->X1 = items[i].x1; dlg_item->Y1 = items[i].y1; dlg_item->X2 = items[i].x2; dlg_item->Y2 = items[i].y2; dlg_item->Flags = items[i].flags; dlg_item->Selected = items[i].selected; if (items[i].history_idx) dlg_item->History = get_value(items[i].history_idx); if (items[i].mask_idx) dlg_item->Mask = get_value(items[i].mask_idx); if (items[i].text_idx) dlg_item->Data = get_value(items[i].text_idx); if (items[i].list_idx) { FarList* fl = far_lists.data() + fl_idx; fl->Items = far_list_items.data() + fli_idx; fl->ItemsNumber = items[i].list_size; for (unsigned j = 0; j < items[i].list_size; j++) { FarListItem* fli = far_list_items.data() + fli_idx; if (j == items[i].list_pos) fli->Flags = LIF_SELECTED; fli->Text = get_value(items[i].list_idx + j); fli_idx++; } fl_idx++; dlg_item->ListItems = fl; } } int res = -1; HANDLE h_dlg = g_far.DialogInit(&c_plugin_guid, guid, -1, -1, client_xs + 2 * c_x_frame, client_ys + 2 * c_y_frame, help, dlg_items.data(), static_cast<unsigned>(dlg_items.size()), 0, 0, internal_dialog_proc, this); if (h_dlg != INVALID_HANDLE_VALUE) { res = g_far.DialogRun(h_dlg); g_far.DialogFree(h_dlg); } return res; }
void mp3_c(u8 c){ int i; static int over=0; if (cur_song.content_length == 0 || cur_song.content_remain == -1){ print_c(c); if (c != '\n'){ if (cur_song.buffer_idx < sizeof(cur_song.buffer)){ cur_song.buffer[cur_song.buffer_idx++] = c; } }else{ char * s = cur_song.buffer; if (s[0] == 'C' && s[1] == 'o' && s[2] == 'n' && s[3] == 't' && s[4] == 'e' && s[5] == 'n' && s[6] == 't' && s[7] == '-' && s[8] == 'L' && s[9] == 'e' && s[10]== 'n' && s[11]== 'g' && s[12]== 't' && s[13]== 'h' && s[14]== ':'){ i = 16; while (i < 50 && s[i] >= '0' && s[i] <= '9'){ cur_song.content_length = cur_song.content_length * 10 + (s[i] - '0'); i++; } printf("-----content_length: %d\r\n",cur_song.content_length); } if (s[0]='\r' && cur_song.buffer_idx ==1 && cur_song.content_length > 0){ cur_song.content_remain = cur_song.content_length; println("content_start"); } cur_song.buffer_idx = 0; } }else{ if (cur_song.content_remain > 0){ // printf("%d\r\n",cur_song.content_remain); cur_song.content_remain--; cur_song.buffer[cur_song.buffer_idx++] = c; if (cur_song.content_length_without_id3v2 == 0 && cur_song.buffer_idx > 9){ if (cur_song.buffer[0] == 0x49 && cur_song.buffer[1] == 0x44 && cur_song.buffer[2] == 0x33 ){ cur_song.content_length_without_id3v2 = cur_song.content_length - ((cur_song.buffer[6]&0x7F)*0x200000+(cur_song.buffer[7]&0x7F)*0x4000+(cur_song.buffer[8]&0x7F)*0x80+(cur_song.buffer[9]&0x7F) + 10); }else{ cur_song.content_length_without_id3v2 = cur_song.content_length; cur_song.first_head[0] = cur_song.buffer[0]; cur_song.first_head[1] = cur_song.buffer[1]; cur_song.first_head[2] = cur_song.buffer[2]; cur_song.first_head[3] = cur_song.buffer[3]; cur_song.headed = 4; } } if (cur_song.headed < 4 && cur_song.content_length_without_id3v2 > cur_song.content_remain ){ cur_song.first_head[cur_song.headed++] = c; } if (cur_song.headed >= 4 && cur_song.frame_size == 0){ for(i=0;i<4;i++) printf("0x%02x ",cur_song.first_head[i]); cur_song.frame_size = calc_frame_size(cur_song.first_head); printf("frame_size: %d\r\n",cur_song.frame_size); } }else{ println("shot over"); printf("content_over %d\r\n",over++); } } }