This patch resolves JIRA TIZENIOT-1525 and creates initial version of selector view 96/237796/2 submit/tizen/20200710.142653
authorJagrat Patidar <j1.patidar@samsung.com>
Sat, 4 Jul 2020 08:32:24 +0000 (14:02 +0530)
committerJagrat Patidar <j1.patidar@samsung.com>
Fri, 10 Jul 2020 14:16:41 +0000 (19:46 +0530)
Change-Id: Ifc7ffc8c10d3f98191bf6a77c036fbaa36cc7745

12 files changed:
images/music_player/mini_controller/btn_controller_close.png
res/edje/mp-list.edc
res/edje/mp-minicontroller.edc
res/edje/mp-view.edc
src/common/mp-common.c
src/common/mp-widget.c
src/view/mp-add-track-view.c
src/view/mp-edit-view.c
src/widget/mp-album-list.c
src/widget/mp-artist-list.c
src/widget/mp-minicontroller.c
src/widget/mp-track-list.c

index bae96ee5bebe6e4503264924a3f56ce83b827699..ae9a4dcee479b7e048360c92006023db24bb0f60 100755 (executable)
Binary files a/images/music_player/mini_controller/btn_controller_close.png and b/images/music_player/mini_controller/btn_controller_close.png differ
index 8055941b3530d4304443524bd05cfe452272c2c1..c066910c55f31497dc94ea93f24f620d9404af11 100755 (executable)
@@ -121,7 +121,12 @@ group {
                        description {
                                state: "edit" 0.0;
                                rel1 { relative: 1.0 0.0; to: "padding.left";}
-                               rel2 { relative: 0.0 1.0; to: "padding.right"; }
+                               rel2 { relative: 0.0 576/640; to: "padding.right"; }
+                       }
+                       description {
+                               state: "full" 0.0;
+                               rel1 { relative: 1.0 0.0; to: "padding.left";}
+                               rel2 { relative: 0.0 584/640; to: "padding.right"; }
                        }
                        description {
                                state: "fastscroll.visible" 0.0;
@@ -182,6 +187,12 @@ group {
                        source: "edit_source";
                        action: STATE_SET "edit" 0.0;
                        target: "track_list_content";
+        }
+               program { name: "full_view";
+                       signal: "full_signal";
+                       source: "full_source";
+                       action: STATE_SET "full" 0.0;
+                       target: "track_list_content";
         }
        }
 }
index b9cf8a982ba4629ac90ff7114650a67c8791f99a..40887566a56ea925d4366019dce76ad25b057029 100755 (executable)
 #define LEFT_PADDING 12
 #define RIGHT_PADDING 4
 #define BOTTOM_PADDING 6
-#define ALBUM_ART_SIZE 120 120
-#define BUTTON_SIZE_MIN_MAX    80 80
+#define ALBUM_ART_SIZE 64 64
+#define BUTTON_SIZE_MIN_MAX    21 24
+#define PLAY_BUTTON_SIZE_MIN_MAX 24 32
+#define PAUSE_BUTTON_SIZE_MIN_MAX 18 32
 #define BIG_BTN_SIZE_MIN_MAX 80 80
 #define BUTTON_EXPAND_OFFSET 0
-#define BUTTON_CLOSE_SIZE_MAX 30 30
+#define BUTTON_CLOSE_SIZE_MAX 15 15
 #define PLAY_BTN_SIZE_MIN_MAX 80 80
-#define FF_BTN_SIZE_MIN_MAX 80 80
+#define FF_BTN_SIZE_MIN_MAX 21 24
 
 
 #define MC_BG                                          30 28 28 0
