it = mp_list_first_item_get(genlist);
MpList_t *list = view->content_to_show;
- ad->checkedList = NULL;
char *uri = NULL;
while (it) {
- if (value) {
- it_data = elm_object_item_data_get(it);
- mp_media_info_get_file_path(it_data->handle, &uri);
+ it_data = elm_object_item_data_get(it);
+ mp_media_info_get_file_path(it_data->handle, &uri);
+ if (ad->checkedList && uri) {
+ ad->checkedList = g_list_first(ad->checkedList);
+ GList *l;
+ if (value) {
+ int flag = 0;
+ for (l = ad->checkedList ; l != NULL ; l = l->next) {
+ if (g_strcmp0(l->data, uri) == 0) {
+ flag = 1;
+ break;
+ }
+ }
+ if (!flag) {
+ ad->checkedList = g_list_append(ad->checkedList, g_strdup(uri));
+ }
+ } else {
+ for (l = ad->checkedList ; l != NULL ; l = l->next) {
+ if (g_strcmp0(l->data, uri) == 0) {
+ IF_FREE(l->data);
+ ad->checkedList = g_list_delete_link(ad->checkedList, l);
+ break;
+ }
+ }
+ }
+ } else {
if (uri) {
ad->checkedList = g_list_append(ad->checkedList, g_strdup(uri));
}
- SAFE_FREE(uri);
- mp_media_info_assign_null(it_data->handle);
}
+ SAFE_FREE(uri);
+ mp_media_info_assign_null(it_data->handle);
+
if (mp_list_item_select_mode_get(it) ==
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
|| elm_object_item_disabled_get(it) == TRUE) {
mp_view_update_options_edit((MpView_t *) view);
mp_util_create_selectioninfo_with_count(view,
- mp_list_get_checked_count
- (list));
+ g_list_length(ad->checkedList));
endfunc;
}
return EINA_TRUE;
}
+static void _mp_select_track_view_list_append(MpTrackList_t * list,
+ mp_media_list_h svc_handle,
+ int count)
+{
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ int index = 0;
+ for (index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ item = mp_media_info_list_nth_item(svc_handle, index);
+ mp_list_item_data_t *item_data;
+ item_data = calloc(1, sizeof(mp_list_item_data_t));
+ MP_CHECK(item_data);
+ item_data->handle = item;
+ item_data->index = index;
+ item_data->group_type = MP_GROUP_NONE;
+
+ char *file_path = NULL;
+ mp_media_info_get_file_path(item, &file_path);
+ if (ad->selector_mode_bit) {
+ item_data->checked = EINA_FALSE;
+ if (ad->checkedList) {
+ ad->checkedList = g_list_first(ad->checkedList);
+ GList *l;
+ for (l = ad->checkedList ; l != NULL ; l = l->next) {
+ if (g_strcmp0(l->data, file_path) == 0) {
+ item_data->checked = EINA_TRUE;
+ break;
+ }
+ }
+ }
+ } else {
+ item_data->checked =
+ mp_list_is_in_checked_path_list(list->checked_path_list,
+ file_path);
+ }
+
+ item_data->it = elm_genlist_item_append(list->genlist, list->itc, item_data,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, list);
+ }
+ endfunc;
+}
+
+static void _mp_track_list_item_del_cb(void *data, Evas_Object * obj)
+{
+ mp_list_item_data_t *item_data = data;
+ MP_CHECK(item_data);
+ SAFE_FREE(item_data);
+}
+
+static void mp_select_track_view_modify_list(MpTrackList_t *list)
+{
+ MP_CHECK(list);
+ elm_genlist_clear(list->genlist);
+
+ list->itc = elm_genlist_item_class_new();
+ if (list->itc) {
+ list->itc->item_style = "2line";
+ list->itc->func.text_get = NULL;
+ list->itc->func.content_get = NULL;
+ list->itc->func.del = _mp_track_list_item_del_cb;
+ }
+
+ mp_media_list_h svc_handle = NULL;
+ int count = 0;
+
+ mp_media_info_list_count(MP_TRACK_LIST_TYPE, MP_TRACK_LIST_TYPE_STR,
+ MP_TRACK_LIST_TYPE_STR2, MP_TRACK_ALL,
+ -1, &count);
+
+ mp_media_info_list_create(&svc_handle, MP_TRACK_LIST_TYPE,
+ MP_TRACK_LIST_TYPE_STR, MP_TRACK_LIST_TYPE_STR2,
+ MP_TRACK_ALL, -1, 0,
+ count);
+ _mp_select_track_view_list_append(list, svc_handle, count);
+ DEBUG_TRACE("List modified to include all the checked songs");
+}
void
mp_select_track_view_add_to_playlist_cb(void *data, Evas_Object * obj,
void *event_info)
MP_VIEW_ADD_TRACK);
MP_CHECK(view);
- mp_edit_cb_excute_add_to_playlist(data, view->playlist_id, NULL, true);
+ MpTrackList_t *list = data;
+ mp_select_track_view_modify_list(list);
+
+ mp_edit_cb_excute_add_to_playlist(list, view->playlist_id, NULL, true);
}
static int _mp_select_track_view_update_options(void *thiz)