Files
RRJClient/Core/hashcomparer.cpp
semenov 0c805708ef ref: change initialize logic
*complete without change animation
2025-08-14 15:40:46 +03:00

74 lines
1.7 KiB
C++

#include "hashcomparer.h"
HashComparer::HashComparer(QObject *) :
updateWidget(nullptr),
filesForUpdate(nullptr),
versionContainer(nullptr)
{
}
void HashComparer::initialize(VersionContainer *versionContainer,UpdateNotifyWidget* updateWidget)
{
this->versionContainer = versionContainer;
this->updateWidget = updateWidget;
filesForUpdate = new QList<FileData>;
}
void HashComparer::CompareDeltas(QList<FileData> *serverStreamingHash, QList<FileData> localStreamingHash)
{
QList<FileData> *files = new QList<FileData>;
QMutableListIterator<FileData> 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();
}
quint16 HashComparer::getFileUpdateCount() const
{
return filesForUpdate->count();
}
QList<FileData> *HashComparer::getFilesForUpdate() const
{
QList<FileData> *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;
}