@@ -114,16 +116,13 @@ part { name: __name;\
                        max: __btn_min_max;\
                        image.normal: __image;\
                        fixed: 1 1;\
-                       align: 0.5 0.5;\
-                       color: 41 215 255 255;\
+                       align: 0.5 0.0;\
                }\
                description { state: "pressed" 0.0;\
                        inherit: "default" 0.0;\
-                       color: 41 215 255 255;\
                }\
                description { state: "focus" 0.0;\
                        inherit: "default" 0.0;\
-                       color: 6 119 194 255;\
                }\
                description { state: "hide" 0.0;\
                        inherit: "default" 0.0;\
@@ -138,18 +137,16 @@ part { name: __name;\
                scale: 1;\
                mouse_events: 1;\
                description { state: "default" 0.0;\
-                       rel1 { relative: 0.5 0.5; to: __to; }\
-                       rel2 { relative: 0.5 0.5; to: __to; }\
+                       rel1 { relative: 0.0 0.0; to: __to; }\
+                       rel2 { relative: 1 1; to: __to; }\
                        min: __btn_min_max;\
                        max: __btn_min_max;\
                        image.normal: __image;\
                        fixed: 1 1;\
-                       align: 0.5 0.5;\
-                       color: __normal_code_red_component __normal_code_green_component __normal_code_blue_component __normal_code_alpha_component;\
+                       align: 0.5 0.0;\
                }\
                description { state: "pressed" 0.0;\
                        inherit: "default" 0.0;\
-                       color: __press_code_red_component __press_code_green_component __press_code_blue_component __press_code_alpha_component;\
                }\
                description { state: "hide" 0.0;\
                        inherit: "default" 0.0;\
@@ -458,11 +455,12 @@ group {
                        mouse_events: 0;
                        description {
                                state: "default" 0.0;
-                               min : 0 MINI_H_PORT;
-                               fixed: 1 1;
+                               min : 1200 112;
+                               max : 1200 112;
+                               //fixed: 1 1;
                                rel1{ relative : 0 0;}
                                rel2{ relative : 1 1;}
-                               color: MC_BG;
+                               color: 0 0 0 0;
                        }
                }
 
@@ -564,8 +562,8 @@ group {
                        scale: 1;
                        mouse_events: 0;
                        description { state: "default" 0.0;
-                               rel1 { relative: 1.0 1.0; to_x: "padding.left"; to_y: "padding_for_albumart.top"; }
-                               rel2 { relative: 1.0 0.0; to_x: "padding.left"; to_y: "padding_for_albumart.bottom"; }
+                               rel1 { relative: 40/1200 24/112; to: "bg"; }
+                               rel2 { relative: 104/1200 88/112; to: "bg"; }
                                min: ALBUM_ART_SIZE;
                                max: ALBUM_ART_SIZE;
                                fixed: 1 1;
@@ -617,36 +615,49 @@ group {
                        mouse_events: 1;
                        scale: 1;
                        description { state: "default" 0.0;
-                          rel1 { relative: 0.0 1.0; to_x: "right_area"; to_y: "padding.top"; offset: 38 0;}
-                          rel2 { relative: 0.83 1.0; to_x: "right_area"; to_y: "padding.top";}
-                          min: 143 17;
-                          fixed: 1 1;
-                          align: 0.5 0.0;
+                               rel1 { relative: 124/1200 32/112; to: "bg"; }
+                               rel2 { relative: 445/1200 58/112; to: "bg"; }
+                               min: 321 26;
+                               max: 321 26;
+                               fixed: 1 1;
+                               align: 0.0 0.5;
+                       }
+               }
+               part { name: "artist";          // artist
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 124/1200 58.5/112; to: "bg"; }
+                               rel2 { relative: 445/1200 80.5/112; to: "bg"; }
+                               min: 321 22;
+                               max: 321 22;
+                               fixed: 1 1;
+                               align: 0.0 0.5;
                        }
                }
-
                part { name: "close_btn_area";
                        type: RECT;
                        scale: 1;
                        mouse_events: 0;
                        description { state: "default" 0.0;
-                               rel1 { relative: 0.0 1.0; to_x: "padding.right"; to_y: "elm.text";offset: -25 1;}
-                               rel2 { relative: 0.0 0.0; to_x: "padding.right"; to_y: "elm.text"; offset: -25 1;}
+                               rel1 { relative: 1164.5/1200 20.5/112; to: "bg"; }
+                               rel2 { relative: 1179.5/1200 35.5/112; to: "bg"; }
                                min: BUTTON_CLOSE_SIZE_MAX;
-                max: BUTTON_CLOSE_SIZE_MAX;
+                               max: BUTTON_CLOSE_SIZE_MAX;
                                color: 255 0 0 0;
                                fixed: 1 1;
                        }
                }
-               MC_IMAGE_PART("close_btn","close_btn_area",MC_MUSIC_CLOSE_BTN,61,185,204,255,61,185,204,255,BUTTON_CLOSE_SIZE_MAX)
+               MC_IMAGE_PART("close_btn","close_btn_area",MC_MUSIC_CLOSE_BTN,0,0,0,0,0,0,0,0,BUTTON_CLOSE_SIZE_MAX)
                 part { name: "close_btn_touch_area";
                         type: RECT;
                         scale: 1;
                         mouse_events: 1;
-                       repeat_events: 1;
+                                         repeat_events: 1;
                         description { state: "default" 0.0;
-                                rel1 { to: "close_btn_area"; offset: -7 -7; }
-                                rel2 { to: "close_btn_area"; offset: 7 7; }
+                                rel1 { to: "close_btn_area"; offset: -5 -5; }
+                                rel2 { to: "close_btn_area"; offset: 5 5; }
                                 color: 0 0 0 0;
                         }
                 }
@@ -663,34 +674,24 @@ group {
                                color: 255 0 0 0;
                        }
                }
-
-               part { name: "button_area";
-                       type: RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               rel1 { relative: 0 1; to: "mid_padding";}
-                               rel2 { relative: 1 0; to_x: "elm.text"; to_y: "padding.bottom"; }
-                                visible: 1;
-                       }
-               }
-
                part { name: "rew_btn_area";
                        type: RECT;
                        scale: 1;
                        mouse_events: 1;
                        description { state: "default" 0.0;
-                               rel1 { relative: 0.0 0.5; to: "button_area"; offset: 10 0;}
-                               rel2 { relative: 0.0 0.5; to: "button_area"; offset: 10 -16;}
-                               min: BUTTON_SIZE_MIN_MAX;
+                               rel1 { relative: 522/1200 44/112; to: "bg";}
+                               rel2 { relative: 543/1200 68/112; to: "bg";}
+                               min: 21 24;
+                               max: 21 24;
                                fixed: 1 1;
                                align: 0.0 0.5;
                                visible: 0;
                        }
                }
 
-               MC_IMAGE_PART("rew_btn_bg","rew_btn_area",MC_MUSIC_SMALL_BTN_BG,0,0,0,0,0,0,0,0,BUTTON_SIZE_MIN_MAX)
-               MC_IMAGE_PART("rew_btn_ef","rew_btn_area",MC_MUSIC_SMALL_BTN_EF,0,0,0,0,0,0,0,0,BUTTON_SIZE_MIN_MAX)
-               MC_IMAGE_PART("rew_btn","rew_btn_area",MC_MUSIC_PREV_BTN,61,185,204,255,34,104,115,255,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("rew_btn_bg","rew_btn_area",MC_MUSIC_PREV_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("rew_btn_ef","rew_btn_area",MC_MUSIC_PREV_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("rew_btn","rew_btn_area",MC_MUSIC_PREV_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
                part { name: "rew_btn_touch_area";
                        type: RECT;
                        scale: 1;
@@ -709,19 +710,19 @@ group {
                        scale: 1;
                        mouse_events: 1;
                        description { state: "default" 0.0;
-                               rel1 { relative: 0.4 0.5; to: "button_area"; offset: 0 0;}
-                               rel2 { relative: 0.4 0.5; to: "button_area"; offset: 0 -16; }
-                               min: BUTTON_SIZE_MIN_MAX;
-                               max: BUTTON_SIZE_MIN_MAX;
+                               rel1 { relative: 588/1200 40/112; to: "bg";}
+                               rel2 { relative: 612/1200 72/112; to: "bg";}
+                               min: PLAY_BUTTON_SIZE_MIN_MAX;
+                               max: PLAY_BUTTON_SIZE_MIN_MAX;
                                fixed: 1 1;
-                               align:0.0 0.5;
+                               align: 0.5 0.5;
                        }
                }
 
-               MC_IMAGE_PART("play_btn_bg","play_pause_btn_area",MC_MUSIC_LAGRE_BTN_BG,61,185,204,255,34,104,115,255,BIG_BTN_SIZE_MIN_MAX)
-               MC_IMAGE_PART_FOCUS("play_btn_ef","play_pause_btn_area",MC_MUSIC_LAGRE_BTN_EF,BIG_BTN_SIZE_MIN_MAX)
-               MC_IMAGE_PART("play_btn","play_pause_btn_area",MC_MUSIC_PLAY_BTN,255,255,255,255,255,255,255,255,PLAY_BTN_SIZE_MIN_MAX)
-               MC_IMAGE_PART("pause_btn","play_pause_btn_area",MC_MUSIC_PAUSE_BTN,255,255,255,255,255,255,255,255,PLAY_BTN_SIZE_MIN_MAX)
+               //MC_IMAGE_PART("play_btn_bg","play_pause_btn_area",MC_MUSIC_PLAY_BTN,61,185,204,255,34,104,115,255,PLAY_BUTTON_SIZE_MIN_MAX)
+               //MC_IMAGE_PART_FOCUS("play_btn_ef","play_pause_btn_area",MC_MUSIC_PLAY_BTN,PLAY_BUTTON_SIZE_MIN_MAX)
+               MC_IMAGE_PART("play_btn","play_pause_btn_area",MC_MUSIC_PLAY_BTN,0,0,0,0,0,0,0,0,PLAY_BUTTON_SIZE_MIN_MAX)
+               MC_IMAGE_PART("pause_btn","play_pause_btn_area",MC_MUSIC_PAUSE_BTN,0,0,0,0,0,0,0,0,PAUSE_BUTTON_SIZE_MIN_MAX)
                part { name: "play_btn_touch_area";
                                type: RECT;
                                scale: 1;
@@ -740,17 +741,17 @@ group {
                        scale: 1;
                        mouse_events: 1;
                        description { state: "default" 0.0;
-                               rel1 { relative:0.8 0.5; to: "button_area";offset: -10 0;}
-                               rel2 { relative:0.8 0.5; to: "button_area";offset: -10 -16;}
+                               rel1 { relative:657/1200 44/112; to: "bg";}
+                               rel2 { relative:678/1200 68/112; to: "bg";}
                                min: FF_BTN_SIZE_MIN_MAX;
                                max: FF_BTN_SIZE_MIN_MAX;
                                fixed: 1 1;
                                align:0.0 0.5;
                        }
                }
-               MC_IMAGE_PART("ff_btn_bg","ff_btn_area",MC_MUSIC_SMALL_BTN_BG,0,0,0,0,0,0,0,0,BUTTON_SIZE_MIN_MAX)
-               MC_IMAGE_PART("ff_btn_ef","ff_btn_area",MC_MUSIC_SMALL_BTN_EF,0,0,0,0,0,0,0,0,BUTTON_SIZE_MIN_MAX)
-               MC_IMAGE_PART("ff_btn","ff_btn_area",MC_MUSIC_NEXT_BTN,61,185,204,255,34,104,115,255,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("ff_btn_bg","ff_btn_area",MC_MUSIC_NEXT_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("ff_btn_ef","ff_btn_area",MC_MUSIC_NEXT_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
+               MC_IMAGE_PART("ff_btn","ff_btn_area",MC_MUSIC_NEXT_BTN,0,0,0,0,0,0,0,0,FF_BTN_SIZE_MIN_MAX)
                part { name: "ff_btn_touch_area";
                                type: RECT;
                                scale: 1;
@@ -763,6 +764,55 @@ group {
                                }
                        }
                MC_FOCUSED_COVER("ff_btn", "ff_btn_area");
+               part { name: "slider_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative:752/1200 40/112; to: "bg";}
+                               rel2 { relative:1120/1200 72/112; to: "bg";}
+                               min: 368 32;
+                               max: 368 32;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "slider_part";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; to: "slider_bg";}
+                               rel2 { relative: 1.0 1.0; to: "slider_bg";}
+                               align: 0.0 0.5;
+                       }
+               }
+               part { name: "current_time";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 752/1200 74/112; to: "bg"; }
+                                rel2 { relative: 797/1200 96/112; to: "bg"; }
+                          min: 45 22;
+                               max: 45 22;
+                          fixed: 1 1;
+                          align: 0.0 0.5;
+                       }
+               }
+               part { name: "total_time";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 1075/1200 74/112; to: "bg"; }
+                                rel2 { relative: 1120/1200 96/112; to: "bg"; }
+                          min: 45 22;
+                               max: 45 22;
+                          fixed: 1 1;
+                          align: 0.0 0.5;
+                       }
+               }
        }
 
        programs {
@@ -799,8 +849,8 @@ group {
                   signal: "mouse,down,1";
                   source: "play_btn_touch_area";
                        script{
-                          set_state(PART:"play_btn_bg", "pressed", 0.0);
-                          set_state(PART:"play_btn_ef", "pressed", 0.0);
+                          //set_state(PART:"play_btn_bg", "pressed", 0.0);
+                          //set_state(PART:"play_btn_ef", "pressed", 0.0);
                   }
                }
 
@@ -808,8 +858,8 @@ group {
                   signal: "mouse,up,1";
                   source: "play_btn_touch_area";
                        script{
-                            set_state(PART:"play_btn_bg", "default", 0.0);
-                            set_state(PART:"play_btn_ef", "default", 0.0);
+                            //set_state(PART:"play_btn_bg", "default", 0.0);
+                            //set_state(PART:"play_btn_ef", "default", 0.0);
                   }
                }
 
@@ -817,8 +867,8 @@ group {
                   signal: "mouse,down,1";
                   source: "rew_btn_touch_area";
                        script{
-                           set_state(PART:"rew_btn_bg", "pressed", 0.0);
-                          set_state(PART:"rew_btn_ef", "pressed", 0.0);
+               //set_state(PART:"rew_btn_bg", "pressed", 0.0);
+                          //set_state(PART:"rew_btn_ef", "pressed", 0.0);
                           set_state(PART:"rew_btn", "pressed", 0.0);
                   }
                }
@@ -827,8 +877,8 @@ group {
                   signal: "mouse,up,1";
                   source: "rew_btn_touch_area";
                        script{
-                            set_state(PART:"rew_btn_bg", "default", 0.0);
-                            set_state(PART:"rew_btn_ef", "default", 0.0);
+                            //set_state(PART:"rew_btn_bg", "default", 0.0);
+                            //set_state(PART:"rew_btn_ef", "default", 0.0);
                             set_state(PART:"rew_btn", "default", 0.0);
                   }
                }
@@ -882,7 +932,7 @@ group {
                   script{
                                set_state(PART:"play_btn", "hide", 0.0);
                                set_state(PART:"pause_btn", "default",0.0);
-                               set_state(PART:"play_btn_ef", "focus", 0.0);
+                               //set_state(PART:"play_btn_ef", "focus", 0.0);
                   }
                }
                program { name: "set_play_icon";
@@ -891,7 +941,7 @@ group {
                   script{
                                set_state(PART:"play_btn", "default", 0.0);
                                set_state(PART:"pause_btn", "hide",0.0);
-                               set_state(PART:"play_btn_ef", "default", 0.0);
+                               //set_state(PART:"play_btn_ef", "default", 0.0);
                   }
                }
                program { name: "set_ff_btn_uppressed";
@@ -907,8 +957,8 @@ group {
                   signal: "rew_btn_unpressed";
                   source: "*";
                   script{
-                               set_state(PART:"rew_btn_bg", "default", 0.0);
-                               set_state(PART:"rew_btn_ef", "default", 0.0);
+                               //set_state(PART:"rew_btn_bg", "default", 0.0);
+                               //set_state(PART:"rew_btn_ef", "default", 0.0);
                                set_state(PART:"rew_btn", "default", 0.0);
                   }
                }
index 338ddc71ab19c966b6939a3c4d44c80886076402..953f1bf9dbe91683b083a87162f61fae8e735102 100755 (executable)
@@ -173,7 +173,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               rel1 { relative: 0.0 0.5; to: "info_text_bar_clip"; }
+                               rel1 { relative: 0.0 0.0; to: "background"; }
                                rel2 { relative: 1.0 1.0; to_y: "now_playing_overlap";}
                        }
                }
index 9c1c46c7cea085bd017784a43625a331ccce7740..e7bf48131bfbf14a93fb4ab175d7d52ab859fcd1 100755 (executable)
@@ -1145,6 +1145,17 @@ void mp_common_show_add_tracks_view(int playlist_id)
        mp_list_view_set_done_btn((MpListView_t *) view, true,
                                                          MP_DONE_ADD_TRACK_TYPE);
 
+       Evas_Object *box = elm_box_add(view_manager->navi);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       elm_box_padding_set(box, ELM_SCALE_SIZE(20), 0);
+
+       elm_box_pack_end(box, ((MpListView_t *) view)->cancel_btn);
+
+       elm_box_pack_end(box, ((MpListView_t *) view)->done_btn);
+
+       /* Title Content */
+       elm_object_item_part_content_set(((MpListView_t *)view)->navi_it, "title_content", box);
+
 }
 #endif
 /*
index d78cac47eac1adb524095e8bb2f8c0acc8db3c18..29bda69d605ca75223c314e3d5f6c4b6e1502785 100755 (executable)
@@ -449,7 +449,7 @@ Evas_Object *mp_widget_create_navi_left_btn(Evas_Object * pParent,
        }
        Evas_Object *pLeftbtn = NULL;
        pLeftbtn = elm_button_add(pParent);
-       elm_object_style_set(pLeftbtn, "naviframe/title_left");
+       elm_object_style_set(pLeftbtn, "textbutton");
        evas_object_smart_callback_add(pLeftbtn, "clicked", pFunc, pUserData);
        mp_util_domain_translatable_text_set(pLeftbtn, STR_MP_NAVI_CANCEL);
 
@@ -458,9 +458,6 @@ Evas_Object *mp_widget_create_navi_left_btn(Evas_Object * pParent,
                return NULL;
        }
 
-       elm_object_item_part_content_set(pNaviItem, "title_left_btn",
-                                                                        pLeftbtn);
-
        evas_object_show(pLeftbtn);
 
        return pLeftbtn;
@@ -489,7 +486,7 @@ Evas_Object *mp_widget_create_navi_right_btn(Evas_Object * pParent,
        Evas_Object *pRightbtn = NULL;
 
        pRightbtn = elm_button_add(pParent);
-       elm_object_style_set(pRightbtn, "naviframe/title_right");
+       elm_object_style_set(pRightbtn, "textbutton");
        evas_object_smart_callback_add(pRightbtn, "clicked", pFunc, pUserData);
        mp_util_domain_translatable_text_set(pRightbtn, STR_MP_NAVI_DONE);
 
@@ -498,9 +495,6 @@ Evas_Object *mp_widget_create_navi_right_btn(Evas_Object * pParent,
                return NULL;
        }
 
-       elm_object_item_part_content_set(pNaviItem, "title_right_btn",
-                                                                        pRightbtn);
-
        evas_object_show(pRightbtn);
 
        return pRightbtn;
index c1ae1b2f52d5c5e03b1d02186792d7a35a240cdf..16bb5feecd4cf4af3da66679e144f5a0f15e7def 100755 (executable)
@@ -355,7 +355,6 @@ int mp_add_track_view_select_tab(MpAddTrackView_t * view,
                                                           -1);
                mp_list_update(view->content_to_show);
                content = ((MpAlbumList_t *) view->content_to_show)->layout;
-               mp_list_view_set_select_all((MpListView_t *) view, FALSE);
                save_btn =
                        elm_object_item_part_content_get(view->navi_it,
                                                                                         "title_right_btn");
@@ -371,7 +370,6 @@ int mp_add_track_view_select_tab(MpAddTrackView_t * view,
                                                                MP_LIST_FUNC_ADD_TRACK, -1);
                mp_list_update(view->content_to_show);
                content = ((MpArtistList_t *) view->content_to_show)->layout;
-               mp_list_view_set_select_all((MpListView_t *) view, FALSE);
                save_btn =
                        elm_object_item_part_content_get(view->navi_it,
                                                                                         "title_right_btn");
@@ -387,7 +385,6 @@ int mp_add_track_view_select_tab(MpAddTrackView_t * view,
                                                           -1);
                mp_list_update(view->content_to_show);
                mp_list_set_edit(view->content_to_show, TRUE);
-               mp_list_view_set_select_all((MpListView_t *) view, TRUE);
                edje_object_signal_emit(_EDJ(view->add_track_view_layout),
                                                                "SHOW_SELECT_ALL_PADDING", "*");
                content = ((MpTrackList_t *) view->content_to_show)->layout;
@@ -407,6 +404,7 @@ int mp_add_track_view_select_tab(MpAddTrackView_t * view,
        view->content_tab = tab;
        elm_object_part_content_set(view->add_track_view_layout,
                                                                "list_content", content);
+    elm_object_signal_emit(content, "full_signal", "full_source");
        evas_object_show(content);
 
        mp_view_update_options((MpView_t *) view);
index 40821e94fb9a85d93c8664f8dd06b3c5db1ed1bb..f7c9376ce2b4f331f46fdc3a40389b39c6449e91 100755 (executable)
@@ -310,8 +310,7 @@ static Eina_Bool _mp_edit_view_back_cb(void *data, Elm_Object_Item * it)
 
        if (view->reorder)
                mp_edit_view_list_item_reorder_update_cb(data, NULL, NULL);
-       else
-               return EINA_FALSE;
+
 
        return EINA_TRUE;
 }
index be8e48a05ea262083ef991c529e97a1f109079c2..f55b4a1fb4605a6609ff6d8925f0a8234307081a 100755 (executable)
@@ -310,11 +310,21 @@ _mp_album_select_cb(void *data, Evas_Object * obj, void *event_info)
                                                                        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);
+
+               Evas_Object *box = elm_box_add(view_manager->navi);
+               elm_box_horizontal_set(box, EINA_TRUE);
+               elm_box_padding_set(box, ELM_SCALE_SIZE(20), 0);
+
+               elm_box_pack_end(box, ((MpListView_t *) view_select_track)->cancel_btn);
+               elm_box_pack_end(box, ((MpListView_t *) view_select_track)->done_btn);
+
+               /* Title Content */
+               elm_object_item_part_content_set(((MpListView_t *)view_select_track)->navi_it, "title_content", box);
+
                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);
+               elm_object_signal_emit(view_select_track->content_to_show->layout, "full_signal", "full_source");
                return;
        }
 
index 01f81e196f3664a1a385d6b6a1f3d603f196771b..fed859b9324efa0146a0797ae8c1512af9cfd85a 100755 (executable)
@@ -356,11 +356,21 @@ _mp_artist_select_cb(void *data, Evas_Object * obj, void *event_info)
                                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);
