void kernel_load_enter(void) { graphics_location draw_system_logo_x=0; graphics_location draw_system_logo_y=0; unsigned long draw_system_logo_height=0; unsigned long draw_system_logo_width=0; window_widget picture_kernel_logo; widget_handle picture_kernel_logo_handle=INVALID_WIDGET_HANDLE; window_widget progress_load_rate; kernel_load_window=create_window("kernel load","kernel load",false,NULL); set_window_background_color(kernel_load_window,DEFAULT_COLOR_BACKGROUND); show_window(kernel_load_window); lcd_calcu_middle_location(0,0,SCREEN_HORIZONTAL_PIXEL,SCREEN_LONGITUDINAL_PIXEL,&draw_system_logo_x,&draw_system_logo_y); graphics_get_bitmap(kernel_logo,NULL,&draw_system_logo_height,&draw_system_logo_width); draw_system_logo_x-=draw_system_logo_width/2; draw_system_logo_y-=draw_system_logo_height/2; picture_kernel_logo.widget_type=widget_picture; picture_kernel_logo.x=draw_system_logo_x; picture_kernel_logo.y=draw_system_logo_y; picture_kernel_logo_handle=create_widget(kernel_load_window,&picture_kernel_logo); set_picture_bitmap(kernel_load_window,picture_kernel_logo_handle,kernel_logo); draw_widget(kernel_load_window,picture_kernel_logo_handle); progress_load_rate.widget_type=widget_progress; progress_load_rate.widget_height=PROGRESS_HEIGHT; progress_load_rate.widget_width=draw_system_logo_width; progress_load_rate.x=draw_system_logo_x; progress_load_rate.y=draw_system_logo_y+draw_system_logo_height+DISTANCE_PROGRESS_TO_LOGO; progress_load_rate_handle=create_widget(kernel_load_window,&progress_load_rate); set_progress_max_value(kernel_load_window,progress_load_rate_handle,MAX_KERNEL_LOAD_RATE); set_progress_value(kernel_load_window,progress_load_rate_handle,0); draw_widget(kernel_load_window,progress_load_rate_handle); }
void kernel_set_load_rate(unsigned int rate) { if (rate>load_rate) { set_progress_value(kernel_load_window,progress_load_rate_handle,rate); if (MAX_KERNEL_LOAD_RATE==rate) { close_window(kernel_load_window); return; } load_rate=rate; } }
void job_run_dialog::process_input() { if (!process) return; while (process->IsInputAvailable()) { bool got_char = false; char c = 0; if (!out->Eof()) { c = out->GetC(); got_char = true; } if (got_char && ((c == '\n') || (c == '\r') || out->Eof())) { wxString wx_line = wxU(line); if (wx_line.Find(wxT("#GUI#begin_scanning_playlists")) == 0) m_scanning_playlists = true; else if (wx_line.Find(wxT("#GUI#end_scanning_playlists")) == 0) { m_scanning_playlists = false; m_start_time = mtx::sys::get_current_time_millis(); m_next_remaining_time_update = m_start_time + 8000; if (!current_job) { m_start_time_total = m_start_time; m_next_remaining_time_update_total = m_next_remaining_time_update; } } else if (wx_line.Find(wxT("#GUI#progress")) == 0) { int percent_pos = wx_line.Find(wxT("%")); if (0 < percent_pos) { wx_line.Remove(percent_pos); wxString tmp = wx_line.AfterLast(wxT(' ')); long value; tmp.ToLong(&value); if ((value >= 0) && (value <= 100)) set_progress_value(value); } } else if (wx_line.Length() > 0) *jobs[jobs_to_start[current_job]].log += wx_line + wxT("\n"); line = ""; } else if ((unsigned char)c != 0xff) line += c; update_remaining_time(); if (out->Eof()) break; } }