Solves jira TIZENIOT-2064 resolves force close on select all for delete 77/246177/2 submit/tizen/20201029.115907
authorJagrat Patidar <j1.patidar@samsung.com>
Mon, 26 Oct 2020 09:34:52 +0000 (15:04 +0530)
committerJagrat Patidar <j1.patidar@samsung.com>
Mon, 26 Oct 2020 09:38:54 +0000 (15:08 +0530)
Change-Id: Iede485bbcd84c4179d22bc66d60f9e33fbd0c716

src/common/include/mp-common.h
src/common/mp-common.c
src/common/mp-media-info.c
src/view/mp-list-view.c

index 03fda8cfb831a76c5f2091ff476992cbeed690e7..b0987c87e71957295d1001e63f30250b9e811381 100755 (executable)
@@ -39,6 +39,7 @@ typedef enum {
 } all_in_personal_e;
 #endif
 
+mp_done_operator_type_t mp_common_get_edit_type();
 void mp_common_show_player_view_after_play();
 void mp_common_show_setting_view(void);
 void mp_common_show_set_as_view();
index a2d2df29f8a6f31f17828dd5a4a00a842385478f..968a083075a3f5aa7475f96c71ca06839f65e469 100755 (executable)
 * @param  void
 * @return void
 */
+static mp_done_operator_type_t g_type = NULL;
+
+mp_done_operator_type_t mp_common_get_edit_type()
+{
+       return g_type;
+}
+
 void mp_common_show_setting_view(void)
 {
        MpViewMgr_t *view_mgr = GET_VIEW_MGR;
@@ -186,6 +193,7 @@ mp_common_show_edit_view(void *list_view, mp_done_operator_type_t type)
        MpEditView_t *edit_view =
                mp_edit_view_create(GET_NAVIFRAME, view->content_to_show, false);
 #endif
+       g_type = type;
        mp_view_mgr_push_view(GET_VIEW_MGR, (MpView_t *) edit_view, NULL);
        mp_view_update((MpView_t *) edit_view);
        mp_view_update_options((MpView_t *) edit_view);
@@ -1172,6 +1180,7 @@ void mp_common_show_add_tracks_view(int playlist_id)
                ERROR_TRACE("Unable to show add tracks");
                return;
        }
+       g_type = MP_DONE_ADD_TRACK_TYPE;
        mp_view_mgr_push_view(view_manager, (MpView_t *) view, NULL);
 
        mp_view_update_options((MpView_t *) view);
index 9ff8d56ab270a2d870d100f66d4c86ea2d954f33..fb24214f0797b7035a4e11f8fcb669a54d8d7c31 100755 (executable)
@@ -1159,10 +1159,8 @@ int mp_media_info_get_file_path(mp_media_info_h media, char **path)
        MP_CHECK_VAL(media, -1);
        MP_CHECK_VAL(media->i.minfo, -1);
        int res = MEDIA_CONTENT_ERROR_NONE;
-       if (media->i.minfo->file_path) {
-               IF_FREE(media->i.minfo->file_path);
-       }
-
+       //media->i.minfo->file_path is already cleared by the caller functions.
+       media->i.minfo->file_path = NULL;
        if (!media->i.minfo->file_path) {
                res =
                        media_info_get_file_path(media->h.media,
index 8578223b356120e2d42065cd0ea3f516edd22aaa..583f1241d946fba15e917273ac73fcc0b68a96bd 100755 (executable)
@@ -93,56 +93,73 @@ static void _mp_list_select_all_cb(void *data, Evas_Object * obj,
        it = mp_list_first_item_get(genlist);
        MpList_t *list = view->content_to_show;
 
-       char *uri = NULL;
-       while (it) {
-               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 (mp_common_get_edit_type() == MP_DONE_DELETE_TYPE) {
+               while (it) {
+                       if (mp_list_item_select_mode_get(it) ==
+                               ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
+                               || elm_object_item_disabled_get(it) == TRUE) {
+                               it = mp_list_item_next_get(it);
+                               continue;
+                       }
+                       mp_list_item_check_set(it, value);
+                       it = mp_list_item_next_get(it);
+               }
+               mp_view_update_options_edit((MpView_t *) view);
+               mp_util_create_selectioninfo_with_count(view,
+                       mp_list_get_checked_count
+                       (list));
+       } else {
+               char *uri = NULL;
+               while (it) {
+                       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;
+                                               }
                                        }
-                               }
-                               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;
-                                       }
+                               if (uri) {
+                                       ad->checkedList = g_list_append(ad->checkedList, g_strdup(uri));
                                }
                        }
-               } else {
-                       if (uri) {
-                               ad->checkedList = g_list_append(ad->checkedList, g_strdup(uri));
+                       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) {
+                               it = mp_list_item_next_get(it);
+                               continue;
                        }
-               }
-               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_list_item_check_set(it, value);
                        it = mp_list_item_next_get(it);
-                       continue;
-               }
-               mp_list_item_check_set(it, value);
-               it = mp_list_item_next_get(it);
 
+               }
+               mp_view_update_options_edit((MpView_t *) view);
+               mp_util_create_selectioninfo_with_count(view,
+                               g_list_length(ad->checkedList));
        }
-
-       mp_view_update_options_edit((MpView_t *) view);
-       mp_util_create_selectioninfo_with_count(view,
-                       g_list_length(ad->checkedList));
-
        endfunc;
 }