/** * @file lv_demo_music.c * */ /********************* * INCLUDES *********************/ #include "lv_demo_music.h" #if LV_USE_DEMO_MUSIC #include "lv_demo_music_main.h" #include "lv_demo_music_list.h" /********************* * DEFINES *********************/ /********************** * TYPEDEFS **********************/ /********************** * STATIC PROTOTYPES **********************/ #if LV_DEMO_MUSIC_AUTO_PLAY static void auto_step_cb(lv_timer_t * timer); #endif /********************** * STATIC VARIABLES **********************/ static lv_obj_t * ctrl; static lv_obj_t * list; static const char * title_list[] = { "Waiting for true love", "Need a Better Future", "Vibrations", "Why now?", "Never Look Back", "It happened Yesterday", "Feeling so High", "Go Deeper", "Find You There", "Until the End", "Unknown", "Unknown", "Unknown", "Unknown", }; static const char * artist_list[] = { "The John Smith Band", "My True Name", "Robotics", "John Smith", "My True Name", "Robotics", "Robotics", "Unknown artist", "Unknown artist", "Unknown artist", "Unknown artist", "Unknown artist", "Unknown artist", "Unknown artist", "Unknown artist", }; static const char * genre_list[] = { "Rock - 1997", "Drum'n bass - 2016", "Psy trance - 2020", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", "Metal - 2015", }; static const uint32_t time_list[] = { 1 * 60 + 14, 2 * 60 + 26, 1 * 60 + 54, 2 * 60 + 24, 2 * 60 + 37, 3 * 60 + 33, 1 * 60 + 56, 3 * 60 + 31, 2 * 60 + 20, 2 * 60 + 19, 2 * 60 + 20, 2 * 60 + 19, 2 * 60 + 20, 2 * 60 + 19, }; /********************** * MACROS **********************/ /********************** * GLOBAL FUNCTIONS **********************/ void lv_demo_music(void) { lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x343247), 0); list = _lv_demo_music_list_create(lv_scr_act()); ctrl = _lv_demo_music_main_create(lv_scr_act()); #if LV_DEMO_MUSIC_AUTO_PLAY lv_timer_create(auto_step_cb, 1000, NULL); #endif } const char * _lv_demo_music_get_title(uint32_t track_id) { if(track_id >= sizeof(title_list) / sizeof(title_list[0])) return NULL; return title_list[track_id]; } const char * _lv_demo_music_get_artist(uint32_t track_id) { if(track_id >= sizeof(artist_list) / sizeof(artist_list[0])) return NULL; return artist_list[track_id]; } const char * _lv_demo_music_get_genre(uint32_t track_id) { if(track_id >= sizeof(genre_list) / sizeof(genre_list[0])) return NULL; return genre_list[track_id]; } uint32_t _lv_demo_music_get_track_length(uint32_t track_id) { if(track_id >= sizeof(time_list) / sizeof(time_list[0])) return 0; return time_list[track_id]; } /********************** * STATIC FUNCTIONS **********************/ #if LV_DEMO_MUSIC_AUTO_PLAY static void auto_step_cb(lv_timer_t * t) { LV_UNUSED(t); static uint32_t state = 0; #if LV_DEMO_MUSIC_LARGE const lv_font_t * font_small = &lv_font_montserrat_22; const lv_font_t * font_large = &lv_font_montserrat_32; #else const lv_font_t * font_small = &lv_font_montserrat_12; const lv_font_t * font_large = &lv_font_montserrat_16; #endif switch(state) { case 5: _lv_demo_music_album_next(true); break; case 6: _lv_demo_music_album_next(true); break; case 7: _lv_demo_music_album_next(true); break; case 8: _lv_demo_music_play(0); break; #if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND case 11: lv_obj_scroll_by(ctrl, 0, -LV_VER_RES, LV_ANIM_ON); break; case 13: lv_obj_scroll_by(ctrl, 0, -LV_VER_RES, LV_ANIM_ON); break; #else case 12: lv_obj_scroll_by(ctrl, 0, -LV_VER_RES, LV_ANIM_ON); break; #endif case 15: lv_obj_scroll_by(list, 0, -300, LV_ANIM_ON); break; case 16: lv_obj_scroll_by(list, 0, 300, LV_ANIM_ON); break; case 18: _lv_demo_music_play(1); break; case 19: lv_obj_scroll_by(ctrl, 0, LV_VER_RES, LV_ANIM_ON); break; #if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND case 20: lv_obj_scroll_by(ctrl, 0, LV_VER_RES, LV_ANIM_ON); break; #endif case 30: _lv_demo_music_play(2); break; case 40: { lv_obj_t * bg = lv_layer_top(); lv_obj_set_style_bg_color(bg, lv_color_hex(0x6f8af6), 0); lv_obj_set_style_text_color(bg, lv_color_white(), 0); lv_obj_set_style_bg_opa(bg, LV_OPA_COVER, 0); lv_obj_fade_in(bg, 400, 0); lv_obj_t * dsc = lv_label_create(bg); lv_obj_set_style_text_font(dsc, font_small, 0); lv_label_set_text(dsc, "The average FPS is"); lv_obj_align(dsc, LV_ALIGN_TOP_MID, 0, 90); lv_obj_t * num = lv_label_create(bg); lv_obj_set_style_text_font(num, font_large, 0); #if LV_USE_PERF_MONITOR lv_label_set_text_fmt(num, "%d", lv_refr_get_fps_avg()); #endif lv_obj_align(num, LV_ALIGN_TOP_MID, 0, 120); lv_obj_t * attr = lv_label_create(bg); lv_obj_set_style_text_align(attr, LV_TEXT_ALIGN_CENTER, 0); lv_obj_set_style_text_font(attr, font_small, 0); #if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND lv_label_set_text(attr, "Copyright 2020 LVGL Kft.\nwww.lvgl.io | lvgl@lvgl.io"); #else lv_label_set_text(attr, "Copyright 2020 LVGL Kft. | www.lvgl.io | lvgl@lvgl.io"); #endif lv_obj_align(attr, LV_ALIGN_BOTTOM_MID, 0, -10); break; } case 41: lv_scr_load(lv_obj_create(NULL)); _lv_demo_music_pause(); break; } state++; } #endif /*LV_DEMO_MUSIC_AUTO_PLAY*/ #endif /*LV_USE_DEMO_MUSIC*/