71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
#ifndef DIRECTORYNODE_H_
|
|
#define DIRECTORYNODE_H_
|
|
class Print;
|
|
|
|
#include <SD.h>
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DirectoryNode {
|
|
private:
|
|
uint16_t id;
|
|
String name;
|
|
String dirPath;
|
|
std::vector<DirectoryNode*> subdirectories;
|
|
std::vector<String> mp3Files;
|
|
std::vector<uint16_t> ids;
|
|
String currentPlaying;
|
|
uint16_t currentPlayingId = 0;
|
|
uint16_t secondsPlayed = 0;
|
|
|
|
String buildFullPath(const String& fileName) const;
|
|
|
|
|
|
public:
|
|
DirectoryNode(const String& nodeName);
|
|
~DirectoryNode();
|
|
static uint16_t idCounter;
|
|
|
|
|
|
const String& getName() const;
|
|
const uint16_t getId() const;
|
|
const std::vector<DirectoryNode*>& getSubdirectories() const;
|
|
const std::vector<String>& getMP3Files() const;
|
|
const String& getDirPath() const;
|
|
String getFullPathByIndex(size_t index) const;
|
|
|
|
size_t getNumOfFiles() const;
|
|
|
|
void setCurrentPlaying(const String& mp3File);
|
|
const String& getCurrentPlaying() const;
|
|
const uint16_t getCurrentPlayingId() const;
|
|
|
|
void setSecondsPlayed(const uint32_t seconds);
|
|
uint32_t getSecondsPlayed() const;
|
|
|
|
uint16_t getNextId();
|
|
|
|
void addSubdirectory(DirectoryNode* subdirectory);
|
|
void addMP3File(const String& mp3File);
|
|
void buildDirectoryTree(const char* currentPath);
|
|
void printDirectoryTree(int level = 0) const;
|
|
DirectoryNode* advanceToMP3(const String& songName);
|
|
DirectoryNode* advanceToNextMP3(const String& currentGlobal);
|
|
DirectoryNode* goToPreviousMP3(uint32_t thresholdSeconds = 3);
|
|
DirectoryNode* findPreviousMP3Globally(const String& currentGlobal);
|
|
void buildFlatMP3List(std::vector<std::pair<DirectoryNode*, int>>& allMP3s);
|
|
DirectoryNode* advanceToMP3(const uint16_t id);
|
|
void advanceToFirstMP3InThisNode();
|
|
void streamDirectoryHTML(Print &out) const;
|
|
DirectoryNode* findFirstDirectoryWithMP3s();
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif /* DIRECTORYNODE_H_ */
|