/* * Copyright 2024-2025, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #include "PackageUtils.h" #include "Logger.h" /*! This method will obtain the title from the package if this is possible or otherwise it will return the name of the package. */ /*static*/ void PackageUtils::TitleOrName(const PackageInfoRef& package, BString& title) { PackageUtils::Title(package, title); if (title.IsEmpty() && package.IsSet()) title.SetTo(package->Name()); } /*static*/ void PackageUtils::Title(const PackageInfoRef& package, BString& title) { if (package.IsSet()) { PackageLocalizedTextRef localizedText = package->LocalizedText(); if (localizedText.IsSet()) title.SetTo(localizedText->Title()); else title.SetTo(""); } else { title.SetTo(""); } } /*static*/ void PackageUtils::Summary(const PackageInfoRef& package, BString& summary) { if (package.IsSet()) { PackageLocalizedTextRef localizedText = package->LocalizedText(); if (localizedText.IsSet()) summary.SetTo(localizedText->Summary()); else summary.SetTo(""); } else { summary.SetTo(""); } } /*static*/ const BString PackageUtils::DepotName(const PackageInfoRef& package) { if (package.IsSet()) { PackageCoreInfoRef coreInfo = package->CoreInfo(); if (coreInfo.IsSet()) return coreInfo->DepotName(); } return BString(); } /*static*/ PackageVersionRef PackageUtils::Version(const PackageInfoRef& package) { if (package.IsSet()) { PackageCoreInfoRef coreInfo = package->CoreInfo(); if (coreInfo.IsSet()) return coreInfo->Version(); } return PackageVersionRef(); } /*static*/ const BString PackageUtils::Architecture(const PackageInfoRef& package) { if (package.IsSet()) { PackageCoreInfoRef coreInfo = package->CoreInfo(); if (coreInfo.IsSet()) return coreInfo->Architecture(); } return ""; } /*static*/ const BString PackageUtils::PublisherName(const PackageInfoRef& package) { if (package.IsSet()) { PackageCoreInfoRef coreInfo = package->CoreInfo(); if (coreInfo.IsSet()) { PackagePublisherInfoRef publisherInfo = coreInfo->Publisher(); if (publisherInfo.IsSet()) return publisherInfo->Name(); } } return ""; } /*static*/ bool PackageUtils::IsProminent(const PackageInfoRef& package) { if (package.IsSet()) { PackageClassificationInfoRef classificationInfo = package->PackageClassificationInfo(); if (classificationInfo.IsSet()) return classificationInfo->IsProminent(); } return false; } /*static*/ bool PackageUtils::IsNativeDesktop(const PackageInfoRef& package) { if (package.IsSet()) { PackageClassificationInfoRef classificationInfo = package->PackageClassificationInfo(); if (classificationInfo.IsSet()) return classificationInfo->IsNativeDesktop(); } return false; } /*static*/ PackageState PackageUtils::State(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->State(); } return NONE; } /*static*/ off_t PackageUtils::Size(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->Size(); } return 0; } /*static*/ bool PackageUtils::Viewed(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->Viewed(); } return false; } /*static*/ bool PackageUtils::IsActivatedOrLocalFile(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->IsLocalFile() || localInfo->State() == ACTIVATED; } return false; } /*static*/ float PackageUtils::DownloadProgress(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->DownloadProgress(); } return 0.0f; } /*static*/ int32 PackageUtils::Flags(const PackageInfoRef& package) { if (package.IsSet()) { PackageLocalInfoRef localInfo = package->LocalInfo(); if (localInfo.IsSet()) return localInfo->Flags(); } return false; } /*static*/ const char* PackageUtils::StateToString(PackageState state) { switch (state) { case NONE: return "NONE"; case INSTALLED: return "INSTALLED"; case DOWNLOADING: return "DOWNLOADING"; case ACTIVATED: return "ACTIVATED"; case UNINSTALLED: return "UNINSTALLED"; case PENDING: return "PENDING"; default: debugger("unknown package state"); return "???"; } }