X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Ffilethread.cpp;h=dec070ffd4efcfeeb81207a06de89df66d0b2d62;hb=68e8886a9aaf48fcc130334d8cf4fe35a4534a02;hp=d4cccc2ea3fbf3a11692a8d5da470ecec96a0726;hpb=8cecfa4150ad7bc9d2a95f9753e2666456f98243;p=virtualjaguar diff --git a/src/gui/filethread.cpp b/src/gui/filethread.cpp index d4cccc2..dec070f 100644 --- a/src/gui/filethread.cpp +++ b/src/gui/filethread.cpp @@ -16,6 +16,7 @@ #include #include "crc32.h" +#include "file.h" #include "filedb.h" #include "settings.h" @@ -81,22 +82,54 @@ printf("FileThread: Aborting!!!\n"); #endif QFileInfo fileInfo = list.at(i); - QFile file(romDir.filePath(fileInfo.fileName())); - uint8 * buffer = new uint8[fileInfo.size()]; - if (file.open(QIODevice::ReadOnly)) + if (fileInfo.suffix().compare("zip", Qt::CaseInsensitive) == 0) { - file.read((char *)buffer, fileInfo.size()); - uint32 crc = crc32_calcCheckSum(buffer, fileInfo.size()); - file.close(); - - uint32 index = FindCRCIndexInFileList(crc); - - if (index != 0xFFFFFFFF && !(romList[index].flags & FF_BIOS)) - emit FoundAFile(index); + uint8 * buffer = NULL; + uint32 size = GetFileFromZIP(fileInfo.canonicalFilePath().toAscii(), FT_SOFTWARE, buffer); + + if (size > 0) + { +//printf("FileThread: About to calc checksum on file with size %u... (buffer=%08X)\n", size, buffer); + uint32 crc = crc32_calcCheckSum(buffer, size); + uint32 index = FindCRCIndexInFileList(crc); + delete[] buffer; + +// Mebbe we should pass a index AND a QImage here??? + if (index != 0xFFFFFFFF && !(romList[index].flags & FF_BIOS)) + { + QImage img; + size = GetFileFromZIP(fileInfo.canonicalFilePath().toAscii(), FT_LABEL, buffer); + + if (size > 0) + { + img.loadFromData(buffer, size); + delete[] buffer; + } +//printf("FileThread: Attempted to load image. Size: %u x %u...\n", img.width(), img.height()); + + emit FoundAFile(index); + } + } + } + else + { + QFile file(romDir.filePath(fileInfo.fileName())); + + if (file.open(QIODevice::ReadOnly)) + { + uint8 * buffer = new uint8[fileInfo.size()]; + file.read((char *)buffer, fileInfo.size()); + file.close(); + uint32 crc = crc32_calcCheckSum(buffer, fileInfo.size()); + uint32 index = FindCRCIndexInFileList(crc); + delete[] buffer; + +// Mebbe we should pass a index AND a QImage here??? + if (index != 0xFFFFFFFF && !(romList[index].flags & FF_BIOS)) + emit FoundAFile(index); + } } - - delete[] buffer; } }