/* * Copyright 2013-2014, Stephan Aßmus . * Copyright 2013, Rene Gollent . * Copyright 2016-2025, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #include "PackageInfo.h" #include #include #include #include "HaikuDepotConstants.h" #include "Logger.h" #include "PackageInfoListener.h" // #pragma mark - PackageInfo PackageInfo::PackageInfo() : fName(), fCoreInfo(), fLocalizedText(), fClassificationInfo(), fScreenshotInfo(), fUserRatingInfo(), fLocalInfo() { } PackageInfo::PackageInfo(const PackageInfo& other) : fName(other.fName), fCoreInfo(other.fCoreInfo), fLocalizedText(other.fLocalizedText), fClassificationInfo(other.fClassificationInfo), fScreenshotInfo(other.fScreenshotInfo), fUserRatingInfo(other.fUserRatingInfo), fLocalInfo(other.fLocalInfo) { } bool PackageInfo::operator==(const PackageInfo& other) const { return fName == other.fName && fCoreInfo == other.fCoreInfo && fLocalInfo == other.fLocalInfo && fLocalizedText == other.fLocalizedText && fClassificationInfo == other.fClassificationInfo && fScreenshotInfo == other.fScreenshotInfo && fUserRatingInfo == fUserRatingInfo; } bool PackageInfo::operator!=(const PackageInfo& other) const { return !(*this == other); } const BString& PackageInfo::Name() const { return fName; } const PackageCoreInfoRef PackageInfo::CoreInfo() const { return fCoreInfo; } const PackageClassificationInfoRef PackageInfo::PackageClassificationInfo() const { return fClassificationInfo; } const PackageScreenshotInfoRef PackageInfo::ScreenshotInfo() const { return fScreenshotInfo; } void PackageInfo::SetName(const BString& value) { fName = value; } uint32 PackageInfo::ChangeMask(const PackageInfo& other) const { uint32 result = 0; if (fLocalizedText != fLocalizedText) result |= PKG_CHANGED_LOCALIZED_TEXT; if (fScreenshotInfo != other.fScreenshotInfo) result |= PKG_CHANGED_SCREENSHOTS; if (fUserRatingInfo != other.fUserRatingInfo) result |= PKG_CHANGED_RATINGS; if (fLocalInfo != other.fLocalInfo) result |= PKG_CHANGED_LOCAL_INFO; if (fClassificationInfo != other.fClassificationInfo) result |= PKG_CHANGED_CLASSIFICATION; if (fCoreInfo != other.fCoreInfo) result |= PKG_CHANGED_CORE_INFO; return result; } void PackageInfo::SetCoreInfo(PackageCoreInfoRef value) { fCoreInfo = value; } const PackageLocalizedTextRef PackageInfo::LocalizedText() const { return fLocalizedText; } void PackageInfo::SetLocalizedText(PackageLocalizedTextRef value) { fLocalizedText = value; } const PackageUserRatingInfoRef PackageInfo::UserRatingInfo() const { return fUserRatingInfo; } void PackageInfo::SetUserRatingInfo(PackageUserRatingInfoRef& value) { fUserRatingInfo = value; } const PackageLocalInfoRef PackageInfo::LocalInfo() const { return fLocalInfo; } void PackageInfo::SetLocalInfo(PackageLocalInfoRef& localInfo) { fLocalInfo = localInfo; } void PackageInfo::SetPackageClassificationInfo(PackageClassificationInfoRef value) { fClassificationInfo = value; } void PackageInfo::SetScreenshotInfo(PackageScreenshotInfoRef value) { fScreenshotInfo = value; } // #pragma mark - PackageLocalInfoBuilder PackageInfoBuilder::PackageInfoBuilder(const BString& name) : fName(name), fCoreInfo(), fLocalizedText(), fClassificationInfo(), fScreenshotInfo(), fUserRatingInfo(), fLocalInfo() { } PackageInfoBuilder::PackageInfoBuilder(const PackageInfoRef& value) : fName(), fCoreInfo(), fLocalizedText(), fClassificationInfo(), fScreenshotInfo(), fUserRatingInfo(), fLocalInfo() { if (value.IsSet()) _Init(value.Get()); } PackageInfoBuilder::PackageInfoBuilder(const PackageInfo& value) { _Init(&value); } PackageInfoBuilder::~PackageInfoBuilder() { } void PackageInfoBuilder::_Init(const PackageInfo* value) { fName = value->Name(); fCoreInfo = value->CoreInfo(); fLocalizedText = value->LocalizedText(); fClassificationInfo = value->PackageClassificationInfo(); fScreenshotInfo = value->ScreenshotInfo(); fUserRatingInfo = value->UserRatingInfo(); fLocalInfo = value->LocalInfo(); } PackageInfoRef PackageInfoBuilder::BuildRef() { PackageInfo* info = new PackageInfo(); info->SetName(fName); info->SetCoreInfo(fCoreInfo); info->SetLocalizedText(fLocalizedText); info->SetPackageClassificationInfo(fClassificationInfo); info->SetScreenshotInfo(fScreenshotInfo); info->SetUserRatingInfo(fUserRatingInfo); info->SetLocalInfo(fLocalInfo); return PackageInfoRef(info, true); } PackageInfoBuilder& PackageInfoBuilder::WithCoreInfo(PackageCoreInfoRef value) { fCoreInfo = value; return *this; } PackageInfoBuilder& PackageInfoBuilder::WithLocalizedText(PackageLocalizedTextRef value) { fLocalizedText = value; return *this; } PackageInfoBuilder& PackageInfoBuilder::WithPackageClassificationInfo(PackageClassificationInfoRef value) { fClassificationInfo = value; return *this; } PackageInfoBuilder& PackageInfoBuilder::WithUserRatingInfo(PackageUserRatingInfoRef value) { fUserRatingInfo = value; return *this; } PackageInfoBuilder& PackageInfoBuilder::WithLocalInfo(PackageLocalInfoRef value) { fLocalInfo = value; return *this; } PackageInfoBuilder& PackageInfoBuilder::WithScreenshotInfo(PackageScreenshotInfoRef value) { fScreenshotInfo = value; return *this; }