|
|
- #include "ZipUtilityPrivatePCH.h"
- #include "ZipFileFunctionLibrary.h"
- #include "SevenZipCallbackHandler.h"
-
- void SevenZipCallbackHandler::OnProgress(const TString& archivePath, uint64 bytes)
- {
- const UObject* interfaceDelegate = ProgressDelegate;
- const uint64 bytesConst = bytes;
- const FString pathConst = FString(archivePath.c_str());
-
- if (bytes > 0) {
- const float ProgressPercentage = ((double)((TotalBytes)-(BytesLeft - bytes)) / (double)TotalBytes) * 100;
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, ProgressPercentage, bytesConst]
- {
- //UE_LOG(LogClass, Log, TEXT("Progress: %d bytes"), progress);
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnProgress((UObject*)interfaceDelegate, pathConst, ProgressPercentage, bytesConst);
- });
- }
- }
-
- void SevenZipCallbackHandler::OnDone(const TString& archivePath)
- {
- const UObject* interfaceDelegate = ProgressDelegate;
- const FString pathConst = FString(archivePath.c_str());
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([pathConst, interfaceDelegate]
- {
- //UE_LOG(LogClass, Log, TEXT("All Done!"));
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnDone((UObject*)interfaceDelegate, pathConst, EZipUtilityCompletionState::SUCCESS);
- });
- }
-
- void SevenZipCallbackHandler::OnFileDone(const TString& archivePath, const TString& filePath, uint64 bytes)
- {
- const UObject* interfaceDelegate = ProgressDelegate;
- const FString pathConst = FString(archivePath.c_str());
- const FString filePathConst = FString(filePath.c_str());
- const uint64 bytesConst = bytes;
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, filePathConst, bytesConst]
- {
- //UE_LOG(LogClass, Log, TEXT("File Done: %s, %d bytes"), filePathConst.c_str(), bytesConst);
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnFileDone((UObject*)interfaceDelegate, pathConst, filePathConst);
- });
-
- //Handle byte decrementing
- if (bytes > 0) {
- BytesLeft -= bytes;
- const float ProgressPercentage = ((double)(TotalBytes - BytesLeft) / (double)TotalBytes) * 100;
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, ProgressPercentage, bytes]
- {
- //UE_LOG(LogClass, Log, TEXT("Progress: %d bytes"), progress);
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnProgress((UObject*)interfaceDelegate, pathConst, ProgressPercentage, bytes);
- });
- }
- }
- void SevenZipCallbackHandler::OnStartWithTotal(const TString& archivePath, unsigned __int64 totalBytes)
- {
- TotalBytes = totalBytes;
- BytesLeft = TotalBytes;
-
- const UObject* interfaceDelegate = ProgressDelegate;
- const uint64 bytesConst = TotalBytes;
- const FString pathConst = FString(archivePath.c_str());
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, bytesConst]
- {
- //UE_LOG(LogClass, Log, TEXT("Starting with %d bytes"), bytesConst);
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnStartProcess((UObject*)interfaceDelegate, pathConst, bytesConst);
- });
- }
- void SevenZipCallbackHandler::OnFileFound(const TString& archivePath, const TString& filePath, int size)
- {
- const UObject* interfaceDelegate = ProgressDelegate;
- const uint64 bytesConst = TotalBytes;
- const FString pathString = FString(archivePath.c_str());
- const FString fileString = FString(filePath.c_str());
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathString, fileString, bytesConst]
- {
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnFileFound((UObject*)interfaceDelegate, pathString, fileString, bytesConst);
- });
- }
- void SevenZipCallbackHandler::OnListingDone(const TString& archivePath)
- {
- const UObject* interfaceDelegate = ProgressDelegate;
- const FString pathString = FString(archivePath.c_str());
-
- UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathString]
- {
- ((IZipUtilityInterface*)interfaceDelegate)->Execute_OnDone((UObject*)interfaceDelegate, pathString, EZipUtilityCompletionState::SUCCESS);
- });
- }
-
- bool SevenZipCallbackHandler::OnCheckBreak()
- {
- return bCancelOperation;
- }
|