Playlist save support

This commit is contained in:
emb 2015-10-21 21:29:39 -05:00
parent d1a45e650e
commit cdba6f5df7
4 changed files with 50 additions and 25 deletions

View File

@ -42,29 +42,6 @@ CollectionInfo::~CollectionInfo()
{
// remove items from the subcollections so their destructors do not
// delete the items since the parent collection will delete them.
if(saveRequest)
{
std::string file = Utils::combinePath(Configuration::absolutePath, "collections", name, "playlists/favorites.txt");
Logger::write(Logger::ZONE_INFO, "Collection", "Saving " + file);
std::ofstream filestream;
try
{
filestream.open(file.c_str());
std::vector<Item *> *saveitems = playlists["favorites"];
for(std::vector<Item *>::iterator it = saveitems->begin(); it != saveitems->end(); it++)
{
filestream << (*it)->name << std::endl;
}
filestream.close();
}
catch(std::exception &)
{
Logger::write(Logger::ZONE_ERROR, "Collection", "Save failed: " + file);
}
}
std::vector<CollectionInfo *>::iterator subit;
for (subit = subcollections_.begin(); subit != subcollections_.end(); subit++)
{
@ -94,6 +71,36 @@ CollectionInfo::~CollectionInfo()
}
}
bool CollectionInfo::Save()
{
bool retval = true;
if(saveRequest)
{
std::string file = Utils::combinePath(Configuration::absolutePath, "collections", name, "playlists/favorites.txt");
Logger::write(Logger::ZONE_INFO, "Collection", "Saving " + file);
std::ofstream filestream;
try
{
filestream.open(file.c_str());
std::vector<Item *> *saveitems = playlists["favorites"];
for(std::vector<Item *>::iterator it = saveitems->begin(); it != saveitems->end(); it++)
{
filestream << (*it)->name << std::endl;
}
filestream.close();
}
catch(std::exception &)
{
Logger::write(Logger::ZONE_ERROR, "Collection", "Save failed: " + file);
retval = false;
}
}
return retval;
}
std::string CollectionInfo::settingsPath() const
{
return Utils::combinePath(Configuration::absolutePath, "collections", name);

View File

@ -27,6 +27,7 @@ public:
CollectionInfo(std::string name, std::string listPath, std::string extensions, std::string metadataType, std::string metadataPath);
virtual ~CollectionInfo();
std::string settingsPath() const;
bool Save();
void sortItems();
void addSubcollection(CollectionInfo *info);
bool hasSubcollections();

View File

@ -90,6 +90,19 @@ Page::~Page()
delete selectSoundChunk_;
selectSoundChunk_ = NULL;
}
CollectionVector_T::iterator itc = collections_.begin();
while(itc != collections_.end())
{
itc->collection->Save();
if(itc->collection)
{
delete itc->collection;
}
collections_.erase(itc);
itc = collections_.begin();
}
}
@ -554,6 +567,7 @@ bool Page::popCollection()
void Page::nextPlaylist()
{
MenuInfo_S &info = collections_.back();
info.collection->Save();
unsigned int numlists = info.collection->playlists.size();
for(unsigned int i = 0; i <= numlists; ++i)
@ -619,7 +633,11 @@ void Page::update(float dt)
std::list<MenuInfo_S>::iterator next = del;
++next;
if(info.collection) delete info.collection;
if(info.collection)
{
info.collection->Save();
delete info.collection;
}
deleteCollections_.erase(del);
del = next;
}

View File

@ -389,7 +389,6 @@ void RetroFE::run()
render();
}
}
}