virtual bool doWork() { std::vector<ByteString> files = Client::Ref().DirectorySearch(directory, search, ".cps"); std::sort(files.rbegin(), files.rend(), [](ByteString a, ByteString b) { return a.ToLower() < b.ToLower(); }); notifyProgress(-1); for(std::vector<ByteString>::iterator iter = files.begin(), end = files.end(); iter != end; ++iter) { SaveFile * saveFile = new SaveFile(*iter); try { std::vector<unsigned char> data = Client::Ref().ReadFile(*iter); GameSave * tempSave = new GameSave(data); saveFile->SetGameSave(tempSave); saveFiles.push_back(saveFile); ByteString filename = (*iter).SplitFromEndBy(PATH_SEP).After(); filename = filename.SplitBy('.').Before(); saveFile->SetDisplayName(filename.FromUtf8()); } catch(std::exception & e) { //:( } } return true; }
virtual bool doWork() { std::vector<std::string> files = Client::Ref().DirectorySearch(directory, search, ".cps"); std::sort(files.rbegin(), files.rend(), [](std::string a, std::string b) { std::transform(a.begin(), a.end(), a.begin(), ::tolower); std::transform(b.begin(), b.end(), b.begin(), ::tolower); return a < b; }); notifyProgress(-1); for(std::vector<std::string>::iterator iter = files.begin(), end = files.end(); iter != end; ++iter) { SaveFile * saveFile = new SaveFile(*iter); try { std::vector<unsigned char> data = Client::Ref().ReadFile(*iter); GameSave * tempSave = new GameSave(data); saveFile->SetGameSave(tempSave); saveFiles.push_back(saveFile); std::string filename = *iter; size_t folderPos = filename.rfind(PATH_SEP); if(folderPos!=std::string::npos && folderPos+1 < filename.size()) { filename = filename.substr(folderPos+1); } size_t extPos = filename.rfind("."); if(extPos!=std::string::npos) { filename = filename.substr(0, extPos); } saveFile->SetDisplayName(filename); } catch(std::exception & e) { //:( } } return true; }