+
+               Evas_Object *box = elm_box_add(view_manager->navi);
+               elm_box_horizontal_set(box, EINA_TRUE);
+               elm_box_padding_set(box, ELM_SCALE_SIZE(20), 0);
+
+               elm_box_pack_end(box, ((MpListView_t *) view_select_track)->cancel_btn);
+               elm_box_pack_end(box, ((MpListView_t *) view_select_track)->done_btn);
+
+               /* Title Content */
+               elm_object_item_part_content_set(((MpListView_t *)view_select_track)->navi_it, "title_content", box);
+
                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);
+               elm_object_signal_emit(view_select_track->content_to_show->layout, "full_signal", "full_source");
                return;
        }
 
index e3a77818aae3914fea8fa898798fc7c77257b502..c7cdba59b8409ebcd0e58d48cde2003742e1c749 100755 (executable)
@@ -39,6 +39,8 @@
 
 #define BUFFER_MAX             256
 
+#define MINI_CONTROLLER_W 1200
+#define MINI_CONTROLLER_H 112
 
 Evas_Coord xD, yD, xU, yU, xDMove, yDMove;
 
@@ -59,6 +61,221 @@ static void _mp_minicontroller_update_layout(struct appdata *ad,
                                                                                         bool landscape);
 static void _mp_minicontroller_title_set(struct appdata *ad);
 
