case insensetive local save searches, fix extention being counted in the match

This commit is contained in:
jacob1
2013-03-08 22:31:08 -05:00
parent f9c219da93
commit 189f96d35f

View File

@@ -413,6 +413,8 @@ std::vector<std::string> Client::DirectorySearch(std::string directory, std::str
{ {
std::vector<std::string> extensions; std::vector<std::string> extensions;
extensions.push_back(extension); extensions.push_back(extension);
for (std::string::iterator iter = search.begin(); iter != search.end(); ++iter)
*iter = toupper(*iter);
return DirectorySearch(directory, search, extensions); return DirectorySearch(directory, search, extensions);
} }
@@ -463,18 +465,22 @@ std::vector<std::string> Client::DirectorySearch(std::string directory, std::str
std::vector<std::string> searchResults; std::vector<std::string> searchResults;
for(std::vector<std::string>::iterator iter = directoryList.begin(), end = directoryList.end(); iter != end; ++iter) for(std::vector<std::string>::iterator iter = directoryList.begin(), end = directoryList.end(); iter != end; ++iter)
{ {
std::string filename = *iter; std::string filename = *iter, tempfilename = *iter;
bool extensionMatch = !extensions.size(); bool extensionMatch = !extensions.size();
for(std::vector<std::string>::iterator extIter = extensions.begin(), extEnd = extensions.end(); extIter != extEnd; ++extIter) for(std::vector<std::string>::iterator extIter = extensions.begin(), extEnd = extensions.end(); extIter != extEnd; ++extIter)
{ {
if(filename.find(*extIter, filename.length()-(*extIter).length())==filename.length()-(*extIter).length()) int filenameLength = filename.length()-(*extIter).length();
if(filename.find(*extIter, filenameLength) == filenameLength)
{ {
extensionMatch = true; extensionMatch = true;
tempfilename = filename.substr(0, filenameLength);
break; break;
} }
} }
for (std::string::iterator iter = tempfilename.begin(); iter != tempfilename.end(); ++iter)
*iter = toupper(*iter);
bool searchMatch = !search.size(); bool searchMatch = !search.size();
if(search.size() && filename.find(search)!=std::string::npos) if(search.size() && tempfilename.find(search)!=std::string::npos)
searchMatch = true; searchMatch = true;
if(searchMatch && extensionMatch) if(searchMatch && extensionMatch)