diff --git a/src/common.h b/src/common.h index 1a01d37..38cc7a9 100644 --- a/src/common.h +++ b/src/common.h @@ -211,7 +211,6 @@ bool connectToWiFi(); void openAccessPoint(); const char* scaleImage(const char* path); void setVolume(uint8_t vol); -inline uint8_t getvolume(); uint8_t downvolume(); uint8_t upvolume(); void setStation(uint16_t sta); @@ -226,6 +225,7 @@ void SD_playFile(const char* path, uint32_t resumeFilePos = 0, bool sh bool SD_rename(const char* src, const char* dest); bool SD_newFolder(const char* folderPathName); bool SD_delete(const char* itemPath); +bool preparePlaylistFromDLNAFolder(); bool preparePlaylistFromFile(const char* path); bool preparePlaylistFromFolder(const char* path); void sortPlayListAlphabetical(); @@ -1766,15 +1766,15 @@ class dlnaList{ return true; } - void longPressed(uint16_t x, uint16_t y){ // is unused + void longPressed(uint16_t x, uint16_t y){ bool maybe_a_server = false; bool maybe_a_file = false; bool maybe_a_folder = false; - m_clicked = false; // ignore tp released event, wait of next clicked + m_clicked = false; // ignore tp released event, wait of next clicked m_itemListPos = (y / (m_h / 10)); - if(m_itemListPos == 0) goto exit; // is header - if(m_itemListPos == 1) {log_i("long pressed at return item %s", m_dlnaHistory[*m_dlnaLevel].name); goto exit;} - if(m_itemListPos >= 11) goto exit; // is footer + if(m_itemListPos == 0) goto exit; // is header + if(m_itemListPos == 1) { /* log_i("long pressed at return item %s", m_dlnaHistory[*m_dlnaLevel].name); */ goto exit;} + if(m_itemListPos >= 11) goto exit; // is footer m_itemListPos -= 2; @@ -1787,19 +1787,24 @@ class dlnaList{ } if(maybe_a_server){ - log_i("long pressed at server %s", m_dlnaServer.friendlyName[m_itemListPos]); - goto exit; + /* log_i("long pressed at server %s", m_dlnaServer.friendlyName[m_itemListPos]); */ goto exit; } if(maybe_a_file){ if(startsWith(m_srvContent.itemURL[m_itemListPos], "http")){ - log_i("long pressed at file %s", m_srvContent.itemURL[m_itemListPos]); - goto exit; + /* log_i("long pressed at file %s", m_srvContent.itemURL[m_itemListPos]); */ goto exit; } } if(maybe_a_folder){ - log_i("long pressed at folder x %s",m_srvContent.title[m_itemListPos]); + // log_i("long pressed at folder x %s",m_srvContent.title[m_itemListPos]); + tft.setTextColor(TFT_MAGENTA); + tft.setFont(m_fontSize); + tft.writeText(m_srvContent.title[m_itemListPos], 20, m_y + (m_itemListPos + 1) * m_lineHight, m_w - 20, m_lineHight, TFT_ALIGN_LEFT, TFT_ALIGN_CENTER, true, true); + + m_ra.arg1 = m_srvContent.objectId[m_itemListPos]; + m_ra.val2 = m_currDLNAsrvNr; + m_ra.val1 = 2; goto exit; } @@ -1808,6 +1813,14 @@ class dlnaList{ return; } + void longReleased(){ + if(!m_enabled) return; + if(!m_clicked) return; + if(graphicObjects_OnRelease) graphicObjects_OnRelease((const char*)m_name, m_ra); + m_ra.val1 = 0; + m_clicked = false; + } + private: void dlnaItemsList(){ if(!m_buff) m_buff = x_ps_malloc(512); diff --git a/src/main.cpp b/src/main.cpp index c280e2a..43270d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,7 +4,7 @@ MiniWebRadio -- Webradio receiver for ESP32 first release on 03/2017 */String Version ="\ - Version 3.1d Jun 10/2024 "; + Version 3.1e Jun 11/2024 "; /* 2.8" color display (320x240px) with controller ILI9341 or HX8347D (SPI) or 3.5" color display (480x320px) wiht controller ILI9486 or ILI9488 (SPI) @@ -165,6 +165,8 @@ bool _f_shuffle = false; bool _f_dlnaBrowseServer = false; bool _f_dlnaWaitForResponse = false; bool _f_dlnaSeekServer = false; +bool _f_dlnaMakePlaylistOTF = false; // notify callback that this browsing was to build a On-The_fly playlist +bool _f_dlna_browseReady = false; bool _f_BtEmitterFound = false; bool _f_BTEmitterConnected = false; bool _f_brightnessIsChangeable = false; @@ -1116,6 +1118,29 @@ bool preparePlaylistFromFolder(const char* path) { // all files whithin a folder return true; } //____________________________________________________________________________________________________________________________________________________ +bool preparePlaylistFromDLNAFolder(){ + vector_clear_and_shrink(_PLS_content); // clear _PLS_content first + DLNA_Client::srvContent_t foldercontent = dlna.getBrowseResult(); + for ( int i=0; i