#pragma once #include "device.h" #include "../xml/obj_xml.h" #include "XMLString.h" #include "../Components/wac_downloadManager/DownloadCallbackT.h" #include "WifiDevice.h" #include "../xml/ifc_xmlreadercallbackT.h" #include "main.h" #include "InfoDownloader.h" // for InfoXML class WifiXML : public ifc_xmlreadercallbackT { public: WifiXML(obj_xml *parser); ~WifiXML(); public: void xmlReaderOnStartElementCallback(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params); void xmlReaderOnEndElementCallback(const wchar_t *xmlpath, const wchar_t *xmltag); DeviceXML info_xml; TemplateDevice::PlaylistsList playlists; TemplateDevice::TrackList tracks; private: obj_xml *parser; TemplateDevice *device; XMLString artist; XMLString album; XMLString composer; XMLString duration; XMLString track; XMLString year; XMLString size; XMLString title; XMLString mime_type; XMLString modified; WifiTrack *wifi_track; WifiPlaylist *wifi_playlist; }; class SongListDownloader : public DownloadCallbackT { public: SongListDownloader(const char *root_url, WifiDevice *wifi_device); ~SongListDownloader(); void OnInit(DownloadToken token); void OnData(DownloadToken token, void *data, size_t datalen); void OnCancel(DownloadToken token); void OnError(DownloadToken token, int error); void OnFinish(DownloadToken token); private: obj_xml *parser; WifiXML *wifi; TemplateDevice *device; WifiDevice *wifi_device; const char *root_url; };