/* =========================================================================== blockattack - Block Attack - Rise of the Blocks Copyright (C) 2005-2012 Poul Sander This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ Source information and contacts persons can be found at http://blockattack.net =========================================================================== */ /* listFiles.cpp */ #include "listFiles.h" using namespace std; void ListFiles::setDirectory(const string& directory) { filenames.clear(); #if defined(_WIN32) DWORD dwError; string directory2 = directory+"/*"; hFind = FindFirstFile(directory2.c_str(), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { cout << "Invalid file handle. Error is " << GetLastError() << endl; } else { filenames.push_back(FindFileData.cFileName); cout << "File: " << FindFileData.cFileName << endl; while ((FindNextFile(hFind, &FindFileData) != 0) && FindFileData.cFileName[0]!='.') { filenames.push_back(FindFileData.cFileName); cout << "File: " << FindFileData.cFileName << endl; } dwError = GetLastError(); FindClose(hFind); if (dwError != ERROR_NO_MORE_FILES) { cout << "FindNextFile error. Error is " << dwError << endl; } } #elif defined(__unix__) DIR* DirectoryPointer; struct dirent* dp; //cout << "Will look in: " << directory << endl; DirectoryPointer = opendir(directory.c_str()); if (!DirectoryPointer) { return; } while ( (dp=readdir(DirectoryPointer)) ) { string name = (string)(char*)dp->d_name; if ( name.at(0) != '.' && !isInList(name) ) { filenames.push_back(name); } } closedir(DirectoryPointer); #endif startFileNr=FIRST_FILE; //Put code here } bool ListFiles::isInList(const string& name) { for (int i=0; i< (int)filenames.size(); i++) { if (name == filenames.at(i) ) { return true; } } return false; } void ListFiles::setDirectory2(const string& dic) { #if defined(__unix__) DIR* DirectoryPointer; struct dirent* dp; //cout << "Will look in: " << dic << endl; DirectoryPointer = opendir(dic.c_str()); if (!DirectoryPointer) { return; } while ( (dp=readdir(DirectoryPointer)) ) { string name = (string)(char*)dp->d_name; if ( name.at(0) != '.' && !isInList(name) ) { filenames.push_back(name); } } closedir(DirectoryPointer); startFileNr=FIRST_FILE; #endif } string ListFiles::getFileName(int nr) { if (startFileNr+nr< (int)filenames.size()) { return filenames[startFileNr+nr]; } else { return ""; } } bool ListFiles::fileExists(int nr) { string emptyString=""; if (startFileNr+nr<(int)filenames.size()) { if (filenames[startFileNr+nr]==emptyString) { return false; } else { return true; } } else { return false; } } void ListFiles::back() { if (startFileNr>FIRST_FILE) { startFileNr = startFileNr-10; } if (startFileNr