MMC
} storage_mode_e;
+//Number of Recently Added Tracks that need to be shown in Tracks/Album/Artist View
+#define RECENTLY_ADDED_TRACKS_MAX_COUNT 3
+#define RECENTLY_ADDED_PART_NAME_MAX_SIZE 20
+
//1 Do not change default thumbnail path. it's shared by other apps
#define DEFAULT_THUMBNAIL "default_album_art_120.png"
#define DEFAULT_THUMBNAIL_MIDDLE "default_albumart_middle.png"
#define DEFAULT_PLAYER_THUMBNAIL "default_album_art_480.png"
#define BROKEN_ALBUMART_IMAGE_PATH "/opt/usr/share/media/.thumb/thumb_default.png"
+#define RECENTLY_ADDED_PLAY_ICON "alltracks_play_icon.png"
+#define RECENTLY_ADDED_PAUSE_ICON "alltracks_pause_icon.png"
+
#define PLAYLIST_CREATE_THUMBNAIL "T02_playlist_thumbnail_created.png"
//for shortcut
typedef enum {
#define MORE_BTN_DIR "more icon"
#define STORAGE_TYPE_DIR "storage_type"
-
-#define MP_LITE_PAUSE_ICON "lite/play_list_control_pause.png"
-#define MP_LITE_PLAY_ICON "lite/play_list_control_play.png"
-#define MP_LITE_SHUFFLE_ICON "lite/Icon/play_icon_shuffle.png"
+#define MP_LITE_PAUSE_ICON "lite/play_list_control_pause.png"
+#define MP_LITE_PLAY_ICON "lite/play_list_control_play.png"
+#define MP_LITE_SHUFFLE_ICON "lite/Icon/play_icon_shuffle.png"
#define NOCONTENT_MULTIMEDIA "T02_Nocontents_multimedia.png"
-#define THUMBNAIL_MOST_PLAYED ICON_DIRECTORY"/T02_playlist_most_played.png"
-#define THUMBNAIL_RECENTLY_PLAYED ICON_DIRECTORY"/T02_playlist_recently_played.png"
+#define THUMBNAIL_MOST_PLAYED ICON_DIRECTORY"/T02_playlist_most_played.png"
+#define THUMBNAIL_RECENTLY_PLAYED ICON_DIRECTORY"/T02_playlist_recently_played.png"
#define THUMBNAIL_RECENTLY_ADDED ICON_DIRECTORY"/T02_playlist_recently_added.png"
#define THUMBNAIL_QUICK_LIST ICON_DIRECTORY"/T02_playlist_starred.png"
mc_common_load_edj(ad->navi_bar, mc_edj_path,
"view_layout_tabbar");
g_navi_it = elm_naviframe_top_item_get(ad->navi_bar);
-// g_ly = elm_object_item_part_content_get(g_navi_it, "elm.swallow.content");
tabbar = _create_tabbar(ad->navi_bar, ad);
elm_object_part_content_set(navi_layout, "tabbar", tabbar);
-// sub_view = elm_object_part_content_unset(g_ly, "list-content");
track_list = mc_track_list_create(ad->navi_bar, ad);
mc_track_list_set_data(track_list, track_type, name, playlist_id);
Evas_Object *mc_common_create_thumb_icon(Evas_Object * obj,
const char *path, int w, int h)
{
+ char default_thumbnail[1024] = { 0 };
Evas_Object *thumbnail = elm_image_add(obj);
if (w == h) {
elm_image_prescale_set(thumbnail, w);
if ((!path)
|| !g_file_test(path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)
|| !strcmp(BROKEN_ALBUMART_IMAGE_PATH, path)) {
- char default_thumbnail[1024] = { 0 };
char *shared_path = app_get_shared_resource_path();
snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
"shared_images", DEFAULT_THUMBNAIL);
free(shared_path);
- path = g_strdup(default_thumbnail);
}
- elm_image_file_set(thumbnail, path, NULL);
+ elm_image_file_set(thumbnail, default_thumbnail, NULL);
evas_object_size_hint_align_set(thumbnail, EVAS_HINT_FILL,
EVAS_HINT_FILL);
<profile name="mobile"/>
<ui-application appid="org.tizen.music-chooser" exec="music-chooser" hw-acceleration="on" launch_mode="caller" multiple="true" nodisplay="true" taskmanage="false" type="capp">
<label>Music</label>
- <label xml:lang="hy-am">Երաժշտությն</label>
- <label xml:lang="az-az">Musiqi</label>
- <label xml:lang="eu-es">Musika</label>
- <label xml:lang="bg-bg">Музика</label>
- <label xml:lang="ca-es">Música</label>
- <label xml:lang="zh-cn">音乐</label>
- <label xml:lang="zh-hk">音樂</label>
- <label xml:lang="zh-tw">音樂</label>
- <label xml:lang="hr-hr">Glazba</label>
- <label xml:lang="cs-cz">Hudba</label>
- <label xml:lang="da-dk">Musik</label>
- <label xml:lang="nl-nl">Muziek</label>
- <label xml:lang="en-gb">Music</label>
- <label xml:lang="en-us">Music</label>
- <label xml:lang="et-ee">Muusika</label>
- <label xml:lang="fi-fi">Musiikki</label>
- <label xml:lang="fr-fr">Musique</label>
- <label xml:lang="gl-es">Música</label>
- <label xml:lang="ka-ge">მუსიკა</label>
- <label xml:lang="de-de">Musik</label>
- <label xml:lang="el-gr">Μουσική</label>
- <label xml:lang="hu-hu">Zenék</label>
- <label xml:lang="is-is">Tónlist</label>
- <label xml:lang="ga-ie">Ceol</label>
- <label xml:lang="it-it">Musica</label>
- <label xml:lang="ja-jp">音楽</label>
- <label xml:lang="kk-kz">Музыка</label>
- <label xml:lang="ko-kr">음악</label>
- <label xml:lang="lv-lv">Mūzika</label>
- <label xml:lang="lt-lt">Muzika</label>
- <label xml:lang="mk-mk">Музика</label>
- <label xml:lang="nb-no">Musikk</label>
- <label xml:lang="pl-pl">Muzyka</label>
- <label xml:lang="pt-pt">Música</label>
- <label xml:lang="pt-br">Músicas</label>
- <label xml:lang="ro-ro">Muzică</label>
- <label xml:lang="ru-ru">Музыка</label>
- <label xml:lang="sr-rs">Muzika</label>
- <label xml:lang="sk-sk">Hudba</label>
- <label xml:lang="sl-si">Glasba</label>
- <label xml:lang="es-es">Música</label>
- <label xml:lang="es-mx">Música</label>
- <label xml:lang="sv-se">Musik</label>
- <label xml:lang="tr-tr">Müzik</label>
- <label xml:lang="uk-ua">Музика</label>
- <label xml:lang="uz-uz">Musiqa</label>
- <label xml:lang="ar-ae">الموسيقى</label>
- <label xml:lang="zh-sg">音乐</label>
- <label xml:lang="hi-in">संगीत</label>
- <label xml:lang="en-ph">Music</label>
- <label xml:lang="fr-ca">Musique</label>
- <app-control>
- <operation name="http://tizen.org/appcontrol/operation/pick" />
- <mime name="audio/*" />
- </app-control>
+ <label xml:lang="hy-am">Երաժշտությն</label>
+ <label xml:lang="az-az">Musiqi</label>
+ <label xml:lang="eu-es">Musika</label>
+ <label xml:lang="bg-bg">Музика</label>
+ <label xml:lang="ca-es">Música</label>
+ <label xml:lang="zh-cn">音乐</label>
+ <label xml:lang="zh-hk">音樂</label>
+ <label xml:lang="zh-tw">音樂</label>
+ <label xml:lang="hr-hr">Glazba</label>
+ <label xml:lang="cs-cz">Hudba</label>
+ <label xml:lang="da-dk">Musik</label>
+ <label xml:lang="nl-nl">Muziek</label>
+ <label xml:lang="en-gb">Music</label>
+ <label xml:lang="en-us">Music</label>
+ <label xml:lang="et-ee">Muusika</label>
+ <label xml:lang="fi-fi">Musiikki</label>
+ <label xml:lang="fr-fr">Musique</label>
+ <label xml:lang="gl-es">Música</label>
+ <label xml:lang="ka-ge">მუსიკა</label>
+ <label xml:lang="de-de">Musik</label>
+ <label xml:lang="el-gr">Μουσική</label>
+ <label xml:lang="hu-hu">Zenék</label>
+ <label xml:lang="is-is">Tónlist</label>
+ <label xml:lang="ga-ie">Ceol</label>
+ <label xml:lang="it-it">Musica</label>
+ <label xml:lang="ja-jp">音楽</label>
+ <label xml:lang="kk-kz">Музыка</label>
+ <label xml:lang="ko-kr">음악</label>
+ <label xml:lang="lv-lv">Mūzika</label>
+ <label xml:lang="lt-lt">Muzika</label>
+ <label xml:lang="mk-mk">Музика</label>
+ <label xml:lang="nb-no">Musikk</label>
+ <label xml:lang="pl-pl">Muzyka</label>
+ <label xml:lang="pt-pt">Música</label>
+ <label xml:lang="pt-br">Músicas</label>
+ <label xml:lang="ro-ro">Muzică</label>
+ <label xml:lang="ru-ru">Музыка</label>
+ <label xml:lang="sr-rs">Muzika</label>
+ <label xml:lang="sk-sk">Hudba</label>
+ <label xml:lang="sl-si">Glasba</label>
+ <label xml:lang="es-es">Música</label>
+ <label xml:lang="es-mx">Música</label>
+ <label xml:lang="sv-se">Musik</label>
+ <label xml:lang="tr-tr">Müzik</label>
+ <label xml:lang="uk-ua">Музика</label>
+ <label xml:lang="uz-uz">Musiqa</label>
+ <label xml:lang="ar-ae">الموسيقى</label>
+ <label xml:lang="zh-sg">音乐</label>
+ <label xml:lang="hi-in">संगीत</label>
+ <label xml:lang="en-ph">Music</label>
+ <label xml:lang="fr-ca">Musique</label>
<icon>music-chooser.png</icon>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/pick"/>
+ <mime name="audio/*"/>
+ </app-control>
</ui-application>
-
<privileges>
- <privilege>http://tizen.org/privilege/mediastorage</privilege>
- <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
- <privilege>http://tizen.org/privilege/externalstorage</privilege>
- <privilege>http://tizen.org/privilege/notification</privilege>
-</privileges>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/notification</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage</privilege>
+ </privileges>
</manifest>
}
}
}
+
+#define IMG_ALBUM_ART_OVERLAY "recently_added/alltracks_bg.png"
+
+group {
+ name: "elm/genlist/item/recently_added/default";
+ data.item: "texts" "elm.text.main.1 elm.text.sub.1 elm.text.main.2 elm.text.sub.2 elm.text.main.3 elm.text.sub.3";
+ data.item: "contents" "elm.swallow.1 elm.swallow.2 elm.swallow.3 elm.swallow.1.play elm.swallow.2.play elm.swallow.3.play";
+
+ images {
+ image: IMG_ALBUM_ART_OVERLAY COMP;
+ }
+
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ min: 0 217;
+ color: 255 255 255 230;
+ }
+ }
+
+ part {
+ name: "elm.swallow.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 32/720 0.0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 229/720 1.0;
+ to: "bg";
+ }
+ min: 197 197;
+ }
+ }
+
+ part {
+ name: "elm.swallow.1.overlay";
+ type: IMAGE;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "elm.swallow.1";
+ }
+ rel2 {
+ to: "elm.swallow.1";
+ }
+ image.normal: IMG_ALBUM_ART_OVERLAY;
+ color: 0 0 0 20;
+ }
+ }
+
+ part {
+ name: "elm.text.main.1";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 111/197;
+ to: "elm.swallow.1";
+ }
+ rel2 {
+ relative: 127/197 154/197;
+ to: "elm.swallow.1";
+ }
+ text {
+ size: 32;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "elm.text.sub.1";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 154/197;
+ to: "elm.swallow.1";
+ }
+ rel2 {
+ relative: 127/197 187/197;
+ to: "elm.swallow.1";
+ }
+ text {
+ size: 24;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "play_btn_bg_1";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 137/197 137/197;
+ to: "elm.swallow.1";
+ }
+ rel2 {
+ relative: 187/197 187/197;
+ to: "elm.swallow.1";
+ }
+ min: 50 50;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.1.play";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "play_btn_bg_1";
+ }
+ rel2 {
+ to: "play_btn_bg_1";
+ }
+ color: 168 230 240 100;
+ }
+ }
+
+ part {
+ name: "elm.swallow.2";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 261/720 0.0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 458/720 1.0;
+ to: "bg";
+ }
+ min: 197 197;
+ }
+ }
+
+ part {
+ name: "elm.swallow.2.overlay";
+ type: IMAGE;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "elm.swallow.2";
+ }
+ rel2 {
+ to: "elm.swallow.2";
+ }
+ image.normal: IMG_ALBUM_ART_OVERLAY;
+ color: 0 0 0 20;
+ }
+ }
+
+ part {
+ name: "elm.text.main.2";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 111/197;
+ to: "elm.swallow.2";
+ }
+ rel2 {
+ relative: 127/197 154/197;
+ to: "elm.swallow.2";
+ }
+ text {
+ size: 32;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "elm.text.sub.2";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 154/197;
+ to: "elm.swallow.2";
+ }
+ rel2 {
+ relative: 127/197 187/197;
+ to: "elm.swallow.2";
+ }
+ text {
+ size: 24;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "play_btn_bg_2";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 137/197 137/197;
+ to: "elm.swallow.2";
+ }
+ rel2 {
+ relative: 187/197 187/197;
+ to: "elm.swallow.2";
+ }
+ min: 50 50;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.2.play";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "play_btn_bg_2";
+ }
+ rel2 {
+ to: "play_btn_bg_2";
+ }
+ color: 168 230 240 100;
+ }
+ }
+
+ part {
+ name: "elm.swallow.3";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 491/720 0.0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 688/720 1.0;
+ to: "bg";
+ }
+ min: 197 197;
+ }
+ }
+
+ part {
+ name: "elm.swallow.3.overlay";
+ type: IMAGE;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "elm.swallow.3";
+ }
+ rel2 {
+ to: "elm.swallow.3";
+ }
+ image.normal: IMG_ALBUM_ART_OVERLAY;
+ color: 0 0 0 20;
+ }
+ }
+
+ part {
+ name: "elm.text.main.3";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 111/197;
+ to: "elm.swallow.3";
+ }
+ rel2 {
+ relative: 127/197 154/197;
+ to: "elm.swallow.3";
+ }
+ text {
+ size: 32;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "elm.text.sub.3";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 10/197 154/197;
+ to: "elm.swallow.3";
+ }
+ rel2 {
+ relative: 127/197 187/197;
+ to: "elm.swallow.3";
+ }
+ text {
+ size: 24;
+ align: 0.0 0.5;
+ }
+ color: 255 255 255 204;
+ }
+ }
+
+ part {
+ name: "play_btn_bg_3";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 137/197 137/197;
+ to: "elm.swallow.3";
+ }
+ rel2 {
+ relative: 187/197 187/197;
+ to: "elm.swallow.3";
+ }
+ min: 50 50;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.3.play";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "play_btn_bg_3";
+ }
+ rel2 {
+ to: "play_btn_bg_3";
+ }
+ color: 168 230 240 100;
+ }
+ }
+ }
+
+ programs {
+ program {
+ signal: "mouse,down,1";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "elm.swallow.1";
+ target: "elm.swallow.1.play";
+ target: "elm.swallow.2";
+ target: "elm.swallow.2.play";
+ target: "elm.swallow.3";
+ target: "elm.swallow.3.play";
+ }
+ program {
+ signal: "mouse,up,1";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.1";
+ target: "elm.swallow.1.play";
+ target: "elm.swallow.2";
+ target: "elm.swallow.2.play";
+ target: "elm.swallow.3";
+ target: "elm.swallow.3.play";
+ }
+
+ program {
+ name: "thumbnail_clicked_1";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+ program {
+ name: "play_clicked_1";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+
+ program {
+ name: "thumbnail_clicked_2";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+ program {
+ name: "play_clicked_2";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+
+ program {
+ name: "thumbnail_clicked_3";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+ program {
+ name: "play_clicked_3";
+ source: "*";
+ action: SIGNAL_EMIT "mouse,clicked,1" "0.0";
+ }
+ }
+}
}
}
+group {
+ name: "recently_added_layout";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ min: 100 100;
+ color: 255 0 0 255;
+ }
+ }
+ }
+}
+
group { name: "shortcut_layout";
parts {
part { name: "bg";
collections {
base_scale: 2.4;
-//RESOURCE_IMAGE_LOSSY(MP_ICON_COVERFLOW_BG);
-//RESOURCE_IMAGE_LOSSY(MP_ICON_COVERFLOW_SHADOW_BG);
RESOURCE_IMAGE(MP_ICON_STORAGE_PHONE);
RESOURCE_IMAGE(MP_ICON_STORAGE_MEMORY);
RESOURCE_IMAGE(MP_ICON_STORAGE_EXTERNAL);
-//RESOURCE_IMAGE(MP_ICON_SQUARE_CELL_NORMAL);
-//RESOURCE_IMAGE(MP_ICON_SQUARE_CELL_SELECTED);
-//RESOURCE_IMAGE(MP_ICON_SQUARE_CELL_NORMAL_LD);
-//RESOURCE_IMAGE(MP_ICON_SQUARE_CELL_SELECTED_LD);
RESOURCE_IMAGE(MP_ICON_VOLUME_MIN);
RESOURCE_IMAGE(MP_ICON_VOLUME_MAX);
RESOURCE_IMAGE(MP_ICON_HEADSET_PATH);
RESOURCE_IMAGE(MP_ICON_SPEAKER_PATH);
-//RESOURCE_IMAGE(MP_ICON_NEARBY_DMR);
-//RESOURCE_IMAGE(MP_ICON_NEARBY_DMR_PRESS);
RESOURCE_IMAGE(MP_ICON_MINI_PLAYER);
-//RESOURCE_IMAGE(MP_ICON_VIDEO_PLAY);
-//RESOURCE_IMAGE_LOSSY(MP_ICON_TURNOVER_01);
-//RESOURCE_IMAGE_LOSSY(MP_ICON_TURNOVER_02);
-//RESOURCE_IMAGE_LOSSY(MP_ICON_TURNOVER_03);
RESOURCE_IMAGE(MP_ICON_PLAY_LIST_PATH);
RESOURCE_IMAGE(MP_ICON_BT_HEADSET_PATH);
RESOURCE_IMAGE(MP_ICON_SELECT_ALL);
RESOURCE_IMAGE(MP_ICON_SEARCH);
RESOURCE_IMAGE(MP_ICON_PLUS);
-//RESOURCE_IMAGE(MP_ICON_FIND_TAG);
RESOURCE_IMAGE(MP_ICON_BACK);
RESOURCE_IMAGE(MP_ICON_APP_MUSIC);
RESOURCE_IMAGE(MP_PLAYER_MORE_BTN_SAVE_PLAYLIST);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_ADD_TO_HOME);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_CHANGE_AXIS);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_CONN_INFO);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_UPDATE_ALBUMART);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_DEVICES);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_DOWNLOAD);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_DELETE_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_ADD_TO_PLAYLSIT_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_CREATE_PLAYLIST_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_DETAIL_IMAGE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_HOMESYNC_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_MORE_THUMBNAIL_VIEW_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_MORE_LIST_VIEW_IMAGE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_MAKE_AVAILABLE_OFFLINE_IMAGE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_GROUP_PLAY_IMAGE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_EDIT_IMAGE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_EDIT);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_FOLDER_VIEW);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_GO_TO_LIB);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_HELP);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_HIDE_MUSIC_VIEW);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_LIB_UPDATE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_MAKE_AVAILABLE_OFFICE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SQUARE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_OPEN_PLAYLIST);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_PLAYLIST);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SEARCH);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SET_AS);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SETTING);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SHARE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SHARE_VIA);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SHOW_MUSIC_VIEW);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SIGN);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_SUPPORT);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_UPDATE);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_UPLOAD_FROM_DEVICE);
-//RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_VIEW);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_VIEW_END);
RESOURCE_IMAGE_RECT(MP_PLAYER_MORE_BTN_VIEW_AS);
-//RESOURCE_IMAGE(MP_PLAYER_MORE_BTN_ADD_TO_PERSONAL_PAGE);
-//RESOURCE_IMAGE(MP_PLAYER_MORE_BTN_REMOVE_FROM_PERSONAL_PAGE);
-
-
-//RESOURCE_IMAGE_LOSSY(MP_ICON_CONNECTED_MY_DEVICE);
-//RESOURCE_IMAGE_LOSSY(MP_ICON_CONNECTED_TV);
-
-//RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_TV_ITEM);
-//RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_BD_ITEM);
-//RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_LFD_ITEM);
-//RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_STB_ITEM);
-/*RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_MOBILE_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_TABLET_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_DONGLE_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_CAMERA_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_CAMCORDER_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_REF_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_AC_WALL_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_WM_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_ROBOT_TV_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_PC_ITEM);
-RESOURCE_IMAGE(MP_PLAY_ALLSHARE_DEVICE_UNKNOWN_ITEM);
-RESOURCE_IMAGE_RECT(MP_PLAY_UHA_ICON);
-*/
RESOURCE_IMAGE(MP_ICON_NO_ITEM);
RESOURCE_IMAGE(MP_MINI_REPEAT_1_ICON);
RESOURCE_IMAGE(MP_MINI_REPEAT_ONCE_ICON);
void mp_common_play_track_list_with_playlist_id(mp_list_item_data_t * item,
Evas_Object * genlist,
int playlist_id);
+void mp_common_play_track_list_with_song_uid(mp_list_item_data_t* item, Evas_Object *genlist,
+ char *uid, char *uri);
void mp_common_play_track_list(mp_list_item_data_t * item,
Evas_Object * genlist);
void mp_common_search_by(const char *keyword);
MP_CHECK(ad);
//mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+ ad->recentlyAddedGridView = true;
bool current_removed = false;
bool next_play = false;
endfunc;
}
+void mp_common_play_track_list_with_song_uid(mp_list_item_data_t* item, Evas_Object *genlist,
+ char *item_uid, char *item_uri)
+{
+ startfunc;
+ MP_CHECK(item);
+ MP_CHECK(item_uid);
+ MP_CHECK(item_uri);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ ad->hide_player_view = true;
+ ad->paused_by_user = false;
+
+ if (!ad->playlist_mgr) {
+ mp_common_create_playlist_mgr();
+ }
+
+ PROFILE_IN("mp_playlist_mgr_clear");
+ mp_playlist_mgr_clear(ad->playlist_mgr);
+ PROFILE_OUT("mp_playlist_mgr_clear");
+
+ Elm_Object_Item *gli2 = NULL;
+ mp_plst_item* plst_item = NULL;
+ gli2 = elm_genlist_first_item_get(genlist);
+ while (gli2) {
+ if (elm_genlist_item_select_mode_get(gli2) !=
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) {
+ mp_list_item_data_t *item_data =
+ elm_object_item_data_get(gli2);
+ if (item_data
+ && item_data->item_type == MP_LIST_ITEM_TYPE_NORMAL) {
+ if (item_data->group_type == MP_GROUP_NONE
+ || item_data->group_type == MP_GROUP_BY_ALLSHARE) {
+ char *uri = NULL;
+ char *uid = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+
+ mp_track_type track_type = MP_TRACK_URI;
+ mp_media_info_get_media_id(item_data->handle, &uid);
+ if (g_strcmp0(item_uid, uid)) {
+ gli2 = elm_genlist_item_next_get(gli2);
+ continue;
+ }
+ mp_media_info_get_file_path(item_data->handle, &uri);
+ mp_media_info_get_title(item_data->handle, &title);
+ mp_media_info_get_artist(item_data->handle, &artist);
+
+ mp_storage_type_e storage;
+ mp_media_info_get_storage_type(item_data->handle,
+ &storage);
+
+ plst_item =
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
+ }
+ }
+ }
+ gli2 = elm_genlist_item_next_get(gli2);
+ }
+
+ if (ad->playlist_mgr->shuffle_state) {
+ ad->playlist_mgr->list = ad->playlist_mgr->shuffle_list;
+ } else {
+ ad->playlist_mgr->list = ad->playlist_mgr->normal_list;
+ }
+
+ mp_playlist_mgr_set_current(ad->playlist_mgr, plst_item);
+
+ PROFILE_IN("mp_play_destory");
+ mp_play_fast_destory(ad);
+ PROFILE_OUT("mp_play_destory");
+
+ mp_play_new_file(ad, TRUE);
+}
+
void mp_common_play_track_list_with_playlist_id(mp_list_item_data_t * item,
Evas_Object * genlist,
int playlist_id)
if (!ad->playlist_mgr) {
mp_common_create_playlist_mgr();
}
-
MP_CHECK(ad->playlist_mgr);
+
/* before clear playlist_mgr, check if same playlist id */
if (ad->playlist_mgr->playlist_id == playlist_id) {
playlist_update = false;
mp_storage_type_e storage;
mp_media_info_get_storage_type(item_data->handle,
- &storage);
+ &storage);
plst_item =
- mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
- uid, title, artist,
- track_type);
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
if (playlist_id) {
int member_id = 0;
mp_media_info_get_playlist_member_id(item_data->
- handle,
- &member_id);
+ handle,
+ &member_id);
//mp_debug("playlist memeber id = %d", member_id);
mp_playlist_mgr_item_set_playlist_memeber_id
(plst_item, member_id);
PROFILE_IN("mp_playlist_mgr_set_current");
if (to_play == NULL) {
mp_playlist_mgr_set_current(ad->playlist_mgr,
- mp_playlist_mgr_get_nth(ad->
- playlist_mgr,
- 0));
+ mp_playlist_mgr_get_nth(ad->
+ playlist_mgr,
+ 0));
} else {
int shuffle = false;
mp_setting_get_shuffle_state(&shuffle);
DEBUG_TRACE("create playlist mgr");
ad->playlist_mgr = mp_playlist_mgr_create();
mp_playlist_mgr_set_item_change_callback(ad->playlist_mgr,
- _mp_common_playlist_item_change_callback,
- ad);
+ _mp_common_playlist_item_change_callback,
+ ad);
int val = 0;
mp_setting_get_shuffle_state(&val);
mp_playlist_mgr_set_shuffle(ad->playlist_mgr, val);
media_info = mp_media_info_list_nth_item(svc_handle, count - 1);
mp_media_info_get_thumbnail_path(media_info, &path);
+ char default_thumbnail[1024] = { 0 };
if (!path
|| !g_file_test(path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)
|| !strcmp(BROKEN_ALBUMART_IMAGE_PATH, path)) {
- char default_thumbnail[1024] = { 0 };
char *shared_path = app_get_shared_resource_path();
snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
"shared_images", DEFAULT_THUMBNAIL);
free(shared_path);
- path = g_strdup(default_thumbnail);
}
- mp_media_info_playlist_set_thumbnail_path(playlist_handle, path);
+ mp_media_info_playlist_set_thumbnail_path(playlist_handle, default_thumbnail);
mp_media_info_list_destroy(svc_handle);
}
if (!strcmp(APP_CONTROL_OPERATION_VIEW, operation)) {
struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK_FALSE(ad);
char *value = NULL;
ad->samsung_link = false;
void mp_common_view_check_changed_cb(void *data, Evas_Object * obj,
void *event_info)
{
- char *uri = NULL;
- mp_list_item_data_t *item = (mp_list_item_data_t *)data;
- MP_CHECK(item);
struct appdata *ad = mp_util_get_appdata();
MP_CHECK(ad);
MP_CHECK(view);
if (ad->selector_mode_bit) {
+ char *uri = NULL;
+ mp_list_item_data_t *item = (mp_list_item_data_t *)data;
+ MP_CHECK(item);
mp_media_info_get_file_path(item->handle, &uri);
if (item->checked) {
ad->checkedList = g_list_append(ad->checkedList, g_strdup(uri));
_mp_edit_cb_check_playlist();
+ ad->recentlyAddedGridView = true;
if (g_edit_operation == MP_EDIT_ADD_TO_PLAYLIST && g_playlist_name) {
/*keep previous playlist detail view, which to be popped after new view pushed */
MpView_t *previous_view =
evas_object_show(popup);
g_edit_thread = ecore_thread_feedback_run(_mp_edit_cb_delete_thread,
- _mp_edit_cb_edit_thread_notify_cb,
- _mp_edit_cb_edit_thread_end_cb,
- _mp_edit_cb_edit_thread_cancel_cb,
- (const void *)
- g_selected_list, EINA_TRUE);
+ _mp_edit_cb_edit_thread_notify_cb,
+ _mp_edit_cb_edit_thread_end_cb,
+ _mp_edit_cb_edit_thread_cancel_cb,
+ (const void *)
+ g_selected_list, EINA_TRUE);
if (!g_edit_thread) {
mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_NO);
if (sync_len || unsync_len) {
DEBUG_TRACE("sync_len=%d", sync_len);
- if (sync_len > 0) {
+ if (sync_len > 0 && sync_len < 0x7FFFFFFF) {
int ret = 0;
int idx = 0;
unsigned long time_info = 0;
}
mp_plst_item *mp_playlist_mgr_get_item_by_uid(mp_plst_mgr * playlist_mgr,
- const char *uid)
+ const char *uid)
{
MP_CHECK_VAL(playlist_mgr, NULL);
MP_CHECK_VAL(playlist_mgr->list, NULL);
}
mp_plst_item *mp_playlist_mgr_get_item_by_playlist_memeber_id(mp_plst_mgr *
- playlist_mgr,
- int
- member_id)
+ playlist_mgr,
+ int
+ member_id)
{
MP_CHECK_VAL(playlist_mgr, NULL);
MP_CHECK_VAL(playlist_mgr->list, NULL);
/* uri */
if (fgets(line, MAX_NAM_LEN, appender->fp)) {
line[MAX_NAM_LEN] = 0;
- line[strlen(line) - 1] = 0;
+ if (strlen(line) > 0) {
+ line[strlen(line) - 1] = 0;
+ }
} else {
break;
}
/* uri */
if (fgets(line, MAX_NAM_LEN, fp)) {
line[MAX_NAM_LEN] = 0;
- line[strlen(line) - 1] = 0;
+ if (strlen(line) > 0) {
+ line[strlen(line) - 1] = 0;
+ }
} else {
break;
}
}
if (fgets(line, MAX_NAM_LEN, fp)) { /* pid */
line[MAX_NAM_LEN] = 0;
- line[strlen(line) - 1] = 0;
+ if (strlen(line) >= 1) {
+ line[strlen(line) - 1] = 0;
+ }
pid = atoi(line);
}
fclose(fp);
}
if (fgets(line, MAX_NAM_LEN, fp)) { /* uri */
line[MAX_NAM_LEN] = 0;
- line[strlen(line) - 1] = 0;
+ if (strlen(line) >= 1) {
+ line[strlen(line) - 1] = 0;
+ }
*path = g_strdup(line);
}
fclose(fp);
value = strtok_r(NULL, "=", &sptr);
DEBUG_TRACE("key is: %s and value is: %s", key, value);
if (value != NULL) {
- value[strlen(value) - 1] = '\0';
+ if (strlen(value) >= 1) {
+ value[strlen(value) - 1] = '\0';
+ }
} else {
DEBUG_TRACE("value is NULL");
continue;
MP_CHECK_NULL(parent);
MpViewMgr_t *view_mgr = calloc(1, sizeof(MpViewMgr_t));
MP_CHECK_NULL(view_mgr);
+ g_view_mgr = view_mgr;
view_mgr->navi = mp_widget_navigation_new(parent);
struct appdata *ad = mp_util_get_appdata();
MP_CHECK_NULL(ad);
evas_object_event_callback_add(ad->win_main, EVAS_CALLBACK_RESIZE,
- _mp_view_mgr_win_resize_cb,
- view_mgr->navi);
+ _mp_view_mgr_win_resize_cb,
+ view_mgr->navi);
eext_object_event_callback_add(view_mgr->navi, EEXT_CALLBACK_BACK,
- eext_naviframe_back_cb, NULL);
+ eext_naviframe_back_cb, NULL);
eext_object_event_callback_add(view_mgr->navi, EEXT_CALLBACK_MORE,
- eext_naviframe_more_cb, NULL);
+ eext_naviframe_more_cb, NULL);
evas_object_event_callback_add(view_mgr->navi, EVAS_CALLBACK_DEL,
- _layout_del_cb, NULL);
+ _layout_del_cb, NULL);
evas_object_smart_callback_add(view_mgr->navi, "transition,finished",
- _mp_view_mg_transition_finish_cb,
- view_mgr);
- /* evas_object_smart_callback_add(view_mgr->navi, "title,clicked", _title_clicked_cb, view_mgr); */
+ _mp_view_mg_transition_finish_cb,
+ view_mgr);
- g_view_mgr = view_mgr;
return view_mgr;
}
} mp_device_type_e;
struct appdata {
-
Evas *evas;
Evas_Object *win_main;
Evas_Object *bg;
Evas_Object *conformant;
Evas_Object *naviframe;
bool hide_player_view;
+ bool recentlyAddedGridView;
bool show_optional_menu;
double music_pos;
char *shortcut_descrition;
- Ecore_Animator *minfo_ani;
- GList *minfo_list;
- Evas_Object *minfo_genlist;
-
bool direct_win_minimize;
int album_image_w;
{
ad->music_setting_change_flag = false;
ad->paused_by_user = true;
+ ad->recentlyAddedGridView = false;
bool key_exists = FALSE;
int ret_p = preference_is_existing(PREF_MINICONTROLLER, &key_exists);
}
mp_playlist_mgr_clear(ad->playlist_mgr);
+ MP_CHECK_VAL(count > 0, -1);
+ MP_CHECK_VAL(count < 0x7FFFFFFF, -1);
for (i = 0; i < count; i++, str = NULL) {
token =
strtok_r(str, MP_EXTRA_KEY_PLAY_FILE_DELIM, &save_ptr);
mp_lockscreenmini_destroy(ad);
#endif
+ GList *list = ad->checkedList;
+ if (list) {
+ while(list){
+ char *data = list->data;
+ IF_FREE(data);
+ list = g_list_next(list);
+ }
+ g_list_free(list);
+ list = NULL;
+ }
+
mp_player_mgr_vol_type_unset();
mp_player_mgr_safety_volume_set(0);
/* Selector View is launched. Checked Items list is initially freed */
ad->selector_mode_bit = EINA_TRUE;
- if (ad->checkedList) {
- g_list_free(ad->checkedList);
+ GList *list = ad->checkedList;
+ if (list) {
+ while(list){
+ char *data = list->data;
+ IF_FREE(data);
+ list = g_list_next(list);
+ }
+ g_list_free(list);
+ list = NULL;
}
- ad->checkedList = NULL;
Evas_Object *obj;
MP_CHECK(view->album_detail_view_layout);
view->content_to_show =
- (MpList_t *) mp_album_detail_list_create(view->layout);
+ (MpList_t *) mp_album_detail_list_create(view->layout);
MP_CHECK(view->content_to_show);
mp_album_detail_list_set_data((MpAlbumDetailList_t *) view->
- content_to_show,
- MP_ALBUM_DETAIL_LIST_TYPE,
- MP_TRACK_BY_ALBUM,
- MP_ALBUM_DETAIL_TYPE_STR, view->name,
- MP_ALBUM_DETAIL_ARTIST, view->artist,
- MP_ALBUM_DETAIL_THUMBNAIL,
- view->thumbnail, -1);
+ content_to_show,
+ MP_ALBUM_DETAIL_LIST_TYPE,
+ MP_TRACK_BY_ALBUM,
+ MP_ALBUM_DETAIL_TYPE_STR, view->name,
+ MP_ALBUM_DETAIL_ARTIST, view->artist,
+ MP_ALBUM_DETAIL_THUMBNAIL,
+ view->thumbnail, -1);
mp_list_update(view->content_to_show);
elm_object_part_content_set(view->album_detail_view_layout,
- "list_content",
- view->content_to_show->layout);
+ "list_content",
+ view->content_to_show->layout);
}
struct appdata *ad = mp_util_get_appdata();
MP_CHECK(ad);
+ ad->recentlyAddedGridView = true;
/*the normal case */
if (!view->reorder_flag) {
Elm_Object_Item *it = NULL;
break;
}
+ ad->recentlyAddedGridView = false;
view->content_to_show = list;
content = mp_list_get_layout(list);
if (content != NULL) {
#endif
if (view->ref_list->reorderable) {
mp_list_set_reorder((MpList_t *) view->content_to_show,
- TRUE);
+ TRUE);
}
mp_track_list_copy_data((MpTrackList_t *) ref_list,
- (MpTrackList_t *) view->
- content_to_show);
+ (MpTrackList_t *) view->
+ content_to_show);
edje_object_signal_emit(_EDJ(view->layout),
- "SHOW_SELECT_ALL_PADDING", "*");
+ "SHOW_SELECT_ALL_PADDING", "*");
break;
}
case MP_LIST_TYPE_GROUP:
MpView_t *view = NULL;
view = (MpView_t *) mp_playlist_detail_view_create(GET_NAVIFRAME,
- MP_TRACK_BY_PLAYLIST,
- playlist_name,
- playlist_id);
+ MP_TRACK_BY_PLAYLIST,
+ playlist_name,
+ playlist_id);
mp_view_mgr_push_view(GET_VIEW_MGR, view, NULL);
mp_view_update_options(view);
mp_view_set_title(view, playlist_name);
MP_CHECK(view->layout);
view->content_to_show =
- (MpList_t *) mp_track_list_create(view->layout);
+ (MpList_t *) mp_track_list_create(view->layout);
MP_CHECK(view->content_to_show);
/*Todo: move the followed outside */
/* mp_track_list_set_data(view->content_to_show, MP_TRACK_LIST_TYPE, MP_TRACK_BY_ALBUM, MP_TRACK_LIST_TYPE_STR, view->name, -1);
view->content_to_show->update(view->content_to_show); */
MP_CHECK(view->content_to_show->layout);
elm_object_part_content_set(view->layout, "list_content",
- view->content_to_show->layout);
+ view->content_to_show->layout);
edje_object_signal_emit(_EDJ(view->layout), "SHOW_SELECT_ALL_PADDING",
- "*");
+ "*");
}
static void _mp_select_track_view_on_event(void *thiz, MpViewEvent_e event)
mp_media_list_h album_list;
int album_list_count;
-
} MpAlbumList_t;
MpAlbumList_t *mp_album_list_create(Evas_Object * parent);
Elm_Genlist_Item_Class *itc_group_index;
Elm_Object_Item *group_it;
void (*set_edit_default) (void *thiz, bool edit);
+
mp_media_list_h artist_list;
int artist_list_count;
} MpArtistList_t;
MpTrackListIndex_t index_type; \
MpListFunction_e function_type; \
GList *checked_path_list; \
+ Elm_Genlist_Item_Class *itc_group_index_recently_added; \
+ Elm_Genlist_Item_Class *itc_genlist_recently_added; \
+ Evas_Object *recently_added_genlist; \
typedef struct __MpList {
INHERIT_MP_LIST} MpList_t;
int track_count;
bool get_by_view;
-
} MpTrackList_t;
MpTrackList_t *mp_track_list_create(Evas_Object * parent);
static void
_mp_album_detail_genlist_sel_cb(void *data, Evas_Object * obj,
- void *event_info)
+ void *event_info)
{
eventfunc;
Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
list->itc_shuffle = elm_genlist_item_class_new();
MP_CHECK(list->itc_shuffle);
- //list->itc_shuffle->item_style = "music/1line";
list->itc_shuffle->item_style = "default";
list->itc_shuffle->func.text_get =
_mp_album_detail_list_shuffle_text_get;
/*get data from DB */
PROFILE_IN("mp_media_info_list_create");
mp_media_info_list_create(&svc_handle, list->track_type,
- list->type_str, list->type_str2,
- list->filter_str, list->playlist_id, 0,
- count);
+ list->type_str, list->type_str2,
+ list->filter_str, list->playlist_id, 0,
+ count);
PROFILE_OUT("mp_media_info_list_create");
mp_album_detail_list_show_shuffle(list, true);
list->total_duration =
- _mp_album_detail_list_get_total_duration(list, svc_handle,
- list->track_count);
+ _mp_album_detail_list_get_total_duration(list, svc_handle,
+ list->track_count);
list->various_name =
- _mp_ablum_detail_list_check_artist_name(svc_handle, count);
+ _mp_ablum_detail_list_check_artist_name(svc_handle, count);
PROFILE_IN("_mp_album_detail_list_append_item");
_mp_album_detail_list_append_item(list, svc_handle, count);
#include "mp-util.h"
#include "mp-widget.h"
#include "mp-common.h"
+#include "mp-play.h"
#define ALBUM_GRID_W 233
#define ALBUM_GRID_H 319
#define ALBUM_GRID_LAND_H 320
#define ALBUM_ICON_SIZE 70
+static mp_list_item_data_t* g_item_data = NULL;
+
static void
_mp_album_select_cb(void *data, Evas_Object * obj, void *event_info);
return g_strdup(elm_entry_utf8_to_markup(name));
}
- DEBUG_TRACE("Unusing part: %s", part);
return NULL;
}
mp_media_info_group_get_thumbnail_path(svc_item, &thumb_name);
int w, h;
if (item->display_mode == MP_LIST_DISPLAY_MODE_THUMBNAIL) {
- //if (landscape)
- //{
w = ALBUM_ICON_SIZE * elm_config_scale_get();
- //}
- //else
- //{
- //w = ALBUM_ICON_SIZE * elm_config_scale_get();
- //}
} else {
w = ALBUM_ICON_SIZE;
}
MP_CHECK_NULL(list);
Evas_Object *check = NULL;
- DEBUG_TRACE("list->edit_mode = %d", list->edit_mode);
if (list->edit_mode) {
// if edit mode
mp_view_set_title((MpView_t *) view_select_track, STR_MP_TILTE_SELECT_ITEM);
}
mp_track_list_set_data((MpTrackList_t *) view_select_track->
- content_to_show, MP_TRACK_LIST_TYPE,
- MP_TRACK_BY_ALBUM, MP_TRACK_LIST_TYPE_STR,
- name, -1);
+ content_to_show, MP_TRACK_LIST_TYPE,
+ MP_TRACK_BY_ALBUM, MP_TRACK_LIST_TYPE_STR,
+ name, -1);
mp_list_view_set_cancel_btn((MpListView_t *) view_select_track,
true);
mp_list_view_set_done_btn((MpListView_t *) view_select_track, true,
return;
}
-
/* create the view of album detail */
MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
MP_CHECK(view_manager);
NULL);
mp_view_update_options((MpView_t *) view_album_detail);
+ mp_view_set_title((MpView_t *) view_album_detail, name);
}
static void _mp_album_list_append_group_index_item(void *thiz)
}
ret =
- mp_media_info_group_list_create(&list->album_list,
- MP_GROUP_BY_ALBUM, NULL, NULL, 0,
- count);
+ mp_media_info_group_list_create(&list->album_list,
+ MP_GROUP_BY_ALBUM, NULL, NULL, 0,
+ count);
if (ret != 0) {
DEBUG_TRACE("Fail to get items");
item = mp_media_info_group_list_nth_item(svc_handle, index);
if (!item) {
DEBUG_TRACE
- ("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]",
- ret, index);
+ ("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]",
+ ret, index);
goto END;
}
mp_media_info_group_get_main_info(item, &title);
item_data->handle = item;
item_data->index = index;
item_data->checked =
- mp_list_is_in_checked_path_list(list->checked_path_list,
- title);
+ mp_list_is_in_checked_path_list(list->checked_path_list,
+ title);
if (MP_LIST_OBJ_IS_GENGRID(list->genlist)) {
list_item =
- elm_gengrid_item_append(list->genlist, list->gengrid_itc,
- item_data, _mp_album_select_cb,
- (void *) list);
+ elm_gengrid_item_append(list->genlist, list->gengrid_itc,
+ item_data, _mp_album_select_cb,
+ (void *) list);
} else {
Elm_Object_Item *parent_group = NULL;
list_item =
- elm_genlist_item_append(list->genlist, list->itc,
- item_data, parent_group,
- ELM_GENLIST_ITEM_NONE,
- _mp_album_select_cb,
- (void *) list);
+ elm_genlist_item_append(list->genlist, list->itc,
+ item_data, parent_group,
+ ELM_GENLIST_ITEM_NONE,
+ _mp_album_select_cb,
+ (void *) list);
}
item_data->it = list_item;
elm_object_item_data_set(item_data->it, item_data);
}
- END:
+ END:
endfunc;
}
list->gengrid_itc->func.del = _mp_album_list_item_del_cb;
}
_mp_album_list_set_grid_style(list);
- //evas_object_smart_callback_add(list->genlist, "longpressed", _mp_album_list_item_longpressed_cb, list);
elm_gengrid_align_set(list->genlist, 0.5, 0.0);
endfunc;
}
+static void mp_album_list_initialize_recently_added(MpAlbumList_t *list)
+{
+ MP_CHECK(list);
+
+ mp_evas_object_del(list->recently_added_genlist);
+ list->recently_added_genlist = mp_widget_genlist_create(list->box);
+ MP_CHECK(list->recently_added_genlist);
+ elm_scroller_policy_set(list->recently_added_genlist, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ evas_object_size_hint_weight_set(list->recently_added_genlist, EVAS_HINT_EXPAND,
+ 0.5);
+ evas_object_size_hint_align_set(list->recently_added_genlist, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_mode_set(list->recently_added_genlist, ELM_LIST_COMPRESS);
+ evas_object_show(list->recently_added_genlist);
+ /*packet genlist to box */
+ elm_box_pack_end(list->box, list->recently_added_genlist);
+
+ evas_object_data_set(list->recently_added_genlist, "list_data", list);
+}
+
+void _mp_album_list_recently_added_del_cb(void *data, Evas_Object * obj)
+{
+ mp_media_list_h *svc_handle = (mp_media_list_h *) data;
+ MP_CHECK(svc_handle);
+ IF_FREE(svc_handle);
+ IF_FREE(g_item_data);
+}
+
+char *_mp_album_list_group_index_recently_added_text_get(void *data,
+ Evas_Object *obj,
+ const char *part)
+{
+ char *text = NULL;
+ if (!g_strcmp0(part, "elm.text")) {
+ int len = strlen(GET_STR(STR_RECENTLY_ADDED)) + strlen(GET_STR(STR_MP_ARTISTS)) + 2;
+ text = (char *)malloc(len);
+ MP_CHECK_NULL(text);
+ snprintf(text, len, "%s %s", GET_STR(STR_RECENTLY_ADDED), GET_STR(STR_MP_ALBUMS));
+ }
+
+ return text;
+}
+
+static void _mp_album_list_recently_added_play_icon_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ int count = 0, res = 0;
+ mp_list_item_data_t *item_data = (mp_list_item_data_t *)data;
+ MP_CHECK(item_data);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ mp_media_info_h track = item_data->handle;
+ MP_CHECK(track);
+
+ MpAlbumDetailList_t *list = calloc(1, sizeof(MpAlbumDetailList_t));
+ MP_CHECK(list);
+
+ mp_media_list_h svc_handle;
+ mp_plst_item *plst_item = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+ char *thumbnail = NULL;
+ mp_media_info_group_get_main_info(track, &title);
+ mp_media_info_group_get_sub_info(track, &artist);
+ mp_media_info_group_get_thumbnail_path(track, &thumbnail);
+ DEBUG_TRACE("thumbnail = %s", thumbnail);
+
+ list->list_type = MP_LIST_TYPE_ALBUM_DETAIL;
+ list->track_type = MP_TRACK_BY_ALBUM;
+ list->type_str = title;
+ list->artist = artist;
+ list->thumbnail = thumbnail;
+
+ PROFILE_IN("mp_media_info_list_count");
+ res =
+ mp_media_info_list_count(list->track_type, list->type_str,
+ list->type_str2, list->filter_str,
+ list->playlist_id, &count);
+ PROFILE_OUT("mp_media_info_list_count");
+
+ PROFILE_IN("mp_media_info_list_create");
+ mp_media_info_list_create(&svc_handle, list->track_type,
+ list->type_str, list->type_str2,
+ list->filter_str, list->playlist_id, 0,
+ count);
+ PROFILE_OUT("mp_media_info_list_create");
+ IF_FREE(list);
+
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+
+ char *uri = NULL;
+ char *uid = NULL;
+ item = mp_media_info_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ continue;
+ }
+ mp_track_type track_type = MP_TRACK_URI;
+ mp_media_info_get_media_id(item, &uid);
+ mp_media_info_get_file_path(item, &uri);
+ mp_media_info_get_title(item, &title);
+ mp_media_info_get_artist(item, &artist);
+
+ if (!ad->playlist_mgr) {
+ mp_common_create_playlist_mgr();
+ }
+ MP_CHECK(ad->playlist_mgr);
+
+ PROFILE_IN("mp_playlist_mgr_clear");
+ mp_playlist_mgr_clear(ad->playlist_mgr);
+ PROFILE_OUT("mp_playlist_mgr_clear");
+
+ if (!index) {
+ plst_item =
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
+ } else {
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
+ }
+ }
+
+ ad->hide_player_view = true;
+ ad->paused_by_user = false;
+
+ if (ad->playlist_mgr->shuffle_state) {
+ ad->playlist_mgr->list = ad->playlist_mgr->shuffle_list;
+ } else {
+ ad->playlist_mgr->list = ad->playlist_mgr->normal_list;
+ }
+
+ mp_playlist_mgr_set_current(ad->playlist_mgr, plst_item);
+
+ PROFILE_IN("mp_play_destory");
+ mp_play_fast_destory(ad);
+ PROFILE_OUT("mp_play_destory");
+
+ mp_play_new_file(ad, TRUE);
+}
+
+static void _mp_album_list_recently_added_thumbpath_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ mp_list_item_data_t *item = (mp_list_item_data_t *)data;
+ MP_CHECK(item);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ Evas_Object* genlist = evas_object_data_get(obj, "genlist_obj");
+ MP_CHECK(genlist);
+
+ MpAlbumList_t *list = evas_object_data_get(genlist, "list_data");
+ MP_CHECK(list);
+
+ mp_media_info_h track = item->handle;
+ MP_CHECK(track);
+
+ int ret = 0;
+ int index = 0;
+ char *name = NULL;
+ char *artist = NULL;
+ char *title = NULL;
+ char *thumbnail = NULL;
+
+ index = item->index;
+
+ DEBUG_TRACE("index is %d", index);
+ if (index >= 0) {
+ DEBUG_TRACE("");
+ ret = mp_media_info_group_get_main_info(track, &name);
+ DEBUG_TRACE("");
+ ret = mp_media_info_group_get_sub_info(track, &artist);
+ DEBUG_TRACE("");
+ mp_media_info_group_get_thumbnail_path(track,
+ &thumbnail);
+ DEBUG_TRACE("thumbnail=%s", thumbnail);
+ mp_retm_if(ret != 0, "Fail to get value");
+ mp_retm_if(name == NULL, "Fail to get value");
+
+ if (!name || !strlen(name)) {
+ name = g_strdup(GET_SYS_STR("IDS_COM_BODY_UNKNOWN"));
+ }
+ if (!artist || !strlen(artist)) {
+ artist = g_strdup(GET_SYS_STR("IDS_COM_BODY_UNKNOWN"));
+ }
+ title = name;
+ }
+
+
+ if (list->function_type == MP_LIST_FUNC_ADD_TRACK) {
+ MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
+ MP_CHECK(view_manager);
+ MpSelectTrackView_t *view_select_track =
+ mp_select_track_view_create(view_manager->navi);
+ MP_CHECK(view_select_track);
+ mp_view_mgr_push_view(view_manager, (MpView_t *) view_select_track,
+ NULL);
+
+ int count = g_list_length(ad->checkedList);
+ if (count > 0) {
+ char *text = g_strdup_printf(GET_STR(STR_MP_SELECT_ITEMS), count);
+ mp_view_set_title((MpView_t *) view_select_track, text);
+ IF_FREE(text);
+ } else {
+ mp_view_set_title((MpView_t *) view_select_track, STR_MP_TILTE_SELECT_ITEM);
+ }
+ mp_track_list_set_data((MpTrackList_t *) view_select_track->
+ content_to_show, MP_TRACK_LIST_TYPE,
+ MP_TRACK_BY_ALBUM, MP_TRACK_LIST_TYPE_STR,
+ name, -1);
+ mp_list_view_set_cancel_btn((MpListView_t *) view_select_track,
+ true);
+ mp_list_view_set_done_btn((MpListView_t *) view_select_track, true,
+ MP_DONE_SELECT_ADD_TRACK_TYPE);
+ mp_list_view_set_select_all((MpListView_t *) view_select_track,
+ TRUE);
+ mp_list_update(view_select_track->content_to_show);
+ mp_view_update_options((MpView_t *) view_select_track);
+ mp_list_set_edit(view_select_track->content_to_show, TRUE);
+ return;
+ }
+
+ if (list->edit_mode) {
+ mp_list_edit_mode_sel((MpList_t *) list, item);
+ MpViewMgr_t *view_mgr = mp_view_mgr_get_view_manager();
+ MpView_t *view = mp_view_mgr_get_top_view(view_mgr);
+ mp_view_update_options_edit(view);
+ return;
+ }
+
+
+ /* create the view of album detail */
+ MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
+ MP_CHECK(view_manager);
+ MpAlbumDetailView_t *view_album_detail =
+ mp_album_detail_view_create(view_manager->navi, name, artist,
+ thumbnail);
+ mp_view_mgr_push_view(view_manager, (MpView_t *) view_album_detail,
+ NULL);
+
+ mp_view_update_options((MpView_t *) view_album_detail);
+ mp_view_set_title((MpView_t *) view_album_detail, name);
+}
+
+char *_mp_album_list_recently_added_text_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h svc_handle = (mp_media_list_h) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpAlbumList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+
+ int count = (list->album_list_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->album_list_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_group_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d", "elm.text.main.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ mp_media_info_group_get_main_info(item, &title);
+ if (!title || !strlen(title)) {
+ title = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+ }
+ return g_strdup(title);
+ }
+ part_name[0] = '\0';
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d", "elm.text.sub.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ mp_media_info_group_get_sub_info(item, &artist);
+ if (!artist || !strlen(artist)) {
+ artist = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+ }
+ return g_strdup(artist);
+ }
+ }
+ return NULL;
+}
+
+Evas_Object *_mp_album_list_recently_added_content_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h svc_handle = (mp_media_list_h) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpAlbumList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+ int count = (list->album_list_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->album_list_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *thumb_path = NULL;
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_group_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+ mp_media_info_group_get_thumbnail_path(item, &thumb_path);
+ if (!thumb_path) {
+ char default_thumbnail[1024] = { 0 };
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", DEFAULT_THUMBNAIL);
+ free(shared_path);
+ thumb_path = g_strdup(default_thumbnail);
+ }
+
+ mp_list_item_data_t *item_data = calloc(1, sizeof(mp_list_item_data_t));
+ MP_CHECK_NULL(item_data);
+ item_data->handle = item;
+ item_data->index = index;
+ item_data->group_type = MP_GROUP_BY_ALBUM;
+ if (g_item_data) {
+ free(g_item_data);
+ }
+ g_item_data = item_data;
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d",
+ "elm.swallow.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, thumb_path,NULL);
+ elm_image_fill_outside_set(image, true);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.1",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_album_list_recently_added_thumbpath_clicked_cb, item_data);
+ return content;
+ }
+ part_name[0] = '\0';
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d%s", "elm.swallow.", (index+1), ".play");
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ char play_thumbnail[1024] = { 0 };
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(play_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", RECENTLY_ADDED_PLAY_ICON);
+ free(shared_path);
+ thumb_path = g_strdup(play_thumbnail);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, thumb_path, NULL);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.3",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_album_list_recently_added_play_icon_clicked_cb, item_data);
+ return content;
+ }
+ }
+ return NULL;
+}
+
+static Elm_Object_Item *_mp_album_list_append_group_index(void *thiz)
+{
+ startfunc;
+ MpAlbumList_t *list = thiz;
+ MP_CHECK_NULL(list);
+ MP_CHECK_NULL(list->recently_added_genlist);
+
+ Elm_Object_Item *group_index = NULL;
+ mp_list_item_data_t *item_data =
+ mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK_NULL(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_group_index_recently_added, item_data,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ group_index = item_data->it;
+ elm_genlist_item_select_mode_set(group_index,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ return group_index;
+}
+
+static void _mp_album_list_append_recently_added(void *thiz, mp_media_list_h svc_handle)
+{
+ startfunc;
+ MpAlbumList_t *list = thiz;
+ MP_CHECK(list);
+ MP_CHECK(list->recently_added_genlist);
+ mp_list_item_data_t *item_data;
+
+ item_data = mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_genlist_recently_added, svc_handle,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+}
+
+static void mp_album_list_show_recently_added_tracks(void *thiz)
+{
+ startfunc;
+ MP_CHECK(thiz);
+ MpAlbumList_t *list = thiz;
+ int count = 0, res = 0;
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ if (!list->itc_group_index_recently_added) {
+ list->itc_group_index_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_group_index_recently_added);
+ list->itc_group_index_recently_added->item_style = "group_index";
+ list->itc_group_index_recently_added->func.text_get =
+ _mp_album_list_group_index_recently_added_text_get;
+ list->itc_group_index_recently_added->func.content_get =
+ NULL;
+ list->itc_group_index_recently_added->func.del =
+ _mp_album_list_recently_added_del_cb;
+ }
+
+ _mp_album_list_append_group_index(list);
+
+ if (!list->itc_genlist_recently_added) {
+ list->itc_genlist_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_genlist_recently_added);
+ list->itc_genlist_recently_added->item_style = "recently_added";
+ list->itc_genlist_recently_added->func.text_get =
+ _mp_album_list_recently_added_text_get;
+ list->itc_genlist_recently_added->func.content_get =
+ _mp_album_list_recently_added_content_get;
+ list->itc_genlist_recently_added->func.del =
+ _mp_album_list_recently_added_del_cb;
+ }
+
+ mp_media_list_h svc_handle = NULL;
+
+ list->track_type = MP_TRACK_BY_ADDED_TIME;
+ list->playlist_id = 0;
+
+ PROFILE_IN("mp_media_info_list_count");
+ res =
+ mp_media_info_group_list_count(MP_GROUP_BY_ALBUM, NULL, NULL,
+ &count);
+ PROFILE_OUT("mp_media_info_list_count");
+ MP_CHECK(res == 0);
+ list->album_list_count = count;
+
+ PROFILE_IN("mp_media_info_list_create");
+ res =
+ mp_media_info_group_list_create(&svc_handle,
+ MP_GROUP_BY_ALBUM, NULL, NULL, 0,
+ count);
+ PROFILE_OUT("mp_media_info_list_create");
+ MP_CHECK(svc_handle);
+
+ PROFILE_IN("_mp_album_list_append_recently_added");
+ _mp_album_list_append_recently_added(list, svc_handle);
+ PROFILE_OUT("_mp_album_list_append_recently_added");
+}
+
static void _mp_album_list_update(void *thiz)
{
startfunc;
mp_evas_object_del(list->no_content);
if (count) {
+ // Place Recently Added Grid View only when there are some items in genlist
+ if (ad->recentlyAddedGridView) {
+ mp_album_list_initialize_recently_added(list);
+ }
+
+ /*create new genlist */
if (list->display_mode == MP_LIST_DISPLAY_MODE_THUMBNAIL) {
_mp_album_list_gengrid_create(list);
} else {
evas_object_data_set(list->genlist, "list_handle", list);
if (!list->edit_mode) {
+ if (ad->recentlyAddedGridView) {
+ mp_album_list_show_recently_added_tracks(list);
+ ad->recentlyAddedGridView = false;
+ }
mp_list_bottom_counter_item_append((MpList_t *) list);
}
}
item_data->it =
- elm_genlist_item_append(list->genlist, list->itc_track,
- item_data, parent_group,
- ELM_GENLIST_ITEM_NONE,
- _mp_artist_detail_list_select_cb,
- list);
+ elm_genlist_item_append(list->genlist, list->itc_track,
+ item_data, parent_group,
+ ELM_GENLIST_ITEM_NONE,
+ _mp_artist_detail_list_select_cb,
+ list);
}
list->track_lists = g_list_append(list->track_lists, svc_handle);
#include "mp-artist-list.h"
#include "mp-artist-detail-view.h"
+#include "mp-artist-detail-list.h"
#include "mp-create-playlist-view.h"
#include "mp-select-track-view.h"
#include "mp-popup.h"
-/*#include "shortcut.h"*/
#include "mp-menu.h"
#include "mp-util.h"
#include "mp-widget.h"
#include "mp-common.h"
-
+#include "mp-play.h"
#define ARTIST_GRID_W 175
#define ARTIST_GRID_H 222
#define ARTIST_GRID_LAND_W 179
#define ARTIST_GRID_LAND_H 240
+static mp_list_item_data_t* g_item_data = NULL;
+
static char *_mp_artist_list_group_index_text_get(void *data,
- Evas_Object * obj,
- const char *part)
+ Evas_Object * obj,
+ const char *part)
{
mp_list_item_data_t *item_data = data;
MP_CHECK_NULL(item_data);
MP_CHECK_NULL(list);
unsigned int count =
- mp_list_get_editable_count((MpList_t *) list,
- mp_list_get_edit_type((MpList_t *)
- list));
+ mp_list_get_editable_count((MpList_t *) list,
+ mp_list_get_edit_type((MpList_t *)
+ list));
if (count == 1) {
text = g_strdup(GET_STR(STR_MP_1_ARTIST));
static void
_mp_artist_list_add_to_playlist_cb(void *data, Evas_Object * obj,
- void *event_info)
+ void *event_info)
{
eventfunc;
mp_edit_create_add_to_playlist_popup(data);
}
static char *_mp_artist_list_label_get(void *data, Evas_Object * obj,
- const char *part)
+ const char *part)
{
char *name = NULL;
int ret = 0;
int song_count = 0;
mp_media_info_group_get_album_thumnail_paths(item->handle,
- &album_thumbs,
- &album_count);
+ &album_thumbs,
+ &album_count);
mp_media_info_group_get_track_count(item->handle, &song_count);
char *sub_text = NULL;
sub_text = g_strdup(GET_STR(STR_MP_1_ALBUM_1_SONG));
} else if (album_count == 1 && song_count > 1) {
sub_text =
- g_strdup_printf(GET_STR(STR_MP_1_ALBUM_PD_SONGS),
- song_count);
+ g_strdup_printf(GET_STR(STR_MP_1_ALBUM_PD_SONGS),
+ song_count);
} else {
sub_text =
- g_strdup_printf(GET_STR(STR_MP_PD_ALBUMS_PD_SONGS),
- album_count, song_count);
+ g_strdup_printf(GET_STR(STR_MP_PD_ALBUMS_PD_SONGS),
+ album_count, song_count);
}
return sub_text;
}
return NULL;
}
-/*
-static void
-_mp_artist_list_more_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
- eventfunc;
- mp_list_item_data_t *item = data;
- MP_CHECK(item);
- MP_CHECK(item->it);
- item->artist_album_page++;
- mp_debug("next artist album page = %d", item->artist_album_page);
- elm_genlist_item_fields_update(item->it, "elm.icon", ELM_GENLIST_ITEM_FIELD_CONTENT);
-}
-*/
-
static Evas_Object *_mp_artist_list_album_icon_get(Evas_Object * obj,
- mp_list_item_data_t *
- item)
+ mp_list_item_data_t *
+ item)
{
MP_CHECK_NULL(item);
MP_CHECK_NULL(item->handle);
char *path = NULL;
mp_media_info_group_get_album_thumnail_paths(item->handle,
- &album_thumbs,
- &album_count);
+ &album_thumbs,
+ &album_count);
mp_media_info_group_get_track_count(item->handle, &song_count);
for (i = 0; i < album_count; i++) {
path = album_thumbs[i];
}
Evas_Object *icon =
- mp_util_create_lazy_update_thumb_icon(obj, path, image_size,
- image_size);
+ mp_util_create_lazy_update_thumb_icon(obj, path, image_size,
+ image_size);
return icon;
}
Evas_Object *_mp_artist_list_icon_get(void *data, Evas_Object * obj,
- const char *part)
+ const char *part)
{
Evas_Object *icon = NULL;
if (item->display_mode == MP_LIST_DISPLAY_MODE_NORMAL) {
if (!strcmp(part, "elm.icon.1")
- || !strcmp(part, "elm.swallow.icon")) {
+ || !strcmp(part, "elm.swallow.icon")) {
content = elm_layout_add(obj);
Evas_Object *icon = _mp_artist_list_album_icon_get(obj, item);
elm_layout_theme_set(content, "layout", "list/B/music.type.1",
- "default");
+ "default");
elm_layout_content_set(content, "elm.swallow.content", icon);
return content;
mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, STR_MP_ADD_TO); */
mp_util_domain_translatable_text_set(button, STR_MP_ADD_TO);
evas_object_smart_callback_add(button, "clicked",
- _mp_artist_list_add_to_playlist_cb,
- list);
+ _mp_artist_list_add_to_playlist_cb,
+ list);
return button;
}
elm_object_style_set(check, "default");
evas_object_propagate_events_set(check, EINA_FALSE);
evas_object_smart_callback_add(check, "changed",
- mp_common_view_check_changed_cb,
- NULL);
+ mp_common_view_check_changed_cb,
+ NULL);
elm_check_state_pointer_set(check, &item->checked);
return check;
/*item_handle = mp_media_info_group_list_nth_item(gli_data->handle, index); */
ret = mp_media_info_group_get_main_info(gli_data->handle, &name);
mp_media_info_group_get_thumbnail_path(gli_data->handle,
- &thumbnail);
+ &thumbnail);
mp_retm_if(ret != 0, "Fail to get value");
mp_retm_if(name == NULL, "Fail to get value");
}
MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
MP_CHECK(view_manager);
MpSelectTrackView_t *view_select_track =
- mp_select_track_view_create(view_manager->navi);
+ mp_select_track_view_create(view_manager->navi);
MP_CHECK(view_select_track);
mp_view_mgr_push_view(view_manager, (MpView_t *) view_select_track,
- NULL);
+ NULL);
int count = g_list_length(ad->checkedList);
if (count > 0) {
mp_view_set_title((MpView_t *) view_select_track, STR_MP_TILTE_SELECT_ITEM);
}
mp_track_list_set_data((MpTrackList_t *) view_select_track->
- content_to_show, MP_TRACK_LIST_TYPE,
- MP_TRACK_BY_ARTIST, MP_TRACK_LIST_TYPE_STR,
- name, -1);
+ content_to_show, MP_TRACK_LIST_TYPE,
+ MP_TRACK_BY_ARTIST, MP_TRACK_LIST_TYPE_STR,
+ name, -1);
mp_list_view_set_cancel_btn((MpListView_t *) view_select_track,
- true);
+ true);
mp_list_view_set_done_btn((MpListView_t *) view_select_track, true,
- MP_DONE_SELECT_ADD_TRACK_TYPE);
+ MP_DONE_SELECT_ADD_TRACK_TYPE);
mp_list_view_set_select_all((MpListView_t *) view_select_track,
- TRUE);
+ TRUE);
mp_list_update(view_select_track->content_to_show);
mp_view_update_options((MpView_t *) view_select_track);
mp_list_set_edit(view_select_track->content_to_show, TRUE);
return;
}
- /* create the view of album detail */
+ /* create the view of artist detail */
MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
MP_CHECK(view_manager);
MpArtistDetailView_t *view_artist_detail =
- mp_artist_detail_view_create(view_manager->navi, name, thumbnail);
+ mp_artist_detail_view_create(view_manager->navi, name, thumbnail);
MP_CHECK(view_artist_detail);
mp_view_mgr_push_view(view_manager, (MpView_t *) view_artist_detail,
- NULL);
+ NULL);
mp_view_update_options((MpView_t *) view_artist_detail);
mp_view_set_title((MpView_t *) view_artist_detail, name);
-
}
static void _mp_artist_list_append_group_index_item(void *thiz)
MP_CHECK(list->itc_group_index);
list->itc_group_index->item_style = "music/groupindex.sub";
list->itc_group_index->func.text_get =
- _mp_artist_list_group_index_text_get;
+ _mp_artist_list_group_index_text_get;
list->itc_group_index->func.del = _mp_artist_list_item_del_cb;
}
mp_list_item_data_t *item_data =
- mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
MP_CHECK(item_data);
item_data->it = list->group_it =
- elm_genlist_item_append(list->genlist, list->itc_group_index,
- item_data, NULL, ELM_GENLIST_ITEM_GROUP,
- NULL, NULL);
+ elm_genlist_item_append(list->genlist, list->itc_group_index,
+ item_data, NULL, ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
elm_genlist_item_select_mode_set(list->group_it,
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
void mp_artist_list_show_group_index(void *thiz, bool show)
MP_CHECK(list->genlist);
DEBUG_TRACE("show group index: %d list->group_it: %0x", show,
- list->group_it);
+ list->group_it);
if (show) {
_mp_artist_list_append_group_index_item(list);
} else if (list->group_it) {
}
ret =
- mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ARTIST,
- list->type_str, list->filter_str,
- 0, count);
+ mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ARTIST,
+ list->type_str, list->filter_str,
+ 0, count);
if (ret != 0) {
DEBUG_TRACE("Fail to get items");
item = mp_media_info_group_list_nth_item(svc_handle, index);
if (!item) {
DEBUG_TRACE
- ("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]",
- ret, index);
+ ("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]",
+ ret, index);
goto END;
}
mp_media_info_group_get_main_info(item, &title);
item_data->index = index;
item_data->display_mode = list->display_mode;
item_data->checked =
- mp_list_is_in_checked_path_list(list->checked_path_list,
- title);
+ mp_list_is_in_checked_path_list(list->checked_path_list,
+ title);
Elm_Object_Item *parent_group = NULL;
if (MP_LIST_OBJ_IS_GENGRID(list->genlist)) {
list_item =
- elm_gengrid_item_append(list->genlist, list->gengrid_itc,
- item_data, _mp_artist_select_cb,
- (void *) list);
+ elm_gengrid_item_append(list->genlist, list->gengrid_itc,
+ item_data, _mp_artist_select_cb,
+ (void *) list);
} else {
list_item =
- elm_genlist_item_append(list->genlist, list->itc,
- item_data, parent_group,
- ELM_GENLIST_ITEM_NONE,
- _mp_artist_select_cb, list);
+ elm_genlist_item_append(list->genlist, list->itc,
+ item_data, parent_group,
+ ELM_GENLIST_ITEM_NONE,
+ _mp_artist_select_cb, list);
}
item_data->it = list_item;
}
- END:
+ END:
endfunc;
}
elm_gengrid_item_size_set(list->genlist, w, h);
}
-
static void _mp_artist_list_gengrid_create(MpArtistList_t * list)
{
startfunc;
list->genlist = elm_gengrid_add(list->box);
MP_CHECK(list->genlist);
evas_object_size_hint_weight_set(list->genlist, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
+ EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list->genlist, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
+ EVAS_HINT_FILL);
evas_object_show(list->genlist);
MP_LIST_OBJ_SET_AS_GENGRID(list->genlist);
/*packet genlist to box */
elm_gengrid_align_set(list->genlist, 0.5, 0.0);
evas_object_smart_callback_add(list->genlist, "highlighted",
- _mp_artist_list_item_highlighted_cb,
- list);
+ _mp_artist_list_item_highlighted_cb,
+ list);
evas_object_smart_callback_add(list->genlist, "unhighlighted",
- _mp_artist_list_item_unhighlighted_cb,
- list);
- /*evas_object_smart_callback_add(list->genlist, "longpressed", _mp_artist_list_item_longpressed_cb, list); */
+ _mp_artist_list_item_unhighlighted_cb,
+ list);
endfunc;
}
+static void mp_artist_list_initialize_recently_added(MpArtistList_t *list)
+{
+ MP_CHECK(list);
+
+ mp_evas_object_del(list->recently_added_genlist);
+ list->recently_added_genlist = mp_widget_genlist_create(list->box);
+ MP_CHECK(list->recently_added_genlist);
+ elm_scroller_policy_set(list->recently_added_genlist, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ evas_object_size_hint_weight_set(list->recently_added_genlist, EVAS_HINT_EXPAND,
+ 0.5);
+ evas_object_size_hint_align_set(list->recently_added_genlist, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_mode_set(list->recently_added_genlist, ELM_LIST_COMPRESS);
+ evas_object_show(list->recently_added_genlist);
+ /*packet genlist to box */
+ elm_box_pack_end(list->box, list->recently_added_genlist);
+
+ evas_object_data_set(list->recently_added_genlist, "list_data", list);
+}
+
+static void _mp_artist_list_recently_added_del_cb(void *data, Evas_Object * obj)
+{
+ mp_media_list_h *svc_handle = (mp_media_list_h *) data;
+ MP_CHECK(svc_handle);
+ IF_FREE(svc_handle);
+ IF_FREE(g_item_data);
+}
+
+static char *_mp_artist_list_group_index_recently_added_text_get(void *data,
+ Evas_Object *obj,
+ const char *part)
+{
+ char *text = NULL;
+ if (!g_strcmp0(part, "elm.text")) {
+ int len = strlen(GET_STR(STR_RECENTLY_ADDED)) + strlen(GET_STR(STR_MP_ARTISTS)) + 2;
+ text = (char *)malloc(len);
+ MP_CHECK_NULL(text);
+ snprintf(text, len, "%s %s", GET_STR(STR_RECENTLY_ADDED), GET_STR(STR_MP_ARTISTS));
+ }
+
+ return text;
+}
+
+static void _mp_artist_list_recently_added_play_icon_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ int count = 0, res = 0;
+ mp_list_item_data_t *item_data = (mp_list_item_data_t *)data;
+ MP_CHECK(item_data);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ mp_media_info_h track = item_data->handle;
+ MP_CHECK(track);
+
+ MpArtistDetailList_t *list = calloc(1, sizeof(MpArtistDetailList_t));
+ MP_CHECK(list);
+
+ mp_media_list_h svc_handle;
+ mp_plst_item *plst_item = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+ char *thumbnail = NULL;
+ mp_media_info_group_get_main_info(track, &title);
+ mp_media_info_group_get_thumbnail_path(track, &thumbnail);
+ DEBUG_TRACE("thumbnail = %s", thumbnail);
+
+ list->list_type = MP_LIST_TYPE_ARTIST_DETAIL;
+ list->track_type = MP_GROUP_BY_ARTIST_ALBUM;
+ list->group_type = MP_TRACK_BY_ARTIST_ALBUM;
+ list->type_str = title;
+
+ PROFILE_IN("mp_media_info_list_count");
+ res =
+ mp_media_info_list_count(list->track_type, list->type_str,
+ list->type_str2, list->filter_str,
+ list->playlist_id, &count);
+ PROFILE_OUT("mp_media_info_list_count");
+
+ PROFILE_IN("mp_media_info_list_create");
+ mp_media_info_list_create(&svc_handle, list->track_type,
+ list->type_str, list->type_str2,
+ list->filter_str, list->playlist_id, 0,
+ count);
+ PROFILE_OUT("mp_media_info_list_create");
+ IF_FREE(list);
+
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+
+ char *uri = NULL;
+ char *uid = NULL;
+ item = mp_media_info_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_list_nth_item, index[%d]", index);
+ continue;
+ }
+ mp_track_type track_type = MP_TRACK_URI;
+ mp_media_info_get_media_id(item, &uid);
+ mp_media_info_get_file_path(item, &uri);
+ mp_media_info_get_title(item, &title);
+ mp_media_info_get_artist(item, &artist);
+
+ if (!ad->playlist_mgr) {
+ mp_common_create_playlist_mgr();
+ }
+ MP_CHECK(ad->playlist_mgr);
+
+ PROFILE_IN("mp_playlist_mgr_clear");
+ mp_playlist_mgr_clear(ad->playlist_mgr);
+ PROFILE_OUT("mp_playlist_mgr_clear");
+
+ if (!index) {
+ plst_item =
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
+ } else {
+ mp_playlist_mgr_item_append(ad->playlist_mgr, uri,
+ uid, title, artist,
+ track_type);
+ }
+ }
+
+ ad->hide_player_view = true;
+ ad->paused_by_user = false;
+
+ if (ad->playlist_mgr->shuffle_state) {
+ ad->playlist_mgr->list = ad->playlist_mgr->shuffle_list;
+ } else {
+ ad->playlist_mgr->list = ad->playlist_mgr->normal_list;
+ }
+
+ mp_playlist_mgr_set_current(ad->playlist_mgr, plst_item);
+
+ PROFILE_IN("mp_play_destory");
+ mp_play_fast_destory(ad);
+ PROFILE_OUT("mp_play_destory");
+
+ mp_play_new_file(ad, TRUE);
+}
+
+static void _mp_artist_list_recently_added_thumbpath_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ mp_list_item_data_t *item = (mp_list_item_data_t *)data;
+ MP_CHECK(item);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ Evas_Object* genlist = evas_object_data_get(obj, "genlist_obj");
+ MP_CHECK(genlist);
+
+ MpArtistList_t *list = evas_object_data_get(genlist, "list_data");
+ MP_CHECK(list);
+
+ mp_media_info_h track = item->handle;
+ MP_CHECK(track);
+
+ int ret = 0;
+ int index = 0;
+ char *name = NULL;
+ char *thumbnail = NULL;
+
+ index = item->index;
+
+ if (index >= 0) {
+ ret = mp_media_info_group_get_main_info(track, &name);
+ mp_media_info_group_get_thumbnail_path(track,
+ &thumbnail);
+ mp_retm_if(ret != 0, "Fail to get value");
+ mp_retm_if(name == NULL, "Fail to get value");
+ }
+
+ if (list->function_type == MP_LIST_FUNC_ADD_TRACK) {
+ MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
+ MP_CHECK(view_manager);
+ MpSelectTrackView_t *view_select_track =
+ mp_select_track_view_create(view_manager->navi);
+ MP_CHECK(view_select_track);
+ mp_view_mgr_push_view(view_manager, (MpView_t *) view_select_track,
+ NULL);
+
+ int count = g_list_length(ad->checkedList);
+ if (count > 0) {
+ char *text = g_strdup_printf(GET_STR(STR_MP_SELECT_ITEMS), count);
+ mp_view_set_title((MpView_t *) view_select_track, text);
+ IF_FREE(text);
+ } else {
+ mp_view_set_title((MpView_t *) view_select_track, STR_MP_TILTE_SELECT_ITEM);
+ }
+ mp_track_list_set_data((MpTrackList_t *) view_select_track->
+ content_to_show, MP_TRACK_LIST_TYPE,
+ MP_TRACK_BY_ARTIST, MP_TRACK_LIST_TYPE_STR,
+ name, -1);
+ mp_list_view_set_cancel_btn((MpListView_t *) view_select_track,
+ true);
+ mp_list_view_set_done_btn((MpListView_t *) view_select_track, true,
+ MP_DONE_SELECT_ADD_TRACK_TYPE);
+ mp_list_view_set_select_all((MpListView_t *) view_select_track,
+ TRUE);
+ mp_list_update(view_select_track->content_to_show);
+ mp_view_update_options((MpView_t *) view_select_track);
+ mp_list_set_edit(view_select_track->content_to_show, TRUE);
+ return;
+ }
+
+ if (list->edit_mode) {
+ mp_list_edit_mode_sel((MpList_t *) list, item);
+
+ MpViewMgr_t *view_mgr = mp_view_mgr_get_view_manager();
+ MpView_t *view = mp_view_mgr_get_top_view(view_mgr);
+ ERROR_TRACE("update options of edit view");
+ mp_view_update_options_edit((MpView_t *) view);
+ return;
+ }
+
+ /* create the view of artist detail */
+ MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
+ MP_CHECK(view_manager);
+ MpArtistDetailView_t *view_artist_detail =
+ mp_artist_detail_view_create(view_manager->navi, name, thumbnail);
+ MP_CHECK(view_artist_detail);
+ mp_view_mgr_push_view(view_manager, (MpView_t *) view_artist_detail,
+ NULL);
+ mp_view_update_options((MpView_t *) view_artist_detail);
+ mp_view_set_title((MpView_t *) view_artist_detail, name);
+}
+
+static char *_mp_artist_list_recently_added_text_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h *svc_handle = (mp_media_list_h *) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpArtistList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+
+ int count = (list->artist_list_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->artist_list_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_group_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d", "elm.text.main.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ mp_media_info_group_get_main_info(item, &title);
+ if (!title || !strlen(title)) {
+ title = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+ }
+ return g_strdup(title);
+ }
+ }
+ return NULL;
+}
+
+static Evas_Object *_mp_artist_list_recently_added_content_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h *svc_handle = (mp_media_list_h *) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpArtistList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+ int count = (list->artist_list_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->artist_list_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *thumb_path = NULL;
+ char default_thumbnail[1024] = { 0 };
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_group_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+ mp_media_info_group_get_thumbnail_path(item, &thumb_path);
+ if (!thumb_path) {
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", DEFAULT_THUMBNAIL);
+ free(shared_path);
+ thumb_path = default_thumbnail;
+ }
+
+ mp_list_item_data_t *item_data = calloc(1, sizeof(mp_list_item_data_t));
+ MP_CHECK_NULL(item_data);
+ item_data->handle = item;
+ item_data->index = index;
+ item_data->group_type = MP_GROUP_NONE;
+ if (g_item_data) {
+ free(g_item_data);
+ }
+ g_item_data = item_data;
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d",
+ "elm.swallow.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, thumb_path, NULL);
+ elm_image_fill_outside_set(image, true);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.1",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_artist_list_recently_added_thumbpath_clicked_cb, NULL);
+ return content;
+ }
+ part_name[0] = '\0';
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d%s", "elm.swallow.", (index+1), ".play");
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ char play_thumbnail[1024] = { 0 };
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(play_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", RECENTLY_ADDED_PLAY_ICON);
+ free(shared_path);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, play_thumbnail, NULL);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.3",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_artist_list_recently_added_play_icon_clicked_cb, item_data);
+ return content;
+ }
+ }
+ return NULL;
+}
+
+static Elm_Object_Item *_mp_artist_list_append_group_index(void *thiz)
+{
+ startfunc;
+ MpArtistList_t *list = thiz;
+ MP_CHECK_NULL(list);
+ MP_CHECK_NULL(list->recently_added_genlist);
+
+ Elm_Object_Item *group_index = NULL;
+ mp_list_item_data_t *item_data =
+ mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK_NULL(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_group_index_recently_added, item_data,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ group_index = item_data->it;
+ elm_genlist_item_select_mode_set(group_index,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ return group_index;
+}
+
+static void _mp_artist_list_append_recently_added(void *thiz, mp_media_list_h svc_handle)
+{
+ startfunc;
+ MpArtistList_t *list = thiz;
+ MP_CHECK(list);
+ MP_CHECK(list->recently_added_genlist);
+ mp_list_item_data_t *item_data;
+
+ item_data = mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_genlist_recently_added, svc_handle,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+}
+
+static void mp_artist_list_show_recently_added_tracks(void *thiz)
+{
+ startfunc;
+ MP_CHECK(thiz);
+ MpArtistList_t *list = thiz;
+ int count = 0, res = 0;
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ if (!list->itc_group_index_recently_added) {
+ list->itc_group_index_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_group_index_recently_added);
+ list->itc_group_index_recently_added->item_style = "group_index";
+ list->itc_group_index_recently_added->func.text_get =
+ _mp_artist_list_group_index_recently_added_text_get;
+ list->itc_group_index_recently_added->func.content_get =
+ NULL;
+ list->itc_group_index_recently_added->func.del =
+ _mp_artist_list_recently_added_del_cb;
+ }
+
+ _mp_artist_list_append_group_index(list);
+
+ if (!list->itc_genlist_recently_added) {
+ list->itc_genlist_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_genlist_recently_added);
+ list->itc_genlist_recently_added->item_style = "recently_added";
+ list->itc_genlist_recently_added->func.text_get =
+ _mp_artist_list_recently_added_text_get;
+ list->itc_genlist_recently_added->func.content_get =
+ _mp_artist_list_recently_added_content_get;
+ list->itc_genlist_recently_added->func.del =
+ _mp_artist_list_recently_added_del_cb;
+ }
+
+ mp_media_list_h svc_handle = NULL;
+
+ list->track_type = MP_TRACK_BY_ADDED_TIME;
+ list->playlist_id = 0;
+
+ PROFILE_IN("mp_media_info_group_list_count");
+ res =
+ mp_media_info_group_list_count(MP_GROUP_BY_ARTIST, NULL,
+ list->filter_str, &count);
+ PROFILE_OUT("mp_media_info_group_list_count");
+ MP_CHECK(res == 0);
+ list->artist_list_count = count;
+
+ PROFILE_IN("mp_media_info_group_list_create");
+ res =
+ mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ARTIST,
+ list->type_str, list->filter_str,
+ 0, count);
+ PROFILE_OUT("mp_media_info_group_list_create");
+ MP_CHECK(svc_handle);
+
+ PROFILE_IN("_mp_artist_list_append_recently_added");
+ _mp_artist_list_append_recently_added(list, svc_handle);
+ PROFILE_OUT("_mp_artist_list_append_recently_added");
+}
void _mp_artist_list_update(void *thiz)
{
MP_CHECK(ad);
res =
- mp_media_info_group_list_count(MP_GROUP_BY_ARTIST, NULL,
- list->filter_str, &count);
+ mp_media_info_group_list_count(MP_GROUP_BY_ARTIST, NULL,
+ list->filter_str, &count);
MP_CHECK(res == 0);
mp_list_free_checked_path_list(list->checked_path_list);
list->checked_path_list =
- mp_list_get_checked_path_list((MpList_t *) list);
+ mp_list_get_checked_path_list((MpList_t *) list);
mp_evas_object_del(list->genlist);
mp_evas_object_del(list->no_content);
if (count) {
+ // Place Recently Added Grid View only when there are some items in genlist
+ if (ad->recentlyAddedGridView) {
+ mp_artist_list_initialize_recently_added(list);
+ }
+
+ /*create new genlist */
if (list->display_mode == MP_LIST_DISPLAY_MODE_THUMBNAIL) {
_mp_artist_list_gengrid_create(list);
} else {
evas_object_data_set(list->genlist, "list_handle", list);
if (!list->edit_mode) {
+ if (ad->recentlyAddedGridView) {
+ mp_artist_list_show_recently_added_tracks(list);
+ ad->recentlyAddedGridView = false;
+ }
mp_list_bottom_counter_item_append((MpList_t *) list);
}
list->show_fastscroll(list);
} else {
list->no_content =
- mp_widget_create_no_contents(list->box, MP_NOCONTENT_ARTISTS,
- NULL, list);
+ mp_widget_create_no_contents(list->box, MP_NOCONTENT_ARTISTS,
+ NULL, list);
list->hide_fastscroll(list);
elm_box_pack_end(list->box, list->no_content);
MP_CHECK_NULL(list);
unsigned int count =
- mp_list_get_editable_count((MpList_t *) list,
- mp_list_get_edit_type((MpList_t *)
- list));
+ mp_list_get_editable_count((MpList_t *) list,
+ mp_list_get_edit_type((MpList_t *)
+ list));
char *text = NULL;
if (count == 1) {
}
}
-
static unsigned int
_mp_artist_list_get_count(void *thiz, MpListEditType_e type)
{
wd = calloc(1, sizeof(MpLyricData_t));
if (!wd) {
+ mp_lyric_mgr_destory(lyric_mgr);
return NULL;
}
mp_list_select_mode_set(list->genlist,
ELM_OBJECT_SELECT_MODE_ALWAYS);
- //mp_list_bottom_counter_item_append((MpList_t *)list);
-
_mp_playlist_append_user_playlists(list, NULL);
}
}
_mp_playlist_append_user_playlists(list, group_index);
}
- /*if (!list->edit_mode)
- _mp_playlist_append_add_playlist(list, group_index); */
-
- /*if (count_user)
- mp_list_bottom_counter_item_append((MpList_t *)list); */
-
endfunc;
}
}
static char *_mp_playlist_genlist_group_index_user_text_get(void *data,
- Evas_Object *
- obj,
- const char
- *part)
+ Evas_Object *
+ obj,
+ const char
+ *part)
{
mp_list_item_data_t *item_data = data;
MP_CHECK_NULL(item_data);
/*packet genlist to box */
elm_box_pack_end(list->box, list->genlist);
- //evas_object_smart_callback_add(list->genlist, "longpressed", _mp_playlist_list_item_longpressed_cb, list);
evas_object_data_set(list->genlist, "list_data", list);
- /* current not used
- if (!list->itc_user)
- list->itc_user = elm_genlist_item_class_new();
- list->itc_user->item_style = "music/musiclist/2text.1icon";
- list->itc_user->func.text_get = _mp_playlist_list_label_get;
- list->itc_user->func.content_get = _mp_playlist_list_icon_get;
- list->itc_user->func.del = _mp_playlist_list_item_del_cb; */
-
if (!list->itc_auto) {
list->itc_auto = elm_genlist_item_class_new();
MP_CHECK(list->itc_auto);
mp_evas_object_del(list->no_content);
mp_evas_object_del(list->genlist);
- //if (count_auto + count_user)
- //{
if (list->display_mode == MP_LIST_DISPLAY_MODE_THUMBNAIL) {
_mp_playlist_list_gengrid_create(list);
} else {
/* load list */
_mp_playlist_list_load_list(thiz, count_auto, count_user);
-
- //}
- /*
- else
- {
- DEBUG_TRACE("count is 0");
- if (!list->no_content)
- {
- list->no_content = mp_widget_create_no_contents(list->box, MP_NOCONTENT_PLAYLIST, NULL, NULL);
- elm_box_pack_end(list->box, list->no_content);
- }
- }
- */
-
}
static unsigned int
#include "mp-edit-callback.h"
#include "mp-player-mgr.h"
#include "mp-minicontroller.h"
+#include "mp-playlist-detail-view.h"
#include <media_content.h>
#include <player.h>
#define INITIAL_LOAD_COUNT 8
#define ALBUMART_INDEX_SIZE (720 * elm_config_scale_get())
+static mp_list_item_data_t* g_item_data = NULL;
+
typedef struct {
char *name;
char *path;
} albumart_info_s;
static char *_mp_track_list_label_get(void *data, Evas_Object * obj,
- const char *part)
+ const char *part)
{
mp_list_item_data_t *item = (mp_list_item_data_t *) data;
MP_CHECK_NULL(item);
if (!list->reorderable) {
mp_common_play_track_list_with_playlist_id(item, obj,
- list->playlist_id);
+ list->playlist_id);
}
return;
static void
_mp_track_list_albumart_index_shortcut_clicked_cb(void *data,
- Evas_Object * obj,
- const char *emission,
- const char *source)
+ Evas_Object * obj,
+ const char *emission,
+ const char *source)
{
MpTrackList_t *list = data;
MP_CHECK(list);
}
static Evas_Object *_mp_track_list_albumart_index_contnet_get_cb(void
- *data,
- Evas_Object
- *obj,
- const char
- *part)
+ *data,
+ Evas_Object
+ *obj,
+ const char
+ *part)
{
mp_list_item_data_t *item_data = data;
MP_CHECK_NULL(item_data);
snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
"shared_images", DEFAULT_THUMBNAIL);
free(shared_path);
- path = g_strdup(default_thumbnail);
+ path = default_thumbnail;
}
MP_CHECK(path);
- //mp_debug("path = %s", path);
album = calloc(1, sizeof(albumart_info_s));
MP_CHECK(album);
}
static void _mp_track_list_append_item(MpTrackList_t * list,
- mp_media_list_h svc_handle,
- int count)
+ mp_media_list_h svc_handle,
+ int count)
{
struct appdata *ad = mp_util_get_appdata();
if (mp_util_is_in_personal_page((const char *) path)) {
if (list->personal_page_type == MP_LIST_PERSONAL_PAGE_ADD
- || !mp_util_is_personal_page_on()) {
+ || !mp_util_is_personal_page_on()) {
DEBUG_TRACE("ignore the items out of personal storage");
continue;
}
}
} else {
item_data->checked =
- mp_list_is_in_checked_path_list(list->checked_path_list,
- file_path);
+ 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,
- _mp_track_genlist_sel_cb, list);
+ elm_genlist_item_append(list->genlist, list->itc, item_data,
+ NULL, ELM_GENLIST_ITEM_NONE,
+ _mp_track_genlist_sel_cb, list);
elm_object_item_data_set(item_data->it, item_data);
}
endfunc;
if (list->itc_shuffle == NULL) {
list->itc_shuffle = elm_genlist_item_class_new();
MP_CHECK(list->itc_shuffle);
- //list->itc_shuffle->item_style = "music/1line";//"music/3text.1icon.2"
- list->itc_shuffle->item_style = "default"; //"music/3text.1icon.2"
+ list->itc_shuffle->item_style = "default";
list->itc_shuffle->func.text_get = _mp_track_list_shuffle_text_get;
list->itc_shuffle->decorate_all_item_style = NULL;
list->itc_shuffle->func.content_get =
}
}
+static void mp_track_list_initialize_recently_added(MpTrackList_t *list)
+{
+ MP_CHECK(list);
+
+ mp_evas_object_del(list->recently_added_genlist);
+ list->recently_added_genlist = mp_widget_genlist_create(list->box);
+ MP_CHECK(list->recently_added_genlist);
+ elm_scroller_policy_set(list->recently_added_genlist, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ evas_object_size_hint_weight_set(list->recently_added_genlist, EVAS_HINT_EXPAND,
+ 0.5);
+ evas_object_size_hint_align_set(list->recently_added_genlist, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_genlist_mode_set(list->recently_added_genlist, ELM_LIST_COMPRESS);
+ evas_object_show(list->recently_added_genlist);
+ /*packet genlist to box */
+ elm_box_pack_end(list->box, list->recently_added_genlist);
+
+ evas_object_data_set(list->recently_added_genlist, "list_data", list);
+}
+
+void _mp_track_list_recently_added_del_cb(void *data, Evas_Object * obj)
+{
+ mp_media_list_h *svc_handle = (mp_media_list_h *) data;
+ MP_CHECK(svc_handle);
+ IF_FREE(svc_handle);
+ IF_FREE(g_item_data);
+}
+
+char *_mp_track_list_group_index_recently_added_text_get(void *data,
+ Evas_Object *obj,
+ const char *part)
+{
+ char *text = NULL;
+ if (!g_strcmp0(part, "elm.text")) {
+ int len = strlen(GET_STR(STR_RECENTLY_ADDED)) + strlen(GET_STR(STR_MP_ARTISTS)) + 2;
+ text = (char *)malloc(len);
+ MP_CHECK_NULL(text);
+ snprintf(text, len, "%s %s", GET_STR(STR_RECENTLY_ADDED), GET_STR(STR_MP_TRACKS));
+ }
+
+ return text;
+}
+
+static void _mp_track_list_recently_added_play_icon_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ mp_list_item_data_t *item = (mp_list_item_data_t *)data;
+ MP_CHECK(item);
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ Evas_Object* genlist = evas_object_data_get(obj, "genlist_obj");
+ MP_CHECK(genlist);
+
+ mp_media_info_h track = item->handle;
+ MP_CHECK(track);
+
+ char *uri = NULL;
+ char *uid = NULL;
+ mp_media_info_get_file_path(track, &uri);
+ mp_media_info_get_media_id(track, &uid);
+
+ mp_common_play_track_list_with_song_uid(item, genlist, uid, uri);
+}
+
+static void _mp_track_list_recently_added_thumbpath_clicked_cb(void *data,
+ Evas_Object * obj, const char *emission, const char *source)
+{
+ startfunc;
+ mp_track_type_e type = MP_TRACK_BY_ADDED_TIME;
+ char *name = g_strdup(STR_MP_RECENTLY_ADDED);
+ MpViewMgr_t *view_manager = mp_view_mgr_get_view_manager();
+ MpPlaylistDetailView_t *view_plst_detail = mp_playlist_detail_view_create(view_manager->navi, type, name, mp_media_info_get_auto_playlist_id_by_name(name));
+ mp_view_mgr_push_view(view_manager, (MpView_t *)view_plst_detail, NULL);
+
+ mp_view_update_options((MpView_t *)view_plst_detail);
+ mp_view_set_title((MpView_t *)view_plst_detail, name);
+}
+
+char *_mp_track_list_recently_added_text_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h svc_handle = (mp_media_list_h) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpTrackList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+
+ int count = (list->track_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->track_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *title = NULL;
+ char *artist = NULL;
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d", "elm.text.main.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ mp_media_info_get_title(item, &title);
+ if (!title || !strlen(title)) {
+ title = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+ }
+ return g_strdup(title);
+ }
+ part_name[0] = '\0';
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d", "elm.text.sub.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ mp_media_info_get_artist(item, &artist);
+ if (!artist || !strlen(artist)) {
+ artist = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+ }
+ return g_strdup(artist);
+ }
+ }
+ return NULL;
+}
+
+Evas_Object *_mp_track_list_recently_added_content_get(void *data, Evas_Object * obj, const char *part)
+{
+ mp_media_list_h svc_handle = (mp_media_list_h) data;
+ MP_CHECK_NULL(svc_handle);
+
+ MpTrackList_t *list = evas_object_data_get(obj, "list_data");
+ MP_CHECK_NULL(list);
+ int count = (list->track_count < RECENTLY_ADDED_TRACKS_MAX_COUNT) ? list->track_count : RECENTLY_ADDED_TRACKS_MAX_COUNT;
+ for (int index = 0; index < count; index++) {
+ mp_media_info_h item = NULL;
+ char *thumb_path = NULL;
+ char part_name[RECENTLY_ADDED_PART_NAME_MAX_SIZE] = {0, };
+
+ item = mp_media_info_list_nth_item(svc_handle, index);
+ if (!item) {
+ DEBUG_TRACE
+ ("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+ return NULL;
+ }
+ mp_media_info_get_thumbnail_path(item, &thumb_path);
+ if (!thumb_path) {
+ char default_thumbnail[1024] = { 0 };
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(default_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", DEFAULT_THUMBNAIL);
+ free(shared_path);
+ thumb_path = g_strdup(default_thumbnail);
+ }
+
+ mp_list_item_data_t *item_data = calloc(1, sizeof(mp_list_item_data_t));
+ MP_CHECK_NULL(item_data);
+ item_data->handle = item;
+ item_data->index = index;
+ item_data->group_type = MP_GROUP_NONE;
+ if (g_item_data) {
+ free(g_item_data);
+ }
+ g_item_data = item_data;
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d",
+ "elm.swallow.", (index+1));
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, thumb_path, NULL);
+ elm_image_fill_outside_set(image, true);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.1",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_track_list_recently_added_thumbpath_clicked_cb, NULL);
+ return content;
+ }
+ part_name[0] = '\0';
+ snprintf(part_name, RECENTLY_ADDED_PART_NAME_MAX_SIZE, "%s%d%s", "elm.swallow.", (index+1), ".play");
+ if (!g_strcmp0(part, part_name)) {
+ Evas_Object *content = NULL;
+ content = elm_layout_add(obj);
+ evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ char play_thumbnail[1024] = { 0 };
+ char *shared_path = app_get_shared_resource_path();
+ snprintf(play_thumbnail, 1024, "%s%s/%s", shared_path,
+ "shared_images", RECENTLY_ADDED_PLAY_ICON);
+ free(shared_path);
+ Evas_Object* image = elm_image_add(obj);
+ elm_image_file_set(image, play_thumbnail, NULL);
+ elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(image);
+ elm_layout_theme_set(content, "layout", "list/B/music.type.3",
+ "default");
+ elm_layout_content_set(content, "elm.swallow.content", image);
+ evas_object_data_set(content, "genlist_obj", list->genlist);
+ elm_object_signal_callback_add(content, "mouse,clicked,1", "*",
+ _mp_track_list_recently_added_play_icon_clicked_cb, item_data);
+ return content;
+ }
+ }
+ return NULL;
+}
+
+static Elm_Object_Item *_mp_track_list_append_group_index(void *thiz)
+{
+ startfunc;
+ MpTrackList_t *list = thiz;
+ MP_CHECK_NULL(list);
+ MP_CHECK_NULL(list->recently_added_genlist);
+
+ Elm_Object_Item *group_index = NULL;
+ mp_list_item_data_t *item_data =
+ mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK_NULL(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_group_index_recently_added, item_data,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ group_index = item_data->it;
+ elm_genlist_item_select_mode_set(group_index,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ return group_index;
+}
+
+static void _mp_track_list_append_recently_added(void *thiz, mp_media_list_h svc_handle)
+{
+ startfunc;
+ MpTrackList_t *list = thiz;
+ MP_CHECK(list);
+ MP_CHECK(list->recently_added_genlist);
+ mp_list_item_data_t *item_data;
+
+ item_data = mp_list_item_data_create(MP_LIST_ITEM_TYPE_GROUP_TITLE);
+ MP_CHECK(item_data);
+ item_data->it =
+ elm_genlist_item_append(list->recently_added_genlist, list->itc_genlist_recently_added, svc_handle,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+}
+
+static void mp_track_list_show_recently_added_tracks(void *thiz)
+{
+ startfunc;
+ MP_CHECK(thiz);
+ MpTrackList_t *list = thiz;
+ int count = 0, res = 0;
+
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ if (!list->itc_group_index_recently_added) {
+ list->itc_group_index_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_group_index_recently_added);
+ list->itc_group_index_recently_added->item_style = "group_index";
+ list->itc_group_index_recently_added->func.text_get =
+ _mp_track_list_group_index_recently_added_text_get;
+ list->itc_group_index_recently_added->func.content_get =
+ NULL;
+ list->itc_group_index_recently_added->func.del =
+ _mp_track_list_recently_added_del_cb;
+ }
+
+ _mp_track_list_append_group_index(list);
+
+ if (!list->itc_genlist_recently_added) {
+ list->itc_genlist_recently_added = elm_genlist_item_class_new();
+ MP_CHECK(list->itc_genlist_recently_added);
+ list->itc_genlist_recently_added->item_style = "recently_added";
+ list->itc_genlist_recently_added->func.text_get =
+ _mp_track_list_recently_added_text_get;
+ list->itc_genlist_recently_added->func.content_get =
+ _mp_track_list_recently_added_content_get;
+ list->itc_genlist_recently_added->func.del =
+ _mp_track_list_recently_added_del_cb;
+ }
+
+ mp_media_list_h svc_handle = NULL;
+
+ list->track_type = MP_TRACK_BY_ADDED_TIME;
+ list->playlist_id = 0;
+
+ PROFILE_IN("mp_media_info_list_count");
+ res =
+ mp_media_info_list_count(list->track_type, list->type_str,
+ list->type_str2, list->filter_str,
+ list->playlist_id, &count);
+ PROFILE_OUT("mp_media_info_list_count");
+ MP_CHECK(res == 0);
+ list->track_count = count;
+
+ PROFILE_IN("mp_media_info_list_create");
+ mp_media_info_list_create(&svc_handle, list->track_type,
+ list->type_str, list->type_str2,
+ list->filter_str, list->playlist_id, 0,
+ count);
+ PROFILE_OUT("mp_media_info_list_create");
+ MP_CHECK(svc_handle);
+
+ PROFILE_IN("_mp_track_list_append_recently_added");
+ _mp_track_list_append_recently_added(list, svc_handle);
+ PROFILE_OUT("_mp_track_list_append_recently_added");
+}
+
static void _mp_track_list_load_list(void *thiz, int count)
{
startfunc;
MpTrackList_t *list = thiz;
MP_CHECK(list);
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
/*media-svc related */
mp_media_list_h svc_handle = NULL;
ecore_timer_add(0.4, _mp_track_list_lazy_load, list);
}
-
/*get data from DB */
PROFILE_IN("mp_media_info_list_create");
mp_media_info_list_create(&svc_handle, list->track_type,
- list->type_str, list->type_str2,
- list->filter_str, list->playlist_id, 0,
- count);
+ list->type_str, list->type_str2,
+ list->filter_str, list->playlist_id, 0,
+ count);
PROFILE_OUT("mp_media_info_list_create");
if (!list->edit_mode) {
+ if (ad->recentlyAddedGridView) {
+ mp_track_list_show_recently_added_tracks(list);
+ ad->recentlyAddedGridView = false;
+ }
mp_track_list_show_shuffle(list, true);
}
list->itc_shuffle = NULL;
}
+ if (list->itc_group_index_recently_added) {
+ elm_genlist_item_class_free(list->itc_group_index_recently_added);
+ list->itc_group_index_recently_added = NULL;
+ }
+
IF_FREE(list->type_str);
IF_FREE(list->type_str2);
IF_FREE(list->filter_str);
- elm_genlist_item_class_free(list->itc);
-
_mp_track_list_albumart_index_list_destroy(list);
mp_list_free_checked_path_list(list->checked_path_list);
static void _mp_track_list_update(void *thiz)
{
startfunc;
+
int count = 0, res = 0;
MpTrackList_t *list = thiz;
MP_CHECK(list);
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
PROFILE_IN("mp_media_info_list_count");
res =
- mp_media_info_list_count(list->track_type, list->type_str,
- list->type_str2, list->filter_str,
- list->playlist_id, &count);
+ mp_media_info_list_count(list->track_type, list->type_str,
+ list->type_str2, list->filter_str,
+ list->playlist_id, &count);
PROFILE_OUT("mp_media_info_list_count");
MP_CHECK(res == 0);
list->track_count = count;
mp_evas_object_del(list->no_content);
mp_evas_object_del(list->genlist);
+
if (count) {
+ // Place Recently Added Grid View only when there are some items in genlist
+ if (ad->recentlyAddedGridView) {
+ mp_track_list_initialize_recently_added(list);
+ }
+
/*create new genlist */
PROFILE_IN("elm_genlist_add");
list->genlist = mp_widget_genlist_create(list->box);
if (list->reorderable) {
evas_object_smart_callback_add(list->genlist, "moved",
- mp_list_item_reorder_moved_cb,
- list);
+ mp_list_item_reorder_moved_cb,
+ list);
}
evas_object_smart_callback_add(list->genlist, "scroll,drag,start",
- list->drag_start_cb, list);
+ list->drag_start_cb, list);
evas_object_smart_callback_add(list->genlist, "scroll,drag,stop",
- list->drag_stop_cb, list);
+ list->drag_stop_cb, list);
evas_object_smart_callback_add(list->genlist, "highlighted",
- _mp_track_list_item_highlighted,
- list);
+ _mp_track_list_item_highlighted,
+ list);
evas_object_smart_callback_add(list->genlist, "unhighlighted",
- _mp_track_list_item_unhighlighted,
- list);
+ _mp_track_list_item_unhighlighted,
+ list);
PROFILE_OUT("elm_genlist_add");
/* load list */