#include "hashcomparer.h" #include #include HashComparer::HashComparer(DataParser *dataParser,QObject *) { this->dataParser = dataParser; } void HashComparer::initialize(MainWindow* mainWindow,VersionContainer *versionContainer) { connect(this,&HashComparer::sigCallCheck,mainWindow,&MainWindow::checkUpdate); connect(this,&HashComparer::sigHaveDelta,mainWindow,&MainWindow::showUpdateInfo); this->versionContainer = versionContainer; } void HashComparer::CompareDeltas() { QList *serverStreamingHash = new QList; QList *localStreamingHash = new QList; QList *files = new QList; QFile file(serverHash); file.open(QIODevice::ReadOnly | QIODevice::Text); serverStreamingHash = dataParser->xmlFileDataParse(file.readAll(),"StreamingAssets"); file.close(); QFile file2(streamingHashFilename); file2.open(QIODevice::ReadOnly | QIODevice::Text); localStreamingHash = dataParser->xmlFileDataParse(file2.readAll(),"StreamingAssets"); file2.close(); QMutableListIterator iterator(*localStreamingHash); for (auto &item:*localStreamingHash) { if(!serverStreamingHash->contains(item)) { files->append(item); } } filesForUpdate = files; showDeltas(); } void HashComparer::showDeltas() { if (filesForUpdate->length() <= 0) { emit sigCallCheck(); return; } for (auto &item:*filesForUpdate) { updateWidget->addToList(item); } emit sigHaveDelta(); } void HashComparer::setWidget(UpdateNotifyWidget* updateWidget) { this->updateWidget = updateWidget; } quint16 HashComparer::getFileUpdateCount() const { return filesForUpdate->count(); } QList *HashComparer::getFilesForUpdate() const { QList *completeList = filesForUpdate; for (int i = 0; i < completeList->count();i++) { FileData data = completeList->at(i); QString streamingAssetsName = "StreamingAssets"; quint16 baseIndex = data.path.indexOf("StreamingAssets"); data.path = data.path.remove(0,baseIndex + streamingAssetsName.length()); data.path.prepend("/SharedData/" + versionContainer->getLocalVersion()); completeList->replace(i,data); } return filesForUpdate; } HashComparer::~HashComparer() { }