+
+
+static void _slider_value_set(void *data)
+{
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       double pos = ad->music_pos;
+       double duration = ad->music_length;
+       double value = 0.0;
+       if (duration > 0.0) {
+               value = pos / duration;
+       }
+
+       ERROR_TRACE("wishjox pos :%f, duration: %f, val: %f", pos, duration,
+                               value);
+       elm_slider_value_set(elm_object_part_content_get(ad->minicontroller_layout, "slider_part"), value);
+}
+
+static void _mp_mini_horizontal_playing_update_time(void *data)
+{
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+       MP_CHECK(!ad->is_lcd_off);
+
+       MP_CHECK(elm_object_part_content_get(ad->minicontroller_layout, "slider_part"));
+
+       char play_time[16] = { 0, };
+       char total_time[16] = { 0, };
+
+       double duration = ad->music_length;
+
+       if (duration > 0.) {
+               if (duration > 3600.) {
+                       snprintf(total_time, sizeof(total_time), "%" MUSIC_TIME_FORMAT,
+                                        MUSIC_TIME_ARGS(duration));
+                       snprintf(play_time, sizeof(play_time), "%" MUSIC_TIME_FORMAT,
+                                        MUSIC_TIME_ARGS(ad->music_pos));
+               } else {
+                       snprintf(total_time, sizeof(total_time), "%" PLAY_TIME_FORMAT,
+                                        PLAY_TIME_ARGS(duration));
+                       snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT,
+                                        PLAY_TIME_ARGS(ad->music_pos));
+               }
+       } else {
+               if (ad->current_track_info)
+                       snprintf(total_time, sizeof(total_time), "%" PLAY_TIME_FORMAT,
+                                        PLAY_TIME_ARGS(ad->current_track_info->duration /
+                                                                       1000.));
+               snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT,
+                                PLAY_TIME_ARGS(ad->music_pos));
+       }
+
+       if (g_strcmp0(play_time, elm_object_text_get(elm_object_part_content_get(ad->minicontroller_layout, "current_time")))) {
+               //IF_FREE(wd->play_time);
+               //wd->play_time = g_strdup(play_time);
+
+               char *mcurrent = NULL;
+               char *mtotal = NULL;
+
+               char *title_format = "<align=left><font_size=%d>%s</font_size></align>";
+               char *title_format_right = "<align=right><font_size=%d>%s</font_size></align>";
+
+               mcurrent = g_strdup_printf(title_format, 18, play_time);
+               mtotal = g_strdup_printf(title_format_right, 18, total_time);
+
+               Evas_Object *total_time_label = elm_label_add(ad->minicontroller_layout);
+               elm_object_text_set(total_time_label, mtotal);
+               elm_object_part_content_set(ad->minicontroller_layout, "total_time", total_time_label);
+               evas_object_show(total_time_label);
+
+               Evas_Object *current_time_label = elm_label_add(ad->minicontroller_layout);
+               elm_object_text_set(current_time_label, mcurrent);
+               elm_object_part_content_set(ad->minicontroller_layout, "current_time", current_time_label);
+               evas_object_show(current_time_label);
+
+               _slider_value_set(ad);
+    SAFE_FREE(mcurrent);
+    SAFE_FREE(mtotal);
+       }
+
+}
+
+static Eina_Bool _mp_mini_horizontal_playing_timer_cb(void *data)
+{
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK_FALSE(ad);
+
+       if (!ad->app_is_foreground) {
+               MP_TIMER_FREEZE(ad->timer);
+       }
+
+       if (ad->dragging) {
+               return EINA_TRUE;
+       }
+
+       ad->music_pos = mp_player_mgr_get_position() / 1000.0;
+       _mp_mini_horizontal_playing_update_time(ad);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void
+_mp_mini_horizontal_playing_sliderarea_down_cb(void *data, Evas * e,
+                                                                        Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       Evas_Event_Mouse_Down *ev = event_info;
+       Evas_Object *slider = obj;
+       int w = 0, current = 0, x = 0;
+       double ratio = 0.0;
+
+       MP_TIMER_FREEZE(ad->timer);
+
+       evas_object_geometry_get(slider, &x, NULL, &w, NULL);
+       current = ev->canvas.x - x;
+       if (current < 0) {
+               current = 0;
+       } else if (current > w) {
+               current = w;
+       }
+
+       ratio = (double) current / w;
+       DEBUG_TRACE("canvas.x:%d  x:%d  w:%d", ev->canvas.x, x, w);
+
+       int duration = mp_player_mgr_get_duration();
+       if (duration <= 0) {
+               mp_track_info_t *track_info = ad->current_track_info;
+               if (track_info) {
+                       duration = track_info->duration;
+               }
+       }
+
+       ad->music_length = duration / 1000.;
+
+       ad->music_pos = ratio * ad->music_length;
+
+       ad->dragging = true;
+
+       ERROR_TRACE("wishjox pos :%f, duration: %f, val: %f", ad->music_pos,
+                               ad->music_length, ratio);
+
+       elm_slider_value_set(elm_object_part_content_get(ad->minicontroller_layout, "slider_part"), ratio);
+       _mp_mini_horizontal_playing_update_time(ad);
+       endfunc;
+}
+
+static void mp_mini_horizontal_playing_thaw_timer(struct appdata *ad)
+{
+       Evas_Object *label = elm_object_part_content_get(ad->minicontroller_layout, "elm.text");
+       elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_AUTO);
+       elm_label_slide_go(label);
+
+       if (mp_player_mgr_get_state() == PLAYER_STATE_PLAYING) {
+               MP_TIMER_THAW(ad->timer);
+       }
+}
+
+static void
+_mp_mini_horizontal_playing_sliderarea_up_cb(void *data, Evas * e, Evas_Object * obj,
+                                                                  void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       Evas_Event_Mouse_Down *ev = event_info;
+       Evas_Object *slider = obj;
+       int w = 0, current = 0, x = 0;
+       double ratio = 0.0;
+
+       evas_object_geometry_get(slider, &x, NULL, &w, NULL);
+       current = ev->canvas.x - x;
+
+       DEBUG_TRACE("canvas.x:%d  x:%d  w:%d", ev->canvas.x, x, w);
+       if (current < 0) {
+               current = 0;
+       } else if (current > w) {
+               current = w;
+       }
+
+       ratio = (double) current / w;
+
+       ad->music_pos = ratio * ad->music_length;
+
+       DEBUG_TRACE("ad->music_pos=%lf", ad->music_pos);
+       if (mp_player_mgr_set_position(ad->music_pos * 1000, NULL, NULL)) {
+               mp_mini_horizontal_playing_thaw_timer(ad);
+       }
+
+       ad->dragging = false;
+
+       elm_slider_value_set(slider, ratio);
+       _mp_mini_horizontal_playing_update_time(ad);
+       endfunc;
+}
+
+static void mp_mini_horizontal_playing_update()
+{
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       ad->music_pos = mp_player_mgr_get_position() / 1000.0;
+
+               _slider_value_set(ad);
+
+
+       _mp_mini_horizontal_playing_update_time(ad);
+}
+
+
 static bool _mp_minicontroller_is_long_press()
 {
        bool result = false;
@@ -121,9 +338,9 @@ _minicontroller_action_cb(void *data, Evas_Object * obj,
 {
        struct appdata *ad = (struct appdata *) data;
        mp_retm_if(ad == NULL, "appdata is NULL");
-       //EVENT_TRACE("emission: %s", emission);
        if (emission) {
                if (!g_strcmp0(emission, "close_btn_clicked")) {
+                       MP_TIMER_FREEZE(ad->timer);
                        EVENT_TRACE("CLOSE");
                        if (!mp_util_is_other_player_playing()) {
                                int ret_set = 0;
@@ -135,6 +352,7 @@ _minicontroller_action_cb(void *data, Evas_Object * obj,
                        }
                        elm_exit();
                } else if (!g_strcmp0(emission, "albumart_clicked")) {
+                       MP_TIMER_FREEZE(ad->timer);
                        EVENT_TRACE("albumart");
                        _mp_minicontroller_action_show_player_view(ad);
                        return;
@@ -165,7 +383,7 @@ static Evas_Object *_load_edj(Evas_Object * parent, const char *file,
                }
                evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND,
                                                                                 EVAS_HINT_EXPAND);
-               elm_win_resize_object_add(parent, eo);
+               //elm_win_resize_object_add(parent, eo);
                evas_object_show(eo);
        }
 
@@ -181,6 +399,7 @@ static void _quick_panel_cb(minicontrol_viewer_event_e event_type,
        minicontrol_viewer_event_e event_hide =
                (minicontrol_viewer_event_e) MINICONTROL_EVENT_REQUEST_HIDE;
        if (event_type == event_hide) {
+               MP_TIMER_FREEZE(ad->timer);
                DEBUG_TRACE("CLOSE");
                if (!mp_util_is_other_player_playing()) {
                        int ret_set = 0;
@@ -263,36 +482,9 @@ void mp_minicontroller_update_winmini_size(struct appdata *ad)
        DEBUG_TRACE_FUNC();
        MP_CHECK(ad);
 
-       int angle = ad->quickpanel_angle;
-       int w = 0;
-       if ((elm_config_scale_get() - 1.7) < 0.0001) {
-               MINI_CONTROLLER_WIDTH = 318;
-               MINI_CONTROLLER_WIDTH_LANDSCAPE = 564;
-       } else if ((elm_config_scale_get() - 1.8) < 0.0001) {
-               MINI_CONTROLLER_WIDTH = 267;
-               MINI_CONTROLLER_WIDTH_LANDSCAPE = 444;
-       } else if ((elm_config_scale_get() - 2.4) < 0.0001) {
-               MINI_CONTROLLER_WIDTH = 300;
-               MINI_CONTROLLER_WIDTH_LANDSCAPE = 533;
-       } else if ((elm_config_scale_get() - 2.6) < 0.0001) {
-               MINI_CONTROLLER_WIDTH = 277;
-               MINI_CONTROLLER_WIDTH_LANDSCAPE = 492;
-       } else if ((elm_config_scale_get() - 2.8) < 0.0001) {
-               MINI_CONTROLLER_WIDTH = 257;
-               MINI_CONTROLLER_WIDTH_LANDSCAPE = 457;
-       }
-
-       if (angle == 90 || angle == 270) {
-               w = MINI_CONTROLLER_WIDTH_LANDSCAPE;
-       } else {
-               w = MINI_CONTROLLER_WIDTH;
-       }
-
-       double scale = elm_config_scale_get();
-       DEBUG_TRACE("scale: %f and width: %d and height: %d", scale, w,
-                               MINI_CONTROLLER_HEIGHT);
-       evas_object_resize(ad->win_minicon, w * scale,
-                                          MINI_CONTROLLER_HEIGHT * scale);
+       DEBUG_TRACE("width: %d and height: %d", MINI_CONTROLLER_W,
+                               MINI_CONTROLLER_H);
+       evas_object_resize(ad->win_minicon, MINI_CONTROLLER_W, MINI_CONTROLLER_H);
 
        return;
 }
@@ -592,6 +784,17 @@ _mp_minicontroller_ff_rew_btn_del_cb(void *data, Evas * e,
        mp_play_control_reset_ff_rew();
 }
 
+static void
+_widget_del_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_ecore_timer_del(ad->timer);
+       mp_play_control_reset_ff_rew();
+}
+
 static void
 _mp_minicontroller_update_layout(struct appdata *ad, bool landscape)
 {
@@ -636,6 +839,26 @@ _mp_minicontroller_update_layout(struct appdata *ad, bool landscape)
                        ad->minicon_icon, NULL);
        elm_object_focus_allow_set(ad->minicon_icon, EINA_TRUE);
 
+       /*-------> Slider ---------->*/
+       Evas_Object *slider = elm_slider_add(ad->minicontroller_layout);
+       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_slider_value_set(slider, 0.0);
+       elm_object_part_content_set(ad->minicontroller_layout, "slider_part", slider);
+       evas_object_propagate_events_set(slider, EINA_FALSE);
+       evas_object_show(slider);
+
+       evas_object_event_callback_add(slider, EVAS_CALLBACK_MOUSE_DOWN,
+                                                                  _mp_mini_horizontal_playing_sliderarea_down_cb,
+                                                                  ad);
+       evas_object_event_callback_add(slider, EVAS_CALLBACK_MOUSE_UP,
+                                                                  _mp_mini_horizontal_playing_sliderarea_up_cb, ad);
+
+       ad->timer = ecore_timer_add(0.25, _mp_mini_horizontal_playing_timer_cb, ad);
+       MP_TIMER_FREEZE(ad->timer);
+       evas_object_event_callback_add(ad->minicontroller_layout, EVAS_CALLBACK_FREE,
+                                                                  _widget_del_cb, ad);
+
        /*-------> REW button ------->*/
        Evas_Object *rew_focus_btn = elm_button_add(ad->minicontroller_layout);
        elm_object_style_set(rew_focus_btn, "focus");
@@ -704,6 +927,8 @@ static void _mp_minicontroller_title_set(struct appdata *ad)
 
        Evas_Object *label =
                elm_object_part_content_get(ad->minicontroller_layout, "elm.text");
+       Evas_Object *artist_label =
+               elm_object_part_content_get(ad->minicontroller_layout, "artist");
 
        mp_track_info_t *current_item = ad->current_track_info;
        MP_CHECK(current_item);
@@ -717,15 +942,18 @@ static void _mp_minicontroller_title_set(struct appdata *ad)
        char *markup_artist = elm_entry_utf8_to_markup(current_item->artist);
 
        char *title_format =
-               "<align=left><font_size=%d><color=#%02x%02x%02x%02x>%s - </color></font_size><font_size=%d><color=#%02x%02x%02x%02x>%s</color></font_size></align>";
+               "<align=left><font_size=%d><color=#%02x%02x%02x%02x>%s</color></align>";
        char *title = NULL;
+       char *artist = NULL;
        if ((markup_title == NULL || strlen(markup_title) == 0)
                        && (markup_artist == NULL || strlen(markup_artist) == 0)) {
                title = NULL;
+               artist = NULL;
        } else {
                title =
-                               g_strdup_printf(title_format, 24, r, g, b, a, markup_title, 24,
-                                               r, g, b, a, markup_artist);
+                               g_strdup_printf(title_format, 22, r, g, b, a, markup_title);
+               artist =
+                               g_strdup_printf(title_format, 18, r, g, b, a, markup_artist);
        }
 
        if (!label) {
@@ -738,19 +966,31 @@ static void _mp_minicontroller_title_set(struct appdata *ad)
                elm_object_text_set(label, title);
        }
 
+       if (!artist_label) {
+               artist_label =
+                               mp_widget_slide_title_create(ad->minicontroller_layout,
+                                               "slide_roll", artist);
+               elm_object_part_content_set(ad->minicontroller_layout, "artist",
+                               artist_label);
+       } else {
+               elm_object_text_set(artist_label, artist);
+       }
+
        elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_AUTO);
        elm_label_slide_go(label);
+       elm_label_slide_mode_set(artist_label, ELM_LABEL_SLIDE_MODE_AUTO);
+       elm_label_slide_go(artist_label);
 
        SAFE_FREE(title);
+       SAFE_FREE(artist);
        SAFE_FREE(markup_title);
        SAFE_FREE(markup_artist);
        evas_object_show(label);
-
+       evas_object_show(artist_label);
 }
 
 void mp_minicontroller_update(struct appdata *ad, bool with_title)
 {
-
        DEBUG_TRACE();
        mp_retm_if(ad == NULL, "appdata is NULL");
        MP_CHECK(ad->win_minicon);
@@ -779,6 +1019,8 @@ void mp_minicontroller_update(struct appdata *ad, bool with_title)
                        _mp_minicontroller_title_set(ad);
                }
 
+               mp_mini_horizontal_playing_update();
+               MP_TIMER_THAW(ad->timer);
                evas_object_show(ad->minicontroller_layout);
        }
 }
@@ -842,8 +1084,7 @@ void mp_minicontroller_rotate(struct appdata *ad, int angle)
        elm_object_signal_emit(ad->minicontroller_layout, signal, "c_source");
 
        double scale = elm_config_scale_get();
-       evas_object_resize(ad->win_minicon, w * scale,
-                                          MINI_CONTROLLER_HEIGHT * scale);
+       evas_object_resize(ad->win_minicon, MINI_CONTROLLER_W, MINI_CONTROLLER_H);
        _mp_minicontroller_update_layout(ad, landscape);
        mp_minicontroller_update(ad, true);
 }
