Renamed displayapp/Screens to displayapp/screens
This commit is contained in:
125
src/displayapp/screens/Music.cpp
Normal file
125
src/displayapp/screens/Music.cpp
Normal file
@@ -0,0 +1,125 @@
|
||||
#include <libs/lvgl/lvgl.h>
|
||||
#include "Music.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
||||
{
|
||||
Music* screen = static_cast<Music *>(obj->user_data);
|
||||
screen->OnObjectEvent(obj, event);
|
||||
}
|
||||
|
||||
Music::Music(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::MusicService &music) : Screen(app), musicService(music) {
|
||||
lv_obj_t * label;
|
||||
|
||||
btnVolDown = lv_btn_create(lv_scr_act(), NULL);
|
||||
btnVolDown->user_data = this;
|
||||
lv_obj_set_event_cb(btnVolDown, event_handler);
|
||||
lv_obj_align(btnVolDown, NULL, LV_ALIGN_IN_TOP_LEFT, 10, 10);
|
||||
label = lv_label_create(btnVolDown, NULL);
|
||||
lv_label_set_text(label, "v-");
|
||||
|
||||
btnVolUp = lv_btn_create(lv_scr_act(), NULL);
|
||||
btnVolUp->user_data = this;
|
||||
lv_obj_set_event_cb(btnVolUp, event_handler);
|
||||
lv_obj_align(btnVolUp, NULL, LV_ALIGN_IN_TOP_RIGHT, -10, 10);
|
||||
label = lv_label_create(btnVolUp, NULL);
|
||||
lv_label_set_text(label, "v+");
|
||||
|
||||
btnPrev = lv_btn_create(lv_scr_act(), NULL);
|
||||
btnPrev->user_data = this;
|
||||
lv_obj_set_event_cb(btnPrev, event_handler);
|
||||
lv_obj_set_size(btnPrev, LV_HOR_RES / 4, LV_VER_RES / 4);
|
||||
lv_obj_align(btnPrev, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10,-10);
|
||||
label = lv_label_create(btnPrev, NULL);
|
||||
lv_label_set_text(label, "<<");
|
||||
|
||||
btnPlayPause = lv_btn_create(lv_scr_act(), NULL);
|
||||
btnPlayPause->user_data = this;
|
||||
lv_obj_set_event_cb(btnPlayPause, event_handler);
|
||||
lv_obj_set_size(btnPlayPause, LV_HOR_RES / 4, LV_VER_RES / 4);
|
||||
lv_obj_align(btnPlayPause, NULL, LV_ALIGN_IN_BOTTOM_MID, 0,-10);
|
||||
txtPlayPause = lv_label_create(btnPlayPause, NULL);
|
||||
lv_label_set_text(txtPlayPause, ">");
|
||||
|
||||
btnNext = lv_btn_create(lv_scr_act(), NULL);
|
||||
btnNext->user_data = this;
|
||||
lv_obj_set_event_cb(btnNext, event_handler);
|
||||
lv_obj_set_size(btnNext, LV_HOR_RES / 4, LV_VER_RES / 4);
|
||||
lv_obj_align(btnNext, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10,-10);
|
||||
label = lv_label_create(btnNext, NULL);
|
||||
lv_label_set_text(label, ">>");
|
||||
|
||||
txtArtist = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_long_mode(txtArtist, LV_LABEL_LONG_SROLL);
|
||||
lv_obj_align(txtArtist, NULL, LV_ALIGN_IN_LEFT_MID, 0,-20);
|
||||
lv_label_set_text(txtArtist, "Artist Name");
|
||||
lv_label_set_align(txtArtist, LV_LABEL_ALIGN_CENTER);
|
||||
lv_obj_set_width(txtArtist, LV_HOR_RES);
|
||||
|
||||
txtTrack = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_long_mode(txtTrack, LV_LABEL_LONG_DOT);
|
||||
lv_obj_align(txtTrack, NULL, LV_ALIGN_IN_LEFT_MID, 0,20);
|
||||
lv_label_set_text(txtTrack, "This is a very long track name");
|
||||
lv_label_set_align(txtTrack, LV_LABEL_ALIGN_CENTER);
|
||||
lv_obj_set_width(txtTrack, LV_HOR_RES);
|
||||
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_OPEN);
|
||||
}
|
||||
|
||||
Music::~Music() {
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
bool Music::OnButtonPushed() {
|
||||
running = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Music::Refresh() {
|
||||
|
||||
if (m_artist != musicService.artist()) {
|
||||
m_artist = musicService.artist();
|
||||
lv_label_set_text(txtArtist, m_artist.data());
|
||||
}
|
||||
if (m_track != musicService.track()) {
|
||||
m_track = musicService.track();
|
||||
lv_label_set_text(txtTrack, m_track.data());
|
||||
}
|
||||
if (m_album != musicService.album()) {
|
||||
m_album = musicService.album();
|
||||
}
|
||||
if (m_status != musicService.status()) {
|
||||
m_status = musicService.status();
|
||||
}
|
||||
if (m_status == Pinetime::Controllers::MusicService::STATUS_MUSIC_PLAYING) {
|
||||
lv_label_set_text(txtPlayPause, "||");
|
||||
} else {
|
||||
lv_label_set_text(txtPlayPause, ">");
|
||||
}
|
||||
|
||||
return running;
|
||||
}
|
||||
|
||||
void Music::OnObjectEvent(lv_obj_t* obj, lv_event_t event)
|
||||
{
|
||||
if (event == LV_EVENT_CLICKED) {
|
||||
if (obj == btnVolDown) {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_VOLDOWN);
|
||||
} else if (obj == btnVolUp) {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_VOLUP);
|
||||
} else if (obj == btnPrev) {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_PREV);
|
||||
} else if (obj == btnPlayPause) {
|
||||
if (m_status == Pinetime::Controllers::MusicService::STATUS_MUSIC_PLAYING) {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_PAUSE);
|
||||
} else {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_PLAY);
|
||||
}
|
||||
} else if (obj == btnNext) {
|
||||
musicService.event(Controllers::MusicService::EVENT_MUSIC_NEXT);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user