initial tizen_2.0_beta
[apps/core/preloaded/music-player.git] / src / common / mp-common.c
index 310fb58..0c3ab5c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <Ecore_X.h>
-#include <appcore-efl.h>
 #include <vconf.h>
 
 #include "mp-common.h"
 #include "mp-player-debug.h"
 
-#include "audio-svc.h"
+#include "mp-media-info.h"
 #include "mp-view-layout.h"
 #include "mp-util.h"
 #include "mp-menu.h"
 #include "mp-view-manager.h"
 #include "mp-widget.h"
 #include "mp-library.h"
-#include "mp-player-control.h"
-
-static Evas_Object *g_main_win;
-
-static void
-_mp_common_win_del(void *data, Evas_Object * obj, void *event)
-{
-       elm_exit();
-}
-
-Evas_Object *
-mp_create_win(const char *name)
-{
-       Evas_Object *eo;
-       int w, h;
-
-       if (g_main_win)
-               return g_main_win;
-
-       g_main_win = eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
-       if (eo)
-       {
-               elm_win_title_set(eo, name);
-               elm_win_borderless_set(eo, EINA_TRUE);
-               evas_object_smart_callback_add(eo, "delete,request", _mp_common_win_del, NULL);
-               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-               evas_object_resize(eo, w, h);
-       }
-
-       return eo;
-}
-
-Evas_Object *
-mp_get_main_win(void)
-{
-       if (!g_main_win)
-               ERROR_TRACE("main_win is NULL, create it first!!!!!");
-       return g_main_win;
-}
-
-int
-mp_commmon_check_rotate_lock(void)
-{
-       int lock = FALSE;
-       lock = -1;
-       if (!vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &lock))
-       {
-               mp_debug("lock state: %d", lock);
-               return lock;
-       }
-       else
-               return -1;
-}
-
-
-int
-mp_check_battery_available(void)
-{
-       int batt_state = -1;
-
-       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &batt_state))
-       {
-               /* low battery status
-                *      VCONFKEY_SYSMAN_BAT_WARNING_LOW         = 15 %
-                *      VCONFKEY_SYSMAN_BAT_CRITICAL_LOW        = 5 %
-                *      VCONFKEY_SYSMAN_BAT_POWER_OFF           = 1 %
-                *      since 2011. 03. 02
-                */
-               if (batt_state <= VCONFKEY_SYSMAN_BAT_POWER_OFF)        //VCONFKEY_SYSMAN_BAT_POWER_OFF - 1% remaninging
-               {
-                       WARN_TRACE("batt_state: %d", batt_state);
-                       return -1;
-               }
-       }
-       else
-       {
-               ERROR_TRACE("Fail to get battery status");
-       }
-       return 0;
-}
-
-int
-mp_check_mass_storage_mode(void)
-{
-       int mass_storage = -1;
-
-       if (!vconf_get_int(VCONFKEY_USB_STORAGE_STATUS, &mass_storage))
-       {
-               DEBUG_TRACE("current mass_storage : %d", mass_storage);
-               if (mass_storage != VCONFKEY_USB_STORAGE_STATUS_OFF)
-                       return -1;
-       }
-       else
-       {
-               ERROR_TRACE("Fail to get status");
-       }
-       return 0;
-}
-
-inline Evas_Object *
-mp_common_load_edj(Evas_Object * parent, const char *file, const char *group)
-{
-       Evas_Object *eo = NULL;
-       int r = -1;
-
-       eo = elm_layout_add(parent);
-       if (eo)
-       {
-               r = elm_layout_file_set(eo, file, group);
-               if (!r)
-               {
-                       evas_object_del(eo);
-                       return NULL;
-               }
-               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_show(eo);
-       }
-
-       return eo;
-}
 
 char *
 mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *track = (AudioHandleType *) (item->handle);
+       mp_media_info_h track = (mp_media_info_h) (item->handle);
        mp_retvm_if(!track, NULL, "data is null");
 
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        MP_CHECK_NULL(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
 
-       if (!strcmp(part, "elm.text.1"))
+       if (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.1"))
+       {
+               char *pathname = NULL;
+               mp_media_info_get_file_path(track, &pathname);
+               mp_retv_if(!pathname, NULL);
+               const char *fileanme = ecore_file_file_get(pathname);
+
+               return g_strdup(fileanme);
+       }
+       else if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
        {
                char *title = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size, -1);
+
+               mp_media_info_get_title(track,  &title);
 
                mp_retv_if(!title, NULL);
                if(layout_data->filter_str)
@@ -188,77 +71,35 @@ mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part)
                        if(res)
                                return strdup(markup_name);
                }
