/*filter*/
int mp_media_filter_create(mp_filter_h *filter)
{
- //startfunc;
int res = media_filter_create(filter);
if (res != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Error code 0x%x", res);
}
int mp_media_filter_destory(mp_filter_h filter)
{
- //startfunc;
int res = media_filter_destroy(filter);
if (res != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Error code 0x%x", res);
}
int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count)
{
- //startfunc;
int res = media_filter_set_offset(filter, offset, count);
if (res != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Error code 0x%x", res);
}
int mp_media_filter_set_order(mp_filter_h filter, bool descending, const char *order_keyword, mp_media_content_collation_e collation)
{
- //startfunc;
int res = media_filter_set_order(filter, descending, order_keyword, (media_content_collation_e)collation);
if (res != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Error code 0x%x", res);
}
int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation)
{
- //startfunc;
int res = media_filter_set_condition(filter, condition, (media_content_collation_e)collation);
if (res != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Error code 0x%x", res);
/*media infomation*/
int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char * folder_id, int playlist_id, mp_filter_h filter, int *count)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
if (track_type == MP_TRACK_BY_FOLDER) {
res = media_folder_get_media_count_from_db(folder_id, filter, count);
int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int *count)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
filter_h filter = NULL;
res = mp_media_info_list_count_w_filter(track_type, type_string, playlist_id, filter, count);
media_filter_destroy(filter);
- //endfunc;
return res;
}
int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(media_list, -1);
int mp_media_info_list_create(mp_media_list_h *out_list,
mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
filter_h filter = NULL;
MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
res = media_filter_set_offset(filter, offset, count);
- //DEBUG_TRACE("offset: %d, count: %d", offset, count);
__mp_media_info_set_filter(filter, track_type, type_string, type_string2, filter_string);
res = mp_media_info_list_create_w_filter(track_type, type_string, playlist_id, filter, out_list);
#ifdef MP_SOUND_PLAYER
int mp_media_info_sorted_track_list_create(mp_media_list_h *out_list, char *sort_type)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
filter_h filter = NULL;
int mp_media_info_list_destroy(mp_media_list_h media_list)
{
- //startfunc;
MP_CHECK_VAL(media_list, -1);
if (media_list->list) {
int mp_media_info_create(mp_media_info_h *media_info, const char *media_id)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
*media_info = calloc(1, sizeof(struct mp_media_info_s));
MP_CHECK_VAL(*media_info, -1);
int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
mp_filter_h filter = NULL;
char sql[MAX_NAM_LEN] = {0,};
return res;
}
-/*int mp_media_info_set_cloud_thumbnail_path(mp_media_info_h media, const char *path)
-{
- MP_CHECK_VAL(media, -1);
- MP_CHECK_VAL(media->i.minfo, -1);
-
- char *current_thumbnail = NULL;
- mp_media_info_get_thumbnail_path(media, ¤t_thumbnail);
- if (!g_strcmp0(path, current_thumbnail)) {
- // already updated
- return 0;
- }
-
- mp_storage_type_e storage = MP_STORAGE_INTERNAL_EX;
- mp_media_info_get_storage_type(media, &storage);
-
- if (storage != MP_STORAGE_CLOUD_EX && storage != MP_STORAGE_MUSICHUB_EX) {
- WARN_TRACE("media is not cloud item [storage type = %d]", storage);
- return -1;
- }
-
- IF_FREE(media->i.minfo->thumbnail_path);
- media->i.minfo->thumbnail_path = g_strdup(path);
-
- int res = MEDIA_CONTENT_ERROR_NONE;
- char *media_id = NULL;
- mp_media_info_get_media_id(media, &media_id);
- res = media_cloud_info_update_thumbnail_path_to_db(media_id, path);
- if (res != MEDIA_CONTENT_ERROR_NONE)
- ERROR_TRACE("Error code 0x%x", res);
-
- PRINT_STR(path);
- return res;
-}*/
-
int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count)
{
- //startfunc;
mp_filter_h filter = NULL;
int res = MEDIA_CONTENT_ERROR_NONE;
}
int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(filter, -1);
switch (group_type) {
return false;
}
- //DEBUG_TRACE("info: %s, artist: %s", album, artist);
-
GList **list = user_data;
if (!*list) {
audio_meta_destroy(audio);
data->album_thumnails = realloc(data->album_thumnails, sizeof(char *) * (data->thumb_count + 1));
__mp_media_info_get_thumbnail_path(media, &(data->album_thumnails[data->thumb_count]));
data->thumb_count++;
- //DEBUG_TRACE("artist: %s, album: %s", artist, album);
IF_FREE(album);
} else {
IF_FREE(album);
media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
media_foreach_cb = _album_track_foreach_cb;
break;
- //case MP_GROUP_BY_ARTIST_ALBUM:
- //break;
case MP_GROUP_BY_ARTIST:
media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_ARTIST, MEDIA_ALBUM", MEDIA_CONTENT_COLLATE_NOCASE);
media_foreach_cb = _artist_track_foreach_cb;
media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, "folder_uuid", MEDIA_CONTENT_COLLATE_NOCASE);
media_foreach_cb = _folder_track_foreach_cb;
break;
- //case MP_GROUP_BY_YEAR:
- // break;
- //case MP_GROUP_BY_COMPOSER:
- // break;
- //case MP_GROUP_BY_PLAYLIST:
- // break;
default:
WARN_TRACE("Unsupported type: %d", group_type);
media_filter_destroy(filter);
} else {
ret = mp_media_info_group_get_sub_info(media, &info);
}
- //DEBUG_TRACE("find folder from glist: %s", folder);
- //DEBUG_TRACE("list count: %d", g_list_length(node));
if (ret != MEDIA_CONTENT_ERROR_NONE) {
ERROR_TRACE("Get group info error");
}
IF_FREE(data->album);
free(data);
list = g_list_delete_link(list, node);
- //DEBUG_TRACE("Found data!! count: %d, thumb: %s", media->i.ginfo->track_count, media->i.ginfo->thumb_path);
break;
}
node = g_list_next(node);
static int
_mp_media_info_set_extra_info(mp_media_list_h media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string)
{
- //startfunc;
_mp_media_info_set_group_extra_info(media_list, group_type, type_string, filter_string);
return 0;
}
int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count)
{
- //startfunc;
mp_filter_h filter = NULL;
int res = MEDIA_CONTENT_ERROR_NONE;
int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list)
{
- //startfunc;
MP_CHECK_VAL(media_list, -1);
*media_list = calloc(1, sizeof(struct mp_media_list_s));
int mp_media_info_group_list_destroy(mp_media_list_h media_list)
{
-// startfunc;
MP_CHECK_VAL(media_list, -1);
g_list_free_full(media_list->list, __mp_media_group_destory);
IF_FREE(media_list->distinct_check);
char *folde_id = NULL;
if (!media->i.ginfo->thumb_path) {
- /*if (media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM)
- res = media_album_get_album_art(media->h.group, &media->i.ginfo->thumb_path);
- else*/{
- filter_h filter;
- mp_media_list_h list = NULL;
- mp_media_info_h minfo = NULL;
- char *type_string = NULL;
- char cond[MAX_FILTER_LEN] = {0,};
- int count = 0;
-
- mp_media_info_group_get_main_info(media, &type_string);
-
- res = media_filter_create(&filter);
- if (res != MEDIA_CONTENT_ERROR_NONE) {
- mp_error("media_filter_create:error=%d", res);
- IF_FREE(folde_id);
- return res;
- }
+ filter_h filter;
+ mp_media_list_h list = NULL;
+ mp_media_info_h minfo = NULL;
+ char *type_string = NULL;
+ char cond[MAX_FILTER_LEN] = {0,};
+ int count = 0;
- strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond));
- if (media->s.group_type == MP_GROUP_BY_PLAYLIST) {
- media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
- } else {
- media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
- }
+ mp_media_info_group_get_main_info(media, &type_string);
- if (media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM) {
- strncat(cond, " AND MEDIA_ALBUM='", STRNCAT_LEN(cond));
- _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
- strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+ res = media_filter_create(&filter);
+ if (res != MEDIA_CONTENT_ERROR_NONE) {
+ mp_error("media_filter_create:error=%d", res);
+ IF_FREE(folde_id);
+ return res;
+ }
- mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
- }
+ strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond));
+ if (media->s.group_type == MP_GROUP_BY_PLAYLIST) {
+ media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
+ } else {
+ media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+ }
- } else if (media->s.group_type == MP_GROUP_BY_ARTIST && type_string) {
- strncat(cond, " AND MEDIA_ARTIST='", STRNCAT_LEN(cond));
- _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
- strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+ if (media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM) {
+ strncat(cond, " AND MEDIA_ALBUM='", STRNCAT_LEN(cond));
+ _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
+ strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond));
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
- mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
- }
+ mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+ }
- } else if (media->s.group_type == MP_GROUP_BY_GENRE && type_string) {
- strncat(cond, " AND MEDIA_GENRE='", STRNCAT_LEN(cond));
- _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
- strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+ } else if (media->s.group_type == MP_GROUP_BY_ARTIST && type_string) {
+ strncat(cond, " AND MEDIA_ARTIST='", STRNCAT_LEN(cond));
+ _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
+ strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond));
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
- mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
- }
- } else if (media->s.group_type == MP_GROUP_BY_FOLDER) {
- mp_media_info_group_get_folder_id(media, &folde_id);
+ mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+ }
- strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+ } else if (media->s.group_type == MP_GROUP_BY_GENRE && type_string) {
+ strncat(cond, " AND MEDIA_GENRE='", STRNCAT_LEN(cond));
+ _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
+ strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
- mp_media_info_list_count_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &list);
- }
- } else if (media->s.group_type == MP_GROUP_BY_YEAR && type_string) {
- strncat(cond, " AND MEDIA_YEAR='", STRNCAT_LEN(cond));
- _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
- strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
-
- mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
- }
- } else if (media->s.group_type == MP_GROUP_BY_COMPOSER && type_string) {
- strncat(cond, " AND MEDIA_COMPOSER='", STRNCAT_LEN(cond));
- _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
- strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
-
- mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
- }
- } else if (media->s.group_type == MP_GROUP_BY_PLAYLIST) {
- int playlist_id = 0;
- mp_media_info_group_get_playlist_id(media, &playlist_id);
+ mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+ }
+ } else if (media->s.group_type == MP_GROUP_BY_FOLDER) {
+ mp_media_info_group_get_folder_id(media, &folde_id);
- strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+ strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
- media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
- mp_media_info_list_count_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &count);
- if (count > 0) {
- media_filter_set_offset(filter, 0, 1);
- mp_media_info_list_create_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &list);
- }
- } else {
- WARN_TRACE("Unhandled type: %d", media->s.group_type);
- media_filter_destroy(filter);
- goto END;
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+ mp_media_info_list_count_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &list);
}
- WARN_TRACE("count: %d", count);
-
- if (list) {
- char *thumb_path = NULL;
- minfo = mp_media_info_list_nth_item(list, 0);
- if (!minfo) {
- media_filter_destroy(filter);
- return -1;
- }
- mp_media_info_get_thumbnail_path(minfo, &thumb_path);
- media->i.ginfo->thumb_path = g_strdup(thumb_path);
- mp_media_info_list_destroy(list);
+ } else if (media->s.group_type == MP_GROUP_BY_YEAR && type_string) {
+ strncat(cond, " AND MEDIA_YEAR='", STRNCAT_LEN(cond));
+ _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
+ strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+ mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+ }
+ } else if (media->s.group_type == MP_GROUP_BY_COMPOSER && type_string) {
+ strncat(cond, " AND MEDIA_COMPOSER='", STRNCAT_LEN(cond));
+ _mp_media_info_sql_strncat(cond, type_string, STRNCAT_LEN(cond));
+ strncat(cond, "' AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+ mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
}
+ } else if (media->s.group_type == MP_GROUP_BY_PLAYLIST) {
+ int playlist_id = 0;
+ mp_media_info_group_get_playlist_id(media, &playlist_id);
+
+ strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+
+ media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+ mp_media_info_list_count_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &count);
+ if (count > 0) {
+ media_filter_set_offset(filter, 0, 1);
+ mp_media_info_list_create_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &list);
+ }
+ } else {
+ WARN_TRACE("Unhandled type: %d", media->s.group_type);
media_filter_destroy(filter);
+ goto END;
}
+ WARN_TRACE("count: %d", count);
+ if (list) {
+ char *thumb_path = NULL;
+ minfo = mp_media_info_list_nth_item(list, 0);
+ if (!minfo) {
+ media_filter_destroy(filter);
+ return -1;
+ }
+ mp_media_info_get_thumbnail_path(minfo, &thumb_path);
+ media->i.ginfo->thumb_path = g_strdup(thumb_path);
+ mp_media_info_list_destroy(list);
+ }
+ media_filter_destroy(filter);
}
END:
IF_FREE(folde_id);
int mp_media_info_playlist_set_thumbnail_path(mp_media_info_h media, const char *path)
{
/*currently, it only works for playlist thumbnail update*/
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(path, -1);
int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id)
{
- //startfunc;
mp_filter_h filter = NULL;
mp_media_list_h list;
mp_media_info_h media;
int mp_media_info_playlist_delete_from_db(int playlist_id)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
res = media_playlist_delete_from_db(playlist_id);
return res;
int mp_media_info_playlist_add_media(int playlist_id, const char *media_id)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
media_playlist_h playlist = NULL;
int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist, -1);
int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
filter_h filter = NULL;
char cond[MAX_FILTER_LEN] = {0,};
int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length)
{
- //startfunc;
bool exist = false;
int i = 1;
int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist, -1);
int mp_media_info_playlist_db_update(mp_playlist_h playlist_handle)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist_handle, -1);
int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist, -1);
int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int playlist_member_id, int play_order)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist, -1);
int mp_media_info_playlist_update_db(mp_media_info_h playlist)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
MP_CHECK_VAL(playlist, -1);
int
mp_media_info_delete_from_db(const char *path)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
res = media_content_scan_file(path);
MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle)
{
- //startfunc;
int res = MEDIA_CONTENT_ERROR_NONE;
media_playlist_h playlist = NULL;
int mp_media_info_playlist_get_name_by_id(int playlist_id, char **playlist_name)
{
- //startfunc;
mp_filter_h filter = NULL;
mp_media_list_h list;
mp_media_info_h media = NULL;
{
mp_plst_item *node = (mp_plst_item *)data;
MP_CHECK(node);
-#ifdef MP_FEATURE_PLST_QUEUE
- if (node->is_queue) {
- DEBUG_TRACE("queued item will be remained");
- return;
- }
-#endif
IF_FREE(node->uri);
IF_FREE(node->uid);
IF_FREE(node->title);
}
/*insert to shuffle list*/
-#ifdef MP_FEATURE_PLST_QUEUE
- int queue_lenth;
- queue_lenth = g_list_length(playlist_mgr->queue_list);
- pos = __mp_playlist_mgr_rand_position(g_list_length(playlist_mgr->normal_list), queue_lenth);
-
- int queue_start = g_list_index(playlist_mgr->shuffle_list, g_list_nth_data(playlist_mgr->queue_list, 0));
- if (pos >= queue_start - 1) {
- pos += queue_lenth;
- }
-#else
pos = __mp_playlist_mgr_rand_position(g_list_length(playlist_mgr->normal_list), 0);
-#endif
if (playlist_mgr->shuffle_state) {
cur = mp_playlist_mgr_get_current(playlist_mgr);
return node;
}
-#ifdef __PRINT_PLAYLIST_ITEMS__
-static void
-__playlist_print_list(void *data, void *user_data)
-{
- mp_plst_item *cur = data;
- WARN_TRACE("%s", cur->uri);
-}
-#endif
-
mp_plst_item *mp_playlist_mgr_item_append(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, const char *title, const char *artist, mp_track_type type)
{
MP_CHECK_VAL(playlist_mgr, NULL);
_mp_playlist_mgr_item_append_common(playlist_mgr, node, -1);
-#ifdef __PRINT_PLAYLIST_ITEMS__
- DEBUG_TRACE("list");
- g_list_foreach(playlist_mgr->list, __playlist_print_list, playlist_mgr->list);
- DEBUG_TRACE("normal list");
- g_list_foreach(playlist_mgr->normal_list, __playlist_print_list, playlist_mgr->normal_list);
- DEBUG_TRACE("shuffle list");
- g_list_foreach(playlist_mgr->shuffle_list, __playlist_print_list, playlist_mgr->shuffle_list);
-#endif
-
return node;
}
item->playlist_memeber_id = memeber_id;
}
-#ifdef MP_FEATURE_PLST_QUEUE
-static GList *__mp_playlist_mgr_delete_queue_link(GList *list)
-{
- startfunc;
- mp_plst_item *item;
- GList *new_list, *remove;
- int idx = 0;
-
- new_list = list;
- remove = g_list_nth(new_list, idx);
- MP_CHECK_NULL(remove);
-
- while (remove) {
- item = remove->data;
-
- if (item->is_queue) {
- DEBUG_TRACE("delete : %s", item->uid);
- new_list = g_list_remove_link(new_list, remove);
- g_list_free(remove);
- } else {
- idx++;
- }
-
- remove = g_list_nth(new_list, idx);
- }
-
- return new_list;
-}
-
-static void __mp_playlist_mgr_index(mp_plst_mgr *playlist_mgr, int *pos, int *shuffle_pos)
-{
- MP_CHECK(playlist_mgr);
- int idx, s_idx;
- if (playlist_mgr->shuffle_state) {
- s_idx = playlist_mgr->current_index;
- idx = g_list_index(playlist_mgr->normal_list, g_list_nth_data(playlist_mgr->shuffle_list, s_idx));
- } else {
- idx = playlist_mgr->current_index;
- s_idx = g_list_index(playlist_mgr->shuffle_list, g_list_nth_data(playlist_mgr->normal_list, idx));
- }
-
- *pos = idx;
- *shuffle_pos = s_idx;
-}
-
-static void __mp_playlist_mgr_clear_queue(mp_plst_mgr *playlist_mgr)
-{
- startfunc;
- int idx, s_idx;
-
- MP_CHECK(playlist_mgr);
-
- __mp_playlist_mgr_index(playlist_mgr, &idx, &s_idx);
- DEBUG_TRACE("idx: %d, s_idx: %d", idx, s_idx);
-
- playlist_mgr->normal_list = __mp_playlist_mgr_delete_queue_link(playlist_mgr->normal_list);
- playlist_mgr->shuffle_list = __mp_playlist_mgr_delete_queue_link(playlist_mgr->shuffle_list);
-
- __mp_playlist_mgr_select_list(playlist_mgr);
-
- endfunc;
-}
-
-static void
-__mp_playlist_mgr_insert_queue_links(mp_plst_mgr *playlist_mgr)
-{
- GList *list;
- int idx, s_idx;
-
- MP_CHECK(playlist_mgr);
-
- __mp_playlist_mgr_index(playlist_mgr, &idx, &s_idx);
-
- list = g_list_last(playlist_mgr->queue_list);
- MP_CHECK(list);
-
- idx++;
- s_idx++;
-
- do {
- playlist_mgr->normal_list = g_list_insert(playlist_mgr->normal_list, list->data, idx);
- playlist_mgr->shuffle_list = g_list_insert(playlist_mgr->shuffle_list, list->data, s_idx);
- list = g_list_previous(list);
- } while (list);
-
- if (playlist_mgr->queue_item_cb) {
- playlist_mgr->queue_item_cb(MP_PLSYLIST_QUEUE_MOVED, playlist_mgr->shuffle_state ? s_idx : idx, playlist_mgr->userdata);
- }
-}
-
-mp_plst_item *mp_playlist_mgr_item_queue(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, mp_track_type type)
-{
- DEBUG_TRACE("uri: %s, uid:%s", uri, uid);
- MP_CHECK_VAL(playlist_mgr, NULL);
-
- mp_plst_item *p_data = NULL;
- GList *last;
- int pos, s_pos;
-
- if (playlist_mgr->queue_list) {
- last = g_list_last(playlist_mgr->queue_list);
- if (last) {
- p_data = last->data;
- }
- }
- /*create data*/
- mp_plst_item *node = calloc(1, sizeof(mp_plst_item));
- MP_CHECK_VAL(node, NULL);
-
- if (uri) {
- node->track_type = EINA_TRUE;
- node->uri = g_strdup(uri);
- }
- node->uid = g_strdup(uid);
- node->is_queue = EINA_TRUE;
-
- /*append item*/
- playlist_mgr->queue_list = g_list_append(playlist_mgr->queue_list, node);
-
- /*insert queue items to list*/
- if (p_data) {
- pos = g_list_index(playlist_mgr->normal_list, p_data) + 1;
- s_pos = g_list_index(playlist_mgr->shuffle_list, p_data) + 1;
- } else {
- __mp_playlist_mgr_index(playlist_mgr, &pos, &s_pos);
- pos++;
- s_pos++;
- }
- playlist_mgr->normal_list = g_list_insert(playlist_mgr->normal_list, node, pos);
- playlist_mgr->shuffle_list = g_list_insert(playlist_mgr->shuffle_list, node, s_pos);
-
- /*select list */
- __mp_playlist_mgr_select_list(playlist_mgr);
-
- if (playlist_mgr->queue_item_cb) {
- playlist_mgr->queue_item_cb(MP_PLAYLIST_QUEUE_ADDED, playlist_mgr->shuffle_state ? s_pos : pos, playlist_mgr->userdata);
- }
-
- return node;
-}
-#endif
-
void mp_playlist_mgr_item_remove_item(mp_plst_mgr *playlist_mgr, mp_plst_item *item)
{
startfunc;
/*remove from normal_list*/
remove = g_list_find(playlist_mgr->normal_list, item);
MP_CHECK(remove);
-#ifdef MP_FEATURE_PLST_QUEUE
- item->is_queue = EINA_FALSE;
-#endif
playlist_mgr->normal_list = g_list_remove_link(playlist_mgr->normal_list, remove);
g_list_free_full(remove, __mp_playlist_mgr_item_free);
-#ifdef MP_FEATURE_PLST_QUEUE
- /*remove from queue list*/
- if (playlist_mgr->queue_list) {
- remove = g_list_find(playlist_mgr->queue_list, item);
- if (remove) {
- playlist_mgr->queue_list = g_list_remove_link(playlist_mgr->queue_list, remove);
- g_list_free(remove);
- }
- }
-#endif
-
/*select list*/
__mp_playlist_mgr_select_list(playlist_mgr);
g_list_free(playlist_mgr->shuffle_list);
}
-#ifdef MP_FEATURE_PLST_QUEUE
- if (playlist_mgr->queue_list) {
- playlist_mgr->normal_list = g_list_copy(playlist_mgr->queue_list);
- playlist_mgr->shuffle_list = g_list_copy(playlist_mgr->queue_list);
-
- __mp_playlist_mgr_select_list(playlist_mgr);
- } else
-#endif
- {
- playlist_mgr->normal_list = NULL;
- playlist_mgr->shuffle_list = NULL;
- playlist_mgr->list = NULL;
- }
+ playlist_mgr->normal_list = NULL;
+ playlist_mgr->shuffle_list = NULL;
+ playlist_mgr->list = NULL;
mp_playlist_mgr_set_list_type(playlist_mgr, MP_PLST_TYPE_NONE);
int mp_playlist_mgr_count(mp_plst_mgr *playlist_mgr)
{
- /* startfunc; */
MP_CHECK_VAL(playlist_mgr, 0);
MP_CHECK_VAL(playlist_mgr->list, 0);
return g_list_length(playlist_mgr->list);
mp_plst_item *mp_playlist_mgr_get_nth(mp_plst_mgr *playlist_mgr, int index)
{
- /* startfunc; */
MP_CHECK_VAL(playlist_mgr, NULL);
MP_CHECK_VAL(playlist_mgr->list, NULL);
return (mp_plst_item *)g_list_nth_data(playlist_mgr->list, index);
mp_plst_item *mp_playlist_mgr_normal_list_get_nth(mp_plst_mgr *playlist_mgr, int index)
{
- /* startfunc; */
MP_CHECK_VAL(playlist_mgr, NULL);
MP_CHECK_VAL(playlist_mgr->normal_list, NULL);
return (mp_plst_item *)g_list_nth_data(playlist_mgr->normal_list, index);
mp_plst_item *mp_playlist_mgr_get_item_by_uid(mp_plst_mgr *playlist_mgr, const char *uid)
{
- /* startfunc; */
MP_CHECK_VAL(playlist_mgr, NULL);
MP_CHECK_VAL(playlist_mgr->list, NULL);
MP_CHECK_VAL(uid, NULL);
playlist_mgr->shuffle_list = g_list_prepend(playlist_mgr->shuffle_list, data);
__mp_playlist_mgr_select_list(playlist_mgr);
-#ifdef __PRINT_PLAYLIST_ITEMS__
- DEBUG_TRACE("shuffle list");
- g_list_foreach(playlist_mgr->shuffle_list, __playlist_print_list, playlist_mgr->shuffle_list);
-#endif
}
void mp_playlist_mgr_set_current(mp_plst_mgr *playlist_mgr, mp_plst_item *cur)
cur = mp_playlist_mgr_get_nth(playlist_mgr, 0);
}
MP_CHECK(cur);
-#ifdef __PRINT_PLAYLIST_ITEMS__
- DEBUG_TRACE("normal list");
- g_list_foreach(playlist_mgr->normal_list, __playlist_print_list, playlist_mgr->normal_list);
- DEBUG_TRACE("shuffle list");
- g_list_foreach(playlist_mgr->shuffle_list, __playlist_print_list, playlist_mgr->shuffle_list);
-#endif
-#ifdef MP_FEATURE_PLST_QUEUE
- bool insert_queue = false;
- /*remove queue item*/
- before = mp_playlist_mgr_get_current(playlist_mgr);
- if (before && before->is_queue) {
- DEBUG_TRACE("queue spent");
- before_index = playlist_mgr->current_index;
-
- call_remove_item_callback = true;
-
- mp_playlist_mgr_item_remove_item(playlist_mgr, before);
- }
-
- /*clear queue item if needed*/
- if (!cur->is_queue && playlist_mgr->queue_list) {
- __mp_playlist_mgr_clear_queue(playlist_mgr);
- insert_queue = true;
- }
-#endif
/*set current*/
index = g_list_index(playlist_mgr->list, cur);
if (index < 0) {
DEBUG_TRACE("cur: %s, index: %d", cur->uri, playlist_mgr->current_index);
-#ifdef MP_FEATURE_PLST_QUEUE
- /*insert queue item after cur*/
- if (insert_queue) {
- __mp_playlist_mgr_insert_queue_links(playlist_mgr);
- }
-#endif
finish:
-#ifdef MP_FEATURE_PLST_QUEUE
- if (call_remove_item_callback && playlist_mgr->queue_item_cb) {
- playlist_mgr->queue_item_cb(MP_PLSYLIST_QUEUE_REMOVED, before_index, playlist_mgr->userdata);
- }
-#endif
if (playlist_mgr->item_change_cb) {
playlist_mgr->item_change_cb(cur, playlist_mgr->item_change_userdata);
}
Eina_Bool mp_playlist_mgr_is_shuffle(mp_plst_mgr *playlist_mgr)
{
- /* startfunc; */
MP_CHECK_VAL(playlist_mgr, 0);
return playlist_mgr->shuffle_state;
}
endfunc;
}
-#ifdef MP_FEATURE_PLST_QUEUE
-Eina_Bool mp_playlist_mgr_set_queue_cb(mp_plst_mgr *playlist_mgr, mp_queue_item_removed_cb cb, void *userdata)
-{
- MP_CHECK_VAL(playlist_mgr, 0);
-
- playlist_mgr->userdata = userdata;
- playlist_mgr->queue_item_cb = cb;
-
- return true;
-}
-#endif
-
int mp_playlist_mgr_set_item_change_callback(mp_plst_mgr *playlist_mgr, mp_playlist_item_change_callback cb, void *userdata)
{
MP_CHECK_VAL(playlist_mgr, 0);