void CDragInformation::parseDragInfo(CDragFileList& dragFileList, UInt32 fileNum, CString data) { size_t startPos = 0; size_t findResult1 = 0; size_t findResult2 = 0; dragFileList.clear(); CString slash("\\"); if (data.find("/", startPos) != -1) { slash = "/"; } while (fileNum) { findResult1 = data.find('\0', startPos); findResult2 = data.find_last_of(slash, findResult1); if (findResult1 == startPos) { //TODO: file number does not match, something goes wrong break; } if (findResult1 - findResult2 > 1) { dragFileList.push_back(data.substr(findResult2 + 1, findResult1 - findResult2)); } startPos = findResult1 + 1; --fileNum; } }
int CDragInformation::setupDragInfo(CDragFileList& fileList, CString& output) { int size = fileList.size(); for (int i = 0; i < size; ++i) { output.append(fileList.at(i).getFilename()); output.append(","); CString filesize = getFileSize(fileList.at(i).getFilename()); output.append(filesize); output.append(","); } return size; }
void CDragInformation::parseDragInfo(CDragFileList& dragFileList, UInt32 fileNum, CString data) { size_t startPos = 0; size_t findResult1 = 0; size_t findResult2 = 0; dragFileList.clear(); CString slash("\\"); if (data.find("/", startPos) != string::npos) { slash = "/"; } UInt32 index = 0; while (index < fileNum) { findResult1 = data.find(',', startPos); findResult2 = data.find_last_of(slash, findResult1); if (findResult1 == startPos) { //TODO: file number does not match, something goes wrong break; } // set filename if (findResult1 - findResult2 > 1) { CString filename = data.substr(findResult2 + 1, findResult1 - findResult2 - 1); CDragInformation di; di.setFilename(filename); dragFileList.push_back(di); } startPos = findResult1 + 1; //set filesize findResult2 = data.find(',', startPos); if (findResult2 - findResult1 > 1) { CString filesize = data.substr(findResult1 + 1, findResult2 - findResult1 - 1); size_t size = stringToNum(filesize); dragFileList.at(index).setFilesize(size); } startPos = findResult1 + 1; ++index; } LOG((CLOG_DEBUG "drag info received, total drag file number: %i", dragFileList.size())); for (size_t i = 0; i < dragFileList.size(); ++i) { LOG((CLOG_DEBUG2 "dragging file %i name: %s", i + 1, dragFileList.at(i).getFilename().c_str())); } }