//Update text objects, progress bar... //Called when an new frame is decoded void eclair_update(Eclair *eclair) { char time_elapsed[10]; double position, length; if (!eclair) return; position = eclair_position_get(eclair); //Display subtitles eclair_subtitles_display_current_subtitle(&eclair->subtitles, eclair_position_get(eclair), eclair->video.subtitles_object); if (!eclair->video.video_object || !eclair->gui_window) return; //Update time text length = emotion_object_play_length_get(eclair->video.video_object); if (eclair->use_progress_bar_drag_for_time) { edje_object_part_drag_value_get(eclair->gui_window->edje_object, "progress_bar_drag", &position, NULL); position *= length; } eclair_utils_second_to_string(position, length, time_elapsed); eclair_all_windows_text_set(eclair, "time_elapsed", time_elapsed); //Update progress bar if (eclair->dont_update_progressbar) eclair->dont_update_progressbar = 0; else if (eclair->seek_to_pos >= 0.0) eclair->seek_to_pos = -1.0; edje_object_part_drag_value_set(eclair->gui_window->edje_object, "progress_bar_drag", position / length, 0.0); }
static void _val_set(Evas_Object *obj) { Eina_Bool rtl; double pos; ELM_SLIDER_DATA_GET(obj, sd); if (sd->val_max > sd->val_min) pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min); else pos = 0.0; if (pos < 0.0) pos = 0.0; else if (pos > 1.0) pos = 1.0; rtl = elm_widget_mirrored_get(obj); if ((!rtl && sd->inverted) || (rtl && ((!sd->horizontal && sd->inverted) || (sd->horizontal && !sd->inverted)))) pos = 1.0 - pos; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); edje_object_part_drag_value_set (wd->resize_obj, "elm.dragable.slider", pos, pos); }
static void _mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { UI *ui = data; Evas_Event_Mouse_Down *ev = event_info; float x, z, w; _get_pos(ui, &ev->canvas, &x, &z, &w); Evas_Object *edj = elm_layout_edje_get(ui->theme); edje_object_part_drag_value_set(edj, "magnet", x, 0.0); edje_object_part_drag_size_set(edj, "magnet", w, z); chimaera_event_t *cev = &ui->cev; cev->state = CHIMAERA_STATE_ON; cev->sid += 1; cev->gid = 0; cev->pid = ev->button == 1 ? 128 : 256; cev->x = x; cev->z = z; cev->X = 0.f; cev->Z = 0.f; _write_event(ui, cev); cev->state = CHIMAERA_STATE_SET; }
bool ui_refresh_seeker(ePlayer *player, double song_pos) { edje_object_part_drag_value_set(player->gui.edje, "seeker", song_pos, song_pos); edje_object_thaw(player->gui.edje); evas_render(player->gui.evas); return true; }
static void _screen_visual_bounds(Miniview *mv) { if ((mv->screen.pos_val > 1) || (mv->screen.pos_val < 0)) { edje_object_part_drag_value_set(mv->base, "miniview_screen", 0.0, mv->screen.pos_val); edje_object_signal_emit(mv->base, "miniview_screen,outbounds", "miniview"); } else { edje_object_part_drag_value_set(mv->base, "miniview_screen", 0.0, mv->screen.pos_val); edje_object_signal_emit(mv->base, "miniview_screen,inbounds", "miniview"); } }
static void _smart_toggle_smart_init(Evas_Object *o) { smart_toggle_t *priv = evas_object_smart_data_get(o); priv->value = 0; priv->disabled = 0; edje_object_part_drag_size_set(priv->theme, "drag", 0.f, 1.f); edje_object_part_drag_value_set(priv->theme, "drag", 0.f, 0.f); }
/* set progress position 0.0 -> 1.0 */ void theme_progress_set(double val) { if (edje_object_part_exists(o_bg, "exquisite.progress")) { edje_object_part_drag_value_set(o_bg, "exquisite.progress", val, val); edje_object_signal_emit(o_bg, "exquisite", "progress"); } else { Edje_Message_Float m; m.val = val; edje_object_message_send(o_bg, EDJE_MESSAGE_FLOAT, 2, &m); } }
//Set the audio level void eclair_audio_level_set(Eclair *eclair, double audio_level) { if (!eclair) return; if (audio_level < 0.0) audio_level = 0.0; else if (audio_level > 1.0) audio_level = 1.0; if (eclair->video.video_object) emotion_object_audio_volume_set(eclair->video.video_object, audio_level); if (eclair->gui_window) edje_object_part_drag_value_set(eclair->gui_window->edje_object, "volume_bar_drag", audio_level, 0); }
void e_widget_spectrum_update(Evas_Object *obj, int redraw) { E_Widget_Data *wd; double vx = 0, vy = 0; wd = e_widget_data_get(obj); /* redraw spectrum */ if (redraw) e_spectrum_update(wd->o_spectrum); switch (wd->mode) { case E_COLOR_COMPONENT_R: vy = wd->cv->g / 255.0; vx = wd->cv->b / 255.0; break; case E_COLOR_COMPONENT_G: vy = wd->cv->b / 255.0; vx = wd->cv->r / 255.0; break; case E_COLOR_COMPONENT_B: vy = wd->cv->r / 255.0; vx = wd->cv->g / 255.0; break; case E_COLOR_COMPONENT_H: vy = wd->cv->s; vx = wd->cv->v; break; case E_COLOR_COMPONENT_S: vy = wd->cv->v; vx = wd->cv->h / 360.0; break; case E_COLOR_COMPONENT_V: vy = wd->cv->h / 360.0; vx = wd->cv->s; break; case E_COLOR_COMPONENT_MAX: break; } edje_object_part_drag_value_set(wd->o_edje, "cursor", vx, vy); }
static void _mirroredness_change_eval(Evas_Object *obj) { double pos; char *left; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); left = (char *)elm_layout_text_get(obj, "elm.text.left"); if (left) left = strdup(left); elm_layout_text_set (obj, "elm.text.left", elm_layout_text_get(obj, "elm.text.right")); elm_layout_text_set(obj, "elm.text.right", left); free(left); edje_object_part_drag_value_get (wd->resize_obj, "elm.drag_button_base", &pos, NULL); edje_object_part_drag_value_set (wd->resize_obj, "elm.drag_button_base", 1.0 - pos, 0.5); }
static void _smart_slider_smart_init(Evas_Object *o) { smart_slider_t *priv = evas_object_smart_data_get(o); priv->min = 0.f; priv->max = 1.f; priv->diff = priv->max - priv->min; priv->scale = 1.f / priv->diff; priv->dflt = 0.f; priv->value = priv->dflt; priv->drag = 0.f; priv->integer = 0; strcpy(priv->format, "%.4f %s"); strcpy(priv->unit, ""); priv->grabbed = 0; edje_object_part_drag_value_set(priv->theme, "drag", 0.f, 0.f); }
/* Progressbar: render() */ static Etk_Bool _progress_bar_render(Etk_Tree_Model *model, Etk_Tree_Row *row, Etk_Geometry geometry, void *cell_data, Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL], Evas *evas) { Etk_Tree_Model_Progressbar_Data *pbar_data; int w, h; if (!(pbar_data = cell_data) || !cell_objects[0]) return ETK_FALSE; edje_object_part_text_set(cell_objects[0], "etk.text.text", pbar_data->text ? pbar_data->text : ""); evas_object_data_set(cell_objects[0], "_Etk_Tree_Model_Progressbar::Row", row); edje_object_size_min_get(cell_objects[0], &w, &h); evas_object_move(cell_objects[0], geometry.x, geometry.y + ((geometry.h - h) / 2)); evas_object_resize(cell_objects[0], w > geometry.w ? w : geometry.w, h); edje_object_part_drag_value_set(cell_objects[0], "etk.dragable.filler", 0.0, 0.0); edje_object_part_drag_size_set(cell_objects[0], "etk.dragable.filler", pbar_data->fraction, 0.0); evas_object_show(cell_objects[0]); return ETK_FALSE; }
static void _mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) { UI *ui = data; Evas_Event_Mouse_Move *ev = event_info; float x, z, w; _get_pos(ui, &ev->cur.canvas, &x, &z, &w); Evas_Object *edj = elm_layout_edje_get(ui->theme); edje_object_part_drag_value_set(edj, "magnet", x, 0.0); edje_object_part_drag_size_set(edj, "magnet", w, z); chimaera_event_t *cev = &ui->cev; if(cev->state == CHIMAERA_STATE_SET) { cev->x = x; cev->z = z; _write_event(ui, cev); } }
//Initialize eclair Evas_Bool eclair_init(Eclair *eclair, int *argc, char ***argv) { Eina_List *filenames, *l; filenames = NULL; if (!eclair) return 0; ecore_init(); ecore_file_init(); ecore_evas_init(); edje_init(); eclair->argc = argc; eclair->argv = argv; eclair->gui_window = NULL; eclair->equalizer_window = NULL; eclair->playlist_window = NULL; eclair->playlist_container = NULL; eclair->playlist_container_owner = NULL; eclair->playlist_entry_height = -1; eclair->cover_window = NULL; eclair->cover = NULL; eclair->previous_cover = NULL; eclair->cover_owner = NULL; eclair->state = ECLAIR_STOP; eclair->seek_to_pos = -1.0; eclair->use_progress_bar_drag_for_time = 0; eclair->dont_update_progressbar = 0; eclair->gui_engine = ECLAIR_SOFTWARE; eclair->gui_theme_file = strdup(PACKAGE_DATA_DIR "/themes/default.edj"); eclair->drop_object = ECLAIR_DROP_NONE; eclair->drop_window = NULL; eclair->video_engine = ECLAIR_SOFTWARE; eclair->video_module = ECLAIR_VIDEO_XINE; eclair->start_playing = 0; if (!eclair_args_parse(eclair, &filenames)) { free(eclair->gui_theme_file); return 0; } eclair_config_init(&eclair->config); eclair_utils_init(); eclair_video_init(&eclair->video, eclair); if (!_eclair_create_gui_window(eclair)) { eclair_config_shutdown(&eclair->config); fprintf(stderr, "Error: Unable to create the gui window\n"); return 0; } eclair_playlist_init(&eclair->playlist, eclair); _eclair_create_playlist_window(eclair); _eclair_create_equalizer_window(eclair); _eclair_create_cover_window(eclair); eclair_create_video_window(&eclair->video, eclair->video_engine); _eclair_add_inter_windows_callbacks(eclair); eclair_database_init(&eclair->database, eclair); eclair_dialogs_init(&eclair->dialogs_manager, eclair); eclair_playlist_container_set_media_list(eclair->playlist_container, &eclair->playlist.playlist); eclair_subtitles_init(&eclair->subtitles); eclair_meta_tag_init(&eclair->meta_tag_manager, eclair); eclair_cover_init(&eclair->cover_manager, eclair); eclair_update_current_file_info(eclair, 0); if ((l = filenames)) { for (; l; l = l->next) eclair_playlist_add_uri(&eclair->playlist, l->data, 0, 1); eina_list_free(filenames); eclair_playlist_container_update(eclair->playlist_container); } else eclair_playlist_add_uri(&eclair->playlist, eclair->config.default_playlist_path, 1, 0); ecore_event_handler_add(ECORE_X_EVENT_XDND_POSITION, eclair_dnd_position_cb, eclair); ecore_event_handler_add(ECORE_X_EVENT_XDND_DROP, eclair_dnd_drop_cb, eclair); ecore_event_handler_add(ECORE_X_EVENT_SELECTION_NOTIFY, eclair_dnd_selection_cb, eclair); ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, eclair_mouse_up_cb, eclair); edje_object_part_drag_value_set(eclair->gui_window->edje_object, "volume_bar_drag", 1.0, 0.0); return 1; }