* Copyright 2024-2025, Andrew Lindesay <apl@lindesay.co.nz>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#include "PackageUtils.h"
#include "Logger.h"
otherwise it will return the name of the package.
*/
void
PackageUtils::TitleOrName(const PackageInfoRef& package, BString& title)
{
PackageUtils::Title(package, title);
if (title.IsEmpty() && package.IsSet())
title.SetTo(package->Name());
}
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("");
}
}
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("");
}
}
const BString
PackageUtils::DepotName(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageCoreInfoRef coreInfo = package->CoreInfo();
if (coreInfo.IsSet())
return coreInfo->DepotName();
}
return BString();
}
PackageVersionRef
PackageUtils::Version(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageCoreInfoRef coreInfo = package->CoreInfo();
if (coreInfo.IsSet())
return coreInfo->Version();
}
return PackageVersionRef();
}
const BString
PackageUtils::Architecture(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageCoreInfoRef coreInfo = package->CoreInfo();
if (coreInfo.IsSet())
return coreInfo->Architecture();
}
return "";
}
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 "";
}
bool
PackageUtils::IsProminent(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageClassificationInfoRef classificationInfo = package->PackageClassificationInfo();
if (classificationInfo.IsSet())
return classificationInfo->IsProminent();
}
return false;
}
bool
PackageUtils::IsNativeDesktop(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageClassificationInfoRef classificationInfo = package->PackageClassificationInfo();
if (classificationInfo.IsSet())
return classificationInfo->IsNativeDesktop();
}
return false;
}
PackageState
PackageUtils::State(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->State();
}
return NONE;
}
off_t
PackageUtils::Size(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->Size();
}
return 0;
}
bool
PackageUtils::Viewed(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->Viewed();
}
return false;
}
bool
PackageUtils::IsActivatedOrLocalFile(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->IsLocalFile() || localInfo->State() == ACTIVATED;
}
return false;
}
float
PackageUtils::DownloadProgress(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->DownloadProgress();
}
return 0.0f;
}
int32
PackageUtils::Flags(const PackageInfoRef& package)
{
if (package.IsSet()) {
PackageLocalInfoRef localInfo = package->LocalInfo();
if (localInfo.IsSet())
return localInfo->Flags();
}
return false;
}
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 "???";
}
}