-               return elm_entry_utf8_to_markup(title);
+               else if (!strcmp(part, "elm.text.1"))
+               {
+                       char *markup = elm_entry_utf8_to_markup(title);
+                       return markup;
+               }
+               else
+                       return g_strdup(title);
        }
-       else if (!strcmp(part, "elm.text.2"))
+       else if (!strcmp(part, "elm.text.2") && layout_data->track_type != MP_TRACK_BY_FOLDER)
        {
                char *artist = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_ARTIST, &artist, &size, -1);
+               mp_media_info_get_artist(track, &artist);
                mp_retv_if(!artist, NULL);
-               return strdup(artist);
+               return g_strdup(artist);
        }
-       else if (!strcmp(part, "elm.text.3"))
+       else if (!strcmp(part, "elm.text.3") ||
+               (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.2")))
        {
                int duration;
                char time[16] = "";
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_DURATION, &duration, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_DURATION, &duration, -1);
+               mp_media_info_get_duration(track, &duration);
 
                mp_util_format_duration(time, duration);
                time[15] = '\0';
-               return strdup(time);
+               return g_strdup(time);
        }
        return NULL;
 }
 
-bool mp_common_track_get_aa_index(int index, mp_layout_data_t *layout_data, Elm_Object_Item *gli, bool is_item_del)
-{
-       MP_CHECK_FALSE(layout_data);
-       MP_CHECK_FALSE(gli);
-       MP_CHECK_FALSE(index >= 0);
-
-       if (!is_item_del) {
-               index = 0;
-               Elm_Object_Item *gli2 = elm_genlist_first_item_get(layout_data->genlist);
-               DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2);
-               while (gli2) {
-                       if(gli2 == gli)
-                               break;
-                       gli2 = elm_genlist_item_next_get(gli2);
-                       DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2);
-                       index++;
-               }
-       }
-
-       int group_index = 0;
-       int sub_index = 0;
-       int item_count = 0;
-       int selected_index = 0;
-       for (; group_index < layout_data->aa_group_count; group_index++) {
-               item_count = layout_data->aa_item_count[group_index];
-               if(item_count > 0)
-                       index--;
-               for (sub_index = 0; sub_index < item_count; sub_index++) {
-                       index--;
-                       if (index < 0) {
-                               layout_data->selected_index = selected_index;
-                               layout_data->selected_group_index = group_index;
-                               layout_data->selected_album_sub_index = sub_index;
-                               return TRUE;
-                       }
-                       selected_index++;
-               }
-       }
-
-       return FALSE;
-}
-
 static Eina_Bool
 _mp_common_update_view_idler_cb(void *data)
 {
@@ -311,7 +152,6 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
                        elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
                }
 
-               //elm_genlist_item_update(item->it);
                elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
                mp_util_create_selectioninfo_with_count(layout_data->ad, layout_data->checked_count);
                mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count);
@@ -326,25 +166,38 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
        }
        mp_util_reset_genlist_mode_item(layout_data->genlist);
 
+       /*  If genlist item removed by sweep menu or editing,
+       *   layout_data->svc_handle can not be used for creating playlist..
+       *   update layout again before start play from list view.
+       */
+       MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_Playing_View", 0);
+       MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_play_start_cb", 0);
        int index = 0;
        if(layout_data->is_item_del)
        {
                gli2 = elm_genlist_first_item_get(layout_data->genlist);
-               while(gli2)
+               if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
+                       while(gli2)
+                       {
+                               if(gli2 == gli)
+                                       break;
+                               if(elm_genlist_item_parent_get(gli2))
+                                       index++;
+                               gli2 = elm_genlist_item_next_get(gli2);
+                       }
+               }
+               else
                {
-                       if(gli2 == gli)
-                               break;
-                       gli2 = elm_genlist_item_next_get(gli2);
-                       index++;
+                       while(gli2)
+                       {
+                               if(gli2 == gli)
+                                       break;
+                               gli2 = elm_genlist_item_next_get(gli2);
+                               index++;
+                       }
                }
 
-               if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
-                       bool ret_val = FALSE;
-                       ret_val = mp_common_track_get_aa_index(index, layout_data, gli, layout_data->is_item_del);
-                       if (ret_val) {
-                               index = layout_data->selected_index;
-                       }
-               } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) {
+               if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
                        --index;
                }
 
@@ -364,6 +217,8 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
 
        if(!mp_play_view_load_by_index(layout_data, index, FALSE))
                mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+       MP_TA_ACUM_ITEM_END("Selected_Item_to_Playing_View", 0);
