/*
- * 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)
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)
{
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);
}
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;
}
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;
}
{
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!!");
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);
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;
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
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;
}
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));
}
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");
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);
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
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)
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);
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);
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);