index 162cda7290ee87254eea702d04677446df44c620..85c576bdfd5738a95b1102cb1b1d6ec2a3d63f35 100755 (executable)
@@ -32,6 +32,9 @@
 
 #define INITIAL_LOAD_COUNT 200
 #define ALBUMART_INDEX_SIZE            (720  * elm_config_scale_get())
+#define BOX_PADDING 20
+#define BOX_WIDTH_HINT 100
+#define BOX_HEIGHT_HINT 72
 
 static mp_list_item_data_t* g_item_data = NULL;
 
@@ -206,7 +209,7 @@ Evas_Object *_mp_track_list_icon_get(void *data, Evas_Object * obj,
                }
        }
 
-       if (!strcmp(part, "elm.icon")) {
+       if (!list->edit_mode && !strcmp(part, "elm.icon")) {
                char *thumbpath = NULL;
                Evas_Object *icon;
 
@@ -251,8 +254,27 @@ Evas_Object *_mp_track_list_icon_get(void *data, Evas_Object * obj,
 
        if (list->edit_mode) {
                // if edit mode
-               if (!strcmp(part, "elm.end")) {
-                       // swallow checkbox or radio button
+               if (!strcmp(part, "elm.icon")) {
+                       Evas_Object *box = elm_box_add(obj);
+                       elm_box_horizontal_set(box, EINA_TRUE);
+                       elm_box_padding_set(box, BOX_PADDING, 0);
+                       evas_object_size_hint_min_set(box, BOX_WIDTH_HINT, BOX_HEIGHT_HINT);
+
+                       char *thumbpath = NULL;
+                       Evas_Object *icon = NULL;
+                       PROFILE_IN("_mp_track_list_icon_get");
+                       mp_media_info_get_thumbnail_path(track, &thumbpath);
+
+                       if (thumbpath) {
+                               icon =
+                                       mp_util_create_lazy_update_thumb_icon(obj, thumbpath,
+                                               MP_LIST_ICON_SIZE,
+                                               MP_LIST_ICON_SIZE);
+                               elm_layout_theme_set(content, "layout", "list/B/music.type.1",
+                                                        "default");
+                               elm_layout_content_set(content, "elm.swallow.content", icon);
+                               PROFILE_OUT("_mp_track_list_icon_get");
+                       }
                        Evas_Object *check = NULL;
                        check = elm_check_add(obj);
                        elm_object_style_set(check, "default");
@@ -261,8 +283,16 @@ Evas_Object *_mp_track_list_icon_get(void *data, Evas_Object * obj,
                                                                                   mp_common_view_check_changed_cb,
                                                                                   item);
                        elm_check_state_pointer_set(check, &item->checked);
+                       elm_box_pack_end(box, check);
+                       if (content)
+                               elm_box_pack_end(box, content);
+
+                       evas_object_show(check);
+                       if (content)
+                               evas_object_show(content);
 
-                       return check;
+                       evas_object_show(box);
+                       return box;
                }
        }
 
@@ -1497,12 +1527,18 @@ static void _mp_track_list_update(void *thiz)
                }
 
                if (list->reorderable) {
+                       elm_object_text_set(list->tracks_count_label, "");
                        evas_object_smart_callback_add(list->genlist, "moved",
                                        mp_list_item_reorder_moved_cb,
                                        list);
-               }
+               } else {
+                       evas_object_smart_callback_add(list->genlist, "realized", __gl_realized_cb, list);
+                       elm_object_part_content_set(list->track_control_layout, "shuffle_part_swallow", list->shuffle_btn);
+                       elm_object_part_content_set(list->track_control_layout, "play_all_part_swallow", list->playall_btn);
+                       evas_object_smart_callback_add(list->shuffle_btn, "clicked", _mp_track_list_shuffle_cb, list);
+                       evas_object_smart_callback_add(list->playall_btn, "clicked", _mp_track_list_play_all_cb, list);
+   }
 
-               evas_object_smart_callback_add(list->genlist, "realized", __gl_realized_cb, list);
                evas_object_smart_callback_add(list->genlist, "scroll,drag,start",
                                list->drag_start_cb, list);
                evas_object_smart_callback_add(list->genlist, "scroll,drag,stop",
@@ -1521,11 +1557,6 @@ static void _mp_track_list_update(void *thiz)
                list->show_fastscroll(list);
                PROFILE_OUT("_mp_track_list_load_list");
 
-               elm_object_part_content_set(list->track_control_layout, "shuffle_part_swallow", list->shuffle_btn);
-               elm_object_part_content_set(list->track_control_layout, "play_all_part_swallow", list->playall_btn);
-               evas_object_smart_callback_add(list->shuffle_btn, "clicked", _mp_track_list_shuffle_cb, list);
-               evas_object_smart_callback_add(list->playall_btn, "clicked", _mp_track_list_play_all_cb, list);
-  
 
                if (!mp_list_get_editable_count(thiz, mp_list_get_edit_type(thiz))) {
                        goto NoContents;