+       MP_TA_ACUM_ITEM_BEGIN("navi_frame_transition_time", 0);
        return;
 }
 
@@ -372,7 +227,7 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *track = (AudioHandleType *) (item->handle);
+       mp_media_info_h track = item->handle;
        mp_retvm_if(!track, NULL, "data is null");
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        mp_retvm_if(!layout_data, NULL, "list_data is null!!");
@@ -381,22 +236,83 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part)
        if (!strcmp(part, "elm.icon"))
        {
                char *thumbpath = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_THUMBNAIL_PATH, &thumbpath, &size,
-                                                   -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_THUMBNAIL_PATH, &thumbpath,
-                                                       &size, -1);
-               return mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+               Evas_Object *icon;
+               mp_media_info_get_thumbnail_path(track, &thumbpath);
+               icon = mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+               return icon;
+       }
+
+       Evas_Object *button;
+
+       if (!strcmp(part, "elm.slide.swallow.3"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_MUSIC_BODY_ADD_TO_PLAYLIST");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_add_to_playlist_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.1"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_BUTTON_SHARE"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_BUTTON_SHARE");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_share_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.2"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_SK_SET"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_SK_SET");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_set_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.4"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/delete");
+               MP_CHECK_NULL(layout_data->view_data);
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_OPT_DELETE"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_OPT_DELETE");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_delete_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!g_strcmp0(part, "elm.icon.storage"))
+       {
+               char *folder = NULL;
+               int ret = mp_media_info_get_file_path(track, &folder);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               if (folder) {
+                       const char *icon_path = NULL;
+                       if (g_strstr_len(folder, strlen(MP_PHONE_ROOT_PATH), MP_PHONE_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_PHONE;
+                       else if (g_strstr_len(folder, strlen(MP_MMC_ROOT_PATH), MP_MMC_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_MMC;
+                       else
+                               icon_path = MP_ICON_STORAGE_EXTERNAL;
+
+                       Evas_Object *icon = elm_icon_add(obj);
+                       MP_CHECK_NULL(icon);
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+                       return icon;
+               }
        }
 
        Evas_Object *check = NULL;
 
        if (elm_genlist_decorate_mode_get(obj) || layout_data->ad->b_add_tracks)
-       {
+       {                       // if edit mode
                if (!strcmp(part, "elm.edit.icon.1"))
-               {
+               {               // swallow checkbox or radio button
                        check = elm_check_add(obj);
                        elm_check_state_pointer_set(check, &item->checked);
                        evas_object_smart_callback_add(check, "changed", mp_common_item_check_changed_cb, item);
@@ -418,8 +334,10 @@ _mp_common_gl_icon_get(void *data, Evas_Object * obj, const char *part)
        if (!strcmp(part, "elm.icon"))
        {
                ad->editfiled_new_playlist = editfield =
-                       mp_widget_create_editfield(obj, AUDIO_SVC_PLAYLIST_NAME_SIZE - 1, ad->new_playlist_name, ad);
-
+                       mp_widget_create_editfield(obj, MP_PLAYLIST_NAME_SIZE - 1, NULL, ad);
+               Evas_Object *entry = mp_widget_editfield_entry_get(editfield);
+               elm_entry_entry_set(entry, ad->new_playlist_name);
+               elm_entry_cursor_end_set(entry);
                evas_object_show(editfield);
 
                return editfield;
@@ -434,26 +352,36 @@ mp_common_create_editfield_layout(Evas_Object * parent, struct appdata * ad, cha
        Evas_Object *genlist = NULL;
        Elm_Object_Item *item = NULL;
        static Elm_Genlist_Item_Class itc;
+       Evas_Object *layout = NULL;
 
        MP_CHECK_NULL(parent);
        MP_CHECK_NULL(ad);
 
+       layout = elm_layout_add(parent);
+       elm_layout_file_set(layout, EDJ_NAME, "create_playlist");
+
        IF_FREE(ad->new_playlist_name);
        if (text)
                ad->new_playlist_name = strdup(text);
 
-       itc.item_style = "music/1icon";
+       itc.version = ELM_GENGRID_ITEM_CLASS_VERSION;
+       itc.refcount = 0;
+       itc.delete_me = EINA_FALSE;
+       itc.item_style = "1icon";
        itc.func.text_get = NULL;
        itc.func.content_get = _mp_common_gl_icon_get;
        itc.func.state_get = NULL;
        itc.func.del = NULL;
 
-       genlist = elm_genlist_add(parent);
+       genlist = elm_genlist_add(layout);
        item = elm_genlist_item_append(genlist, &itc, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
        elm_object_scroll_freeze_push(genlist);
 
-       return genlist;
+       elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+       evas_object_show(layout);
+
+       return layout;
 }
 
 void
@@ -478,6 +406,7 @@ _mp_common_search_layout_del_cb(void *data, Evas * e, Evas_Object * eo, void *ev
        view_data_t *view_data = (view_data_t *) data;
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
+       //view_data->view_mode = MP_VIEW_MODE_DEFAULT;
 }
 
 
@@ -500,13 +429,14 @@ mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info)
        mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data");
        MP_CHECK_LAYOUT_DATA(layout_data);
 
+       // list must be updated. label changed callback does not called any more...
        mp_view_layout_update(layout);
 
        mp_view_manager_push_view_content(view_data, layout, MP_VIEW_CONTENT_SEARCH);
 
        evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _mp_common_search_layout_del_cb, view_data);
 
-       mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_util_get_layout_data(layout));
+       mp_view_manager_set_title_and_buttons(view_data, "IDS_COM_SK_SEARCH", mp_util_get_layout_data(layout));
 
 }
 
@@ -541,6 +471,8 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
+       bool b_play_all = false;
+
        struct appdata *ad = view_data->ad;
        MP_CHECK(ad);
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
@@ -550,19 +482,27 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
        if (layout_data && layout_data->search_bar) {
                Evas_Object *en = mp_search_entry_get(layout_data->search_bar);
                Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+               /* hide SIP */
                if (imf_context)
                        ecore_imf_context_input_panel_hide(imf_context);
-               elm_object_focus_allow_set (en, EINA_FALSE);
+               /* set the entry object not be focused */
+               elm_object_focus_allow_set(en, EINA_FALSE);
        }
 
        if(mp_view_manager_count_view_content(view_data) == 1)
        {
                DEBUG_TRACE("First view. go to background");
-               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
                elm_win_lower(ad->win_main);
                return;
        }
 
+       /* get the flag if the playing view is created by playall */
+       if (ad->playing_view != NULL)
+       {
+               b_play_all = ad->playing_view->b_play_all;
+               ad->playing_view->b_play_all = false;
+       }
+
        mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
        evas_object_smart_callback_del(obj, "clicked", mp_common_back_button_cb);
 
@@ -579,6 +519,12 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
                        mp_view_layout_update(top_view);
                }
        }
+       else if (b_play_all)
+       {
+               /* when back from play view which created by playall option, the layout_data is NULL */
+               Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+               mp_view_layout_update(top_view);
+       }
 }
 
 void
@@ -605,6 +551,7 @@ mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info)
        else
                layout_data->checked_count--;
 
+       // update select all check button
        if (layout_data->select_all_layout)
        {
                if (layout_data->item_count == layout_data->checked_count)
@@ -654,9 +601,6 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec
                if(selected_count > 0)
                        disable = false;
 
-               //item = mp_view_manager_get_controlbar_item(layout_data->ad, 0);
-               //elm_object_item_disabled_set(item, false);
-
                for (i = 0; i < MP_NAVI_CONTROL_BUTTON_MAX; i++)        //Cancel button always enabled.
                {
                        item = mp_view_manager_get_controlbar_item(layout_data->ad, i);
@@ -696,7 +640,7 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec
                else
                {
                        bool disable_option = true;
-                       audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, NULL, NULL, &all_track_count);
+                       mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, NULL, 0, &all_track_count);
                        if(all_track_count > 0)
                                disable_option = false;
                        edit_item = mp_view_manager_get_edit_controlbar_item(layout_data->ad);
@@ -726,15 +670,13 @@ mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event
 
        ad->navi_effect_in_progress = FALSE;
 
-       int cnt = mp_view_manager_count_view_content(mp_util_get_view_data(ad));
-       if(cnt == 1)
-       {
-               DEBUG_TRACE("show controlbar");
-               mp_library_controlbar_visible_set(ad, true);
+       if(!elm_naviframe_prev_btn_auto_pushed_get(ad->naviframe))
+               elm_naviframe_prev_btn_auto_pushed_set(ad->naviframe, EINA_TRUE);
+
+       if (ad->editfiled_new_playlist) {
+               Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
+               elm_object_focus_set(entry, EINA_TRUE);
        }
-       MP_CHECK(ad->library);
-       if(!elm_naviframe_prev_btn_auto_pushed_get(ad->library->cur_view))
-               elm_naviframe_prev_btn_auto_pushed_set(ad->library->cur_view, EINA_TRUE);
 
        mp_layout_data_t * layout_data = mp_util_get_layout_data(mp_view_manager_get_last_view_layout(ad));
        MP_CHECK(layout_data);