/* Creates the window for the progress bar test */ void etk_test_progress_bar_window_create(void *data) { static Etk_Widget *win; Etk_Widget *vbox; Etk_Widget *pbar; Etk_Widget *pbar2; if (win) { etk_widget_show_all(ETK_WIDGET(win)); return; } win = etk_window_new(); etk_window_title_set(ETK_WINDOW(win), "Etk Progress Bar Test"); etk_signal_connect_by_code(ETK_WINDOW_DELETE_EVENT_SIGNAL, ETK_OBJECT(win), ETK_CALLBACK(etk_window_hide_on_delete), NULL); vbox = etk_vbox_new(ETK_TRUE, 5); etk_container_add(ETK_CONTAINER(win), vbox); pbar = etk_progress_bar_new_with_text("0% done"); etk_box_append(ETK_BOX(vbox), pbar, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); pbar2 = etk_progress_bar_new_with_text("Loading..."); etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(pbar2), 0.015); etk_box_append(ETK_BOX(vbox), pbar2, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); etk_widget_show_all(win); _etk_test_progress_bar_timer = ecore_timer_add(0.05, _etk_test_progress_bar_update, pbar); _etk_test_progress_bar_timer2 = ecore_timer_add(0.025, _etk_test_progress_bar_update2, pbar2); etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar), ETK_CALLBACK(ecore_timer_del), _etk_test_progress_bar_timer); etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar2), ETK_CALLBACK(ecore_timer_del), _etk_test_progress_bar_timer2); }
/* Updates the second progress bar */ int _etk_test_progress_bar_update2(void *data) { Etk_Widget *pbar; pbar = data; etk_progress_bar_pulse(ETK_PROGRESS_BAR(pbar)); return 1; }
/* Updates the first progress bar */ int _etk_test_progress_bar_update(void *data) { Etk_Widget *pbar; double fraction; char text[32]; pbar = data; fraction = etk_progress_bar_fraction_get(ETK_PROGRESS_BAR(pbar)); fraction += 0.01; if (fraction > 1.0) fraction = 0.0; snprintf(text, sizeof(text), "%d%% done", (int)(fraction * 100.0)); etk_progress_bar_text_set(ETK_PROGRESS_BAR(pbar), text); etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(pbar), fraction); return 1; }
/** * @brief Set the progress bar to elapsed_time/total_time * @param elapsed_time The time elapsed * @param total_time The lenght of the song * @param gui A Emphasis_Gui */ void emphasis_player_progress_set(Emphasis_Player_Gui *player, float elapsed_time, int total_time) { char *time; etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(player->full.progress), (elapsed_time / total_time)); etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(player->small.progress), (elapsed_time / total_time)); asprintf(&time, "%d:%02d / %d:%02d", (int) elapsed_time / 60, (int) elapsed_time % 60, total_time / 60, total_time % 60); etk_label_set(ETK_LABEL(player->full.time) , time); // etk_label_set(ETK_LABEL(player->small.time), time); etk_progress_bar_text_set(ETK_PROGRESS_BAR(player->small.progress), time); free(time); }
int _ex_file_download_progress_cb(void *data, const char *file, long int dltotal, long int dlnow, long int ultotal, long int ulnow) { double fraction; char text[42]; static long int last; static double t_last; long int diff; double t_diff; double kbytes; static double total_kbytes; if (dlnow == 0 || dltotal == 0) return 0; if (!total_kbytes) total_kbytes = (double) ((((double)dltotal) / 1024)); if (last) { diff = dlnow - last; t_diff = ecore_time_get() - t_last; kbytes = (double) ((((double) diff) / 1024)); fraction = (double) ((double) dlnow) / ((double) dltotal); etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(progressbar), fraction); snprintf(text, sizeof(text), "%d%% done at %.0f kb/s (%.0f of %.0f kb)", (int) (fraction * 100.0), kbytes / t_diff, kbytes, total_kbytes); etk_progress_bar_text_set(ETK_PROGRESS_BAR(progressbar), text); } t_last = ecore_time_get(); last = dlnow; return 0; }
/* Creates the vbox for the progress bars */ static void _etk_test_canvas_progress_bars_create(int x, int y) { Etk_Widget *vbox; Etk_Widget *pbar; Etk_Widget *pbar2; vbox = etk_vbox_new(ETK_TRUE, 5); pbar = etk_progress_bar_new_with_text("0% done"); etk_box_append(ETK_BOX(vbox), pbar, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); pbar2 = etk_progress_bar_new_with_text("Loading..."); etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(pbar2), 0.015); etk_box_append(ETK_BOX(vbox), pbar2, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); _etk_test_canvas_timer = ecore_timer_add(0.05, _etk_test_canvas_update, pbar); _etk_test_canvas_timer2 = ecore_timer_add(0.025, _etk_test_canvas_update2, pbar2); etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar), ETK_CALLBACK(ecore_timer_del), _etk_test_canvas_timer); etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar2), ETK_CALLBACK(ecore_timer_del), _etk_test_canvas_timer2); etk_canvas_put(ETK_CANVAS(canvas), vbox, x, y); }
void _ex_file_download_dialog(char *url, char *file) { char string[PATH_MAX + 16]; snprintf(string, sizeof(string), "Downloading %s", url); dialog = etk_message_dialog_new(ETK_MESSAGE_DIALOG_INFO, ETK_MESSAGE_DIALOG_CANCEL, string); etk_signal_connect("response", ETK_OBJECT(dialog), ETK_CALLBACK(_ex_file_download_dialog_response), file); etk_container_border_width_set(ETK_CONTAINER(dialog), 4); etk_window_title_set(ETK_WINDOW(dialog), _("Exhibit - Download progress")); progressbar = etk_progress_bar_new(); etk_progress_bar_text_set(ETK_PROGRESS_BAR(progressbar), "0% done"); etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), progressbar, ETK_BOX_END, ETK_BOX_EXPAND_FILL, 2); etk_widget_show_all(dialog); }