static void _parse_directory(Evas_Object *list, const char *dir_path) { struct dirent *dp; DIR *dir; if (!(dir = opendir(dir_path))) return; while ((dp = readdir(dir))) { Game_Entry *game; char dsfile[4096]; if (!enna_util_str_has_extension(dp->d_name, "desktop")) continue; sprintf(dsfile, "%s/%s", dir_path, dp->d_name); if ((game = _parse_desktop_game(dsfile))) { Enna_File *item; item = ENNA_NEW(Enna_File, 1); item->label = strdup(game->name); item->is_menu = 1; if (game->icon) item->icon = strdup(game->icon); enna_list_file_append(list, item, _play, strdup(game->exec));//TODO free this dup mod->count++; ENNA_FREE(game->name); ENNA_FREE(game->icon); ENNA_FREE(game->exec); ENNA_FREE(game); } } closedir(dir); }
static void bs_gocomics_hide (Evas_Object *layout) { url_free(mod->url); ENNA_FREE(mod->comic_name); ENNA_FREE(mod->comic_id); ENNA_OBJECT_DEL(mod->list); elm_object_part_content_unset(mod->layout, "service.browser.swallow"); ENNA_FREE(mod->path); ENNA_FREE(mod); }
void enna_mediaplayer_shutdown(void) { if (!mp) return; ENNA_FREE(mp->uri); ENNA_FREE(mp->label); ENNA_FREE(mp->engine); emotion_object_play_set(mp->player, EINA_FALSE); if (mp->player) evas_object_del(mp->player); ENNA_FREE(mp); }
static void gocomics_select_comic(void *data) { Enna_File *item = data; gocomics_date_set_current (); ENNA_FREE(mod->comic_name); mod->comic_name = strdup (item->label); ENNA_FREE(mod->comic_id); mod->comic_id = strdup (item->uri); gocomics_display(); }
static int metadata_set_text(Evas_Object *obj, Enna_File *file, const char *name, int bold) { int res = 0; const char *str = NULL; char *tmp = NULL; if (file) str = enna_file_meta_get(file, name); if (!str) res = -1; else tmp = strdup(str); if(bold && str) { tmp = enna_util_str_chomp(tmp); } else { tmp = enna_util_str_chomp(tmp); } elm_label_ellipsis_set(obj, EINA_TRUE); elm_object_text_set(obj, tmp); ENNA_FREE(tmp); eina_stringshare_del(str); return res; }
static void audio_flag_set (Smart_Data *sd, Enna_File *file) { const char *c_str; char *flag = NULL; if (!file) goto audio_unknown; /* try to guess audio flag (naive method atm) */ c_str = enna_file_meta_get(file, "audio_channels"); if (c_str) { int i, c; c = atoi (c_str); for (i = 0; flag_audio_mapping[i].name; i++) if (c <= flag_audio_mapping[i].channels) { flag = strdup(flag_audio_mapping[i].name); break; } eina_stringshare_del(c_str); } audio_unknown: if (!flag) flag = strdup("flags/audio/default"); flag_set(sd, &sd->o_audio, flag, "flags.audio.swallow"); ENNA_FREE(flag); }
static void studio_flag_set (Smart_Data *sd, Enna_File *file) { const char *studio; char *flag = NULL; if (!file) goto studio_unknown; /* try to guess studio flag */ studio = enna_file_meta_get(file, "studio"); if (studio) { int i; for (i = 0; flag_studio_mapping[i].name; i++) if (!strcasecmp (studio, flag_studio_mapping[i].fullname)) { flag = strdup(flag_studio_mapping[i].name); break; } eina_stringshare_del(studio); } studio_unknown: if (!flag) flag = strdup("flags/studio/default"); flag_set(sd, &sd->o_studio, flag, "flags.studio.swallow"); ENNA_FREE(flag); }
static void media_flag_set (Smart_Data *sd, Enna_File *file) { const char *h_str; char *flag = NULL; if (!file) goto media_unknown; /* try to guess video flag, based on video resolution */ h_str = enna_file_meta_get(file, "height"); if (h_str) { int i, h; h = atoi (h_str); for (i = 0; flag_media_mapping[i].name; i++) if (h <= flag_media_mapping[i].min_height) { flag = strdup(flag_media_mapping[i].name); break; } if (!flag) flag = strdup("flags/media/divx"); eina_stringshare_del(h_str); } media_unknown: if (!flag) flag = strdup("flags/media/default"); flag_set(sd, &sd->o_media, flag, "flags.media.swallow"); ENNA_FREE(flag); }
static void module_shutdown(Enna_Module *em) { ENNA_OBJECT_DEL(sd->obj); ENNA_FREE(sd); sd = NULL; }
static void _del(void *data, Evas *a, Evas_Object *obj, void *event_info) { Smart_Data *sd = data; ENNA_OBJECT_DEL(sd->o_img); ENNA_OBJECT_DEL(sd->o_rating); ENNA_OBJECT_DEL(sd->o_cover); ENNA_FREE(sd); }
void enna_volumes_listener_del(Enna_Volumes_Listener *vl) { if (!vl) return; enna_log(ENNA_MSG_EVENT, "volumes", "Del: %s listener", vl->name); enna_volumes_listeners = eina_list_remove(enna_volumes_listeners, vl); ENNA_STRINGSHARE_DEL(vl->name); ENNA_FREE(vl); }
static void video_flags_del(void *data, Evas *a, Evas_Object *obj, void *event_info) { Smart_Data *sd = data; ENNA_OBJECT_DEL(sd->o_video); ENNA_OBJECT_DEL(sd->o_audio); ENNA_OBJECT_DEL(sd->o_studio); ENNA_OBJECT_DEL(sd->o_media); ENNA_FREE(sd); }
void enna_mainmenu_shutdown(Evas_Object *obj) { Smart_Data *sd; sd =evas_object_data_get(obj, "mainmenu_data"); ENNA_EVENT_HANDLER_DEL(sd->act_handler); enna_browser_del(sd->browser); ENNA_FREE(sd); }
void enna_localfiles_shutdown(void) { free(mod->all); ENNA_FREE(mod); efreet_mime_shutdown(); eio_shutdown(); }
static void _sd_del(void *data, Evas *e, Evas_Object *obj, void *event_info) { Smart_Data *sd = data; ENNA_OBJECT_DEL(sd->controls); ENNA_OBJECT_DEL(sd->slideshow); eina_list_free(sd->items); enna_input_listener_del(sd->listener); ENNA_FREE(sd); }
void enna_volume_free (Enna_Volume *v) { if (!v) return; eina_stringshare_del (v->device_name); eina_stringshare_del (v->mount_point); eina_stringshare_del (v->label); ENNA_FREE (v); }
/** * @brief UnRegister a configuration panel * @param destroy_cb This is the function to call when the panel need to be destroyed * @return EINA_TRUE on success, EINA_FALSE otherwise. * * When you dont need the entry in the configuration panel use this function. * You should do this at least on shoutdown */ Eina_Bool enna_config_panel_unregister(Enna_Config_Panel *ecp) { if (!ecp) return EINA_FALSE; _config_panels = eina_list_remove(_config_panels, ecp); if (ecp->label) eina_stringshare_del(ecp->label); if (ecp->icon) eina_stringshare_del(ecp->icon); ENNA_FREE(ecp); //TODO here emit an event like ENNA_CONFIG_PANEL_CHANGED return EINA_TRUE; }
int enna_util_shutdown() { _util_init_count--; if (_util_init_count == 0) { eina_stringshare_del(sd->cache); eina_stringshare_del(sd->config); eina_stringshare_del(sd->data); ENNA_FREE(sd); } return _util_init_count; }
void enna_mainmenu_shutdown(Evas_Object *obj) { Smart_Data *sd; sd =evas_object_data_get(obj, "mainmenu_data"); ENNA_EVENT_HANDLER_DEL(sd->act_handler); enna_input_listener_del(sd->listener); ENNA_OBJECT_DEL(sd->o_menu); ENNA_OBJECT_DEL(sd->o_volume); enna_browser_del(sd->browser); ENNA_FREE(sd); }
void photo_panel_infos_set_text (Evas_Object *obj, const char *filename) { Enna_Metadata *m; const char *meta; char *meta2 = NULL; API_ENTRY return; if (!filename || !ecore_file_exists(filename)) { edje_object_part_text_set (sd->o_edje, "infos.panel.textblock", _("No EXIF information found ...")); return; } m = enna_metadata_meta_new (filename); meta = enna_metadata_meta_get_all (m); if (meta) { unsigned int i, j; meta2 = calloc (2, strlen (meta)); for (i = 0, j = 0; i < strlen (meta); i++) { if (meta[i] != '\n') { meta2[j] = meta[i]; j++; } else { meta2[j] = '<'; meta2[j+1] = 'b'; meta2[j+2] = 'r'; meta2[j+3] = '>'; j += 4; } } } edje_object_part_text_set (sd->o_edje, "infos.panel.textblock", meta2 ? meta2: _("No EXIF such information found ...")); eina_stringshare_del(meta); ENNA_FREE (meta2); enna_metadata_meta_free (m); }
static void cfg_main_section_free (void) { char *c; ENNA_FREE(enna_config->theme); ENNA_FREE(enna_config->engine); ENNA_FREE(enna_config->verbosity); ENNA_FREE(enna_config->log_file); EINA_LIST_FREE(enna_config->music_filters, c) ENNA_FREE(c); EINA_LIST_FREE(enna_config->video_filters, c) ENNA_FREE(c); EINA_LIST_FREE(enna_config->photo_filters, c) ENNA_FREE(c); }
static void _del(void *priv) { Enna_Localfiles_Priv *p = priv; Ecore_Event_Handler *handler; if (p->file) eio_file_cancel(p->file); /* EINA_LIST_FREE(p->monitor_handlers, handler) */ /* { */ /* ecore_event_handler_del(handler); */ /* } */ /* if (p->monitor) */ /* eio_monitor_del(p->monitor); */ eina_stringshare_del(p->root); eina_stringshare_del(p->relative_path); ENNA_FREE(p); }
Eina_List * enna_util_tuple_get (const char *str, const char *delimiter) { Eina_List *tuple = NULL; char *l, *s = NULL; if (!str || !delimiter) return NULL; l = strdup(str); s = strtok(l, delimiter); do { if (s) tuple = eina_list_append(tuple, strdup(s)); s = strtok(NULL, delimiter); } while (s); ENNA_FREE(l); return tuple; }
int enna_util_has_suffix(char *str, Eina_List * patterns) { Eina_List *l; int result = 0; unsigned int i; char *tmp; if (!patterns || !str || !str[0]) return 0; for (l = patterns; l; l = eina_list_next(l)) { tmp = calloc(1, strlen(str) + 1); for (i = 0; i < strlen(str); i++) tmp[i] = tolower(str[i]); result |= enna_util_str_has_suffix(tmp, (char *)l->data); ENNA_FREE(tmp); } return result; }
static void gocomics_set_comic_strip (void) { char img_dst[1024] = { 0 }; char query[1024] = { 0 }; char tdate[16] = { 0 }; char *ptr_start, *ptr_end, *img_src = NULL; url_data_t data = { 0 }; if (!mod->comic_id) return; /* get expected destination file name */ snprintf(img_dst, sizeof(img_dst), "%s/%s_%.4d_%.2d_%.2d", mod->path, mod->comic_id, mod->year, mod->month, mod->day); /* no need to perform a web request for an already existing file */ if (ecore_file_exists(img_dst)) goto comic_strip_show; /* compute the requested URL */ snprintf (tdate, sizeof (tdate), "%.4d/%.2d/%.2d\n", mod->year, mod->month, mod->day); snprintf (query, sizeof(query), GOCOMICS_QUERY, mod->comic_id, tdate); enna_log(ENNA_MSG_EVENT, ENNA_MODULE_NAME, "Query Request: %s", query); /* perform request */ data = url_get_data(mod->url, query); if (!data.buffer) return; enna_log(ENNA_MSG_EVENT, ENNA_MODULE_NAME, "Query Result: %s", data.buffer); /* find the comic strip url */ ptr_start = strstr(data.buffer, GOCOMICS_NEEDLE_START); if (!ptr_start) goto err_url; ptr_start += strlen(GOCOMICS_NEEDLE_START); ptr_end = strstr(ptr_start, GOCOMICS_NEEDLE_END); if (!ptr_end) goto err_url; /* download and save the comic strip file */ img_src = strndup (ptr_start, strlen(ptr_start) - strlen(ptr_end)); enna_log(ENNA_MSG_EVENT, ENNA_MODULE_NAME, "Saving Comic Strip URL %s to %s", img_src, img_dst); url_save_to_disk(mod->url, img_src, img_dst); /* display the comic strip */ comic_strip_show: bs_service_page_show(img_dst); err_url: ENNA_FREE(img_src); ENNA_FREE(data.buffer); }
static int mp_file_set(const char *uri, const char *label) { mrl_t *mrl = NULL; player_type_t player_type = mp->default_type; enna_log(ENNA_MSG_INFO, NULL, "Try to load : %s , %s", uri, label); /* try network streams */ if (!strncmp(uri, URI_TYPE_FTP, strlen(URI_TYPE_FTP))) mrl = set_network_stream(uri, MRL_RESOURCE_FTP); else if (!strncmp(uri, URI_TYPE_HTTP, strlen(URI_TYPE_HTTP))) mrl = set_network_stream(uri, MRL_RESOURCE_HTTP); else if (!strncmp(uri, URI_TYPE_MMS, strlen(URI_TYPE_MMS))) mrl = set_network_stream(uri, MRL_RESOURCE_MMS); else if (!strncmp(uri, URI_TYPE_NETVDR, strlen(URI_TYPE_NETVDR))) { mrl = set_network_stream(uri, MRL_RESOURCE_NETVDR); player_type = mp->tv_type; } else if (!strncmp(uri, URI_TYPE_RTP, strlen(URI_TYPE_RTP))) mrl = set_network_stream(uri, MRL_RESOURCE_RTP); else if (!strncmp(uri, URI_TYPE_RTSP, strlen(URI_TYPE_RTSP))) mrl = set_network_stream(uri, MRL_RESOURCE_RTSP); else if (!strncmp(uri, URI_TYPE_SMB, strlen(URI_TYPE_SMB))) mrl = set_network_stream(uri, MRL_RESOURCE_SMB); else if (!strncmp(uri, URI_TYPE_TCP, strlen(URI_TYPE_TCP))) mrl = set_network_stream(uri, MRL_RESOURCE_TCP); else if (!strncmp(uri, URI_TYPE_UDP, strlen(URI_TYPE_UDP))) mrl = set_network_stream(uri, MRL_RESOURCE_UDP); else if (!strncmp(uri, URI_TYPE_UNSV, strlen(URI_TYPE_UNSV))) mrl = set_network_stream(uri, MRL_RESOURCE_UNSV); /* Try DVD video */ else if (!strncmp(uri, URI_TYPE_DVD, strlen(URI_TYPE_DVD))) { mrl = set_dvd_stream(uri, MRL_RESOURCE_DVD); player_type = mp->dvd_type; } else if (!strncmp(uri, URI_TYPE_DVDNAV, strlen(URI_TYPE_DVDNAV))) { mrl = set_dvd_stream(uri, MRL_RESOURCE_DVDNAV); player_type = mp->dvd_type; } /* Try TV */ else if (!strncmp(uri, URI_TYPE_VDR, strlen(URI_TYPE_VDR))) { char *device = NULL; char *driver = strstr(uri, "#"); size_t device_len = strlen(uri) - strlen(URI_TYPE_VDR); if (driver) { device_len -= strlen(driver); driver++; device = malloc(device_len); strncpy(device, uri + strlen(URI_TYPE_VDR), device_len); } else if (device_len) device = strdup(uri + strlen(URI_TYPE_VDR)); mrl = set_tv_stream(device, driver, MRL_RESOURCE_VDR); player_type = mp->tv_type; } /* Try CD Audio */ else if (!strncmp(uri, URI_TYPE_CDDA, strlen(URI_TYPE_CDDA))) { mrl = set_cdda_stream(uri, MRL_RESOURCE_CDDA); } /* Try Spotify stream */ else if (!strncmp(uri, URI_TYPE_SPOTIFY, strlen(URI_TYPE_SPOTIFY))) { mrl = set_spotify_stream(uri, MRL_RESOURCE_FILE); player_type = mp->spotify_type; } /* default is local files */ if (!mrl) { printf("MRL is NULL try local file\n"); const char *it; it = strrchr(uri, '.'); if (it && !strcmp(it, ".iso")) /* consider ISO file as DVD */ { mrl = set_dvd_stream(uri, MRL_RESOURCE_DVDNAV); player_type = mp->dvd_type; } else { mrl = set_local_stream(uri); } } if (!mrl) { printf("MRL is NULL\n"); return 1; } ENNA_FREE(mp->uri); mp->uri = strdup(uri); ENNA_FREE(mp->label); mp->label = label ? strdup(label) : NULL; mp->audio_delay = AUDIO_DELAY_DEFAULT; mp->subtitle_delay = SUB_DELAY_DEFAULT; /* Initialization of subtitles variables */ init_sub_align(); init_sub_pos(); init_sub_scale(); init_framedrop(); init_sub_visibility(); mp->player_type = player_type; mp->player = mp->players[player_type]; player_mrl_set(mp->player, mrl); if (mp->subtitle_alignment != SUB_ALIGNMENT_DEFAULT) player_subtitle_set_alignment(mp->player, mp->subtitle_alignment); if (mp->subtitle_position != SUB_POSITION_DEFAULT) player_subtitle_set_position(mp->player, mp->subtitle_position); if (mp->subtitle_scale != SUB_SCALE_DEFAULT) player_subtitle_scale(mp->player, mp->subtitle_scale, 1); player_subtitle_set_visibility(mp->player, mp->subtitle_visibility); if (mp->framedrop != FRAMEDROP_DEFAULT) player_set_framedrop(mp->player, mp->framedrop); return 0; }
static void games_sys_hide(Evas_Object *edje) { ENNA_OBJECT_DEL(mod->o_list); ENNA_FREE(mod); }