* Copyright 2025, Andrew Lindesay <apl@lindesay.co.nz>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#include "PackageFilterSpecification.h"
PackageFilterSpecification::PackageFilterSpecification()
:
fSearchTerms(""),
fDepotName(""),
fCategory(""),
fShowOnlyDesktopPackages(false),
fShowOnlyNativeDesktopPackages(false),
fShowAvailablePackages(true),
fShowInstalledPackages(true),
fShowSourcePackages(false),
fShowDevelopPackages(false)
{
}
PackageFilterSpecification::~PackageFilterSpecification()
{
}
bool
PackageFilterSpecification::operator==(const PackageFilterSpecification& other) const
{
return fSearchTerms == other.SearchTerms() && fDepotName == other.DepotName()
&& fCategory == other.Category()
&& fShowOnlyDesktopPackages == other.ShowOnlyDesktopPackages()
&& fShowOnlyNativeDesktopPackages == other.ShowOnlyNativeDesktopPackages()
&& fShowAvailablePackages == other.ShowAvailablePackages()
&& fShowInstalledPackages == other.ShowInstalledPackages()
&& fShowSourcePackages == other.ShowSourcePackages()
&& fShowDevelopPackages == other.ShowDevelopPackages();
}
bool
PackageFilterSpecification::operator!=(const PackageFilterSpecification& other) const
{
return !(*this == other);
}
BString
PackageFilterSpecification::SearchTerms() const
{
return fSearchTerms;
}
BString
PackageFilterSpecification::DepotName() const
{
return fDepotName;
}
BString
PackageFilterSpecification::Category() const
{
return fCategory;
}
bool
PackageFilterSpecification::ShowOnlyDesktopPackages() const
{
return fShowOnlyDesktopPackages;
}
bool
PackageFilterSpecification::ShowOnlyNativeDesktopPackages() const
{
return fShowOnlyNativeDesktopPackages;
}
bool
PackageFilterSpecification::ShowAvailablePackages() const
{
return fShowAvailablePackages;
}
bool
PackageFilterSpecification::ShowInstalledPackages() const
{
return fShowInstalledPackages;
}
bool
PackageFilterSpecification::ShowSourcePackages() const
{
return fShowSourcePackages;
}
bool
PackageFilterSpecification::ShowDevelopPackages() const
{
return fShowDevelopPackages;
}
void
PackageFilterSpecification::SetSearchTerms(BString value)
{
fSearchTerms = value;
}
void
PackageFilterSpecification::SetDepotName(BString value)
{
fDepotName = value;
}
void
PackageFilterSpecification::SetCategory(BString value)
{
fCategory = value;
}
void
PackageFilterSpecification::SetShowOnlyDesktopPackages(bool value)
{
fShowOnlyDesktopPackages = value;
}
void
PackageFilterSpecification::SetShowOnlyNativeDesktopPackages(bool value)
{
fShowOnlyNativeDesktopPackages = value;
}
void
PackageFilterSpecification::SetShowAvailablePackages(bool value)
{
fShowAvailablePackages = value;
}
void
PackageFilterSpecification::SetShowInstalledPackages(bool value)
{
fShowInstalledPackages = value;
}
void
PackageFilterSpecification::SetShowSourcePackages(bool value)
{
fShowSourcePackages = value;
}
void
PackageFilterSpecification::SetShowDevelopPackages(bool value)
{
fShowDevelopPackages = value;
}
PackageFilterSpecificationBuilder::PackageFilterSpecificationBuilder()
:
fSearchTerms(""),
fDepotName(""),
fCategory(""),
fShowOnlyDesktopPackages(false),
fShowOnlyNativeDesktopPackages(false),
fShowAvailablePackages(true),
fShowInstalledPackages(true),
fShowSourcePackages(false),
fShowDevelopPackages(false)
{
}
PackageFilterSpecificationBuilder::PackageFilterSpecificationBuilder(
const PackageFilterSpecificationRef& value)
:
fSource(value),
fSearchTerms(""),
fDepotName(""),
fCategory(""),
fShowOnlyDesktopPackages(false),
fShowOnlyNativeDesktopPackages(false),
fShowAvailablePackages(true),
fShowInstalledPackages(true),
fShowSourcePackages(false),
fShowDevelopPackages(false)
{
}
PackageFilterSpecificationBuilder::~PackageFilterSpecificationBuilder()
{
}
void
PackageFilterSpecificationBuilder::_InitFromSource()
{
if (fSource.IsSet()) {
_Init(fSource);
fSource.Unset();
}
}
void
PackageFilterSpecificationBuilder::_Init(const PackageFilterSpecification* value)
{
fSearchTerms = value->SearchTerms();
fDepotName = value->DepotName();
fCategory = value->Category();
fShowOnlyDesktopPackages = value->ShowOnlyDesktopPackages();
fShowOnlyNativeDesktopPackages = value->ShowOnlyNativeDesktopPackages();
fShowAvailablePackages = value->ShowAvailablePackages();
fShowInstalledPackages = value->ShowInstalledPackages();
fShowSourcePackages = value->ShowSourcePackages();
fShowDevelopPackages = value->ShowDevelopPackages();
}
PackageFilterSpecificationRef
PackageFilterSpecificationBuilder::BuildRef()
{
if (fSource.IsSet())
return fSource;
PackageFilterSpecification* info = new PackageFilterSpecification();
info->SetSearchTerms(fSearchTerms);
info->SetDepotName(fDepotName);
info->SetCategory(fCategory);
info->SetShowOnlyDesktopPackages(fShowOnlyDesktopPackages);
info->SetShowOnlyNativeDesktopPackages(fShowOnlyNativeDesktopPackages);
info->SetShowAvailablePackages(fShowAvailablePackages);
info->SetShowInstalledPackages(fShowInstalledPackages);
info->SetShowSourcePackages(fShowSourcePackages);
info->SetShowDevelopPackages(fShowDevelopPackages);
return PackageFilterSpecificationRef(info, true);
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithSearchTerms(BString value)
{
if (!fSource.IsSet() || fSource->SearchTerms() != value) {
_InitFromSource();
fSearchTerms = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithDepotName(BString value)
{
if (!fSource.IsSet() || fSource->DepotName() != value) {
_InitFromSource();
fDepotName = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithCategory(BString value)
{
if (!fSource.IsSet() || fSource->Category() != value) {
_InitFromSource();
fCategory = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowOnlyDesktopPackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowOnlyDesktopPackages() != value) {
_InitFromSource();
fShowOnlyDesktopPackages = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowOnlyNativeDesktopPackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowOnlyNativeDesktopPackages() != value) {
_InitFromSource();
fShowOnlyNativeDesktopPackages = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowAvailablePackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowAvailablePackages() != value) {
_InitFromSource();
fShowAvailablePackages = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowInstalledPackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowInstalledPackages() != value) {
_InitFromSource();
fShowInstalledPackages = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowSourcePackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowSourcePackages() != value) {
_InitFromSource();
fShowSourcePackages = value;
}
return *this;
}
PackageFilterSpecificationBuilder
PackageFilterSpecificationBuilder::WithShowDevelopPackages(bool value)
{
if (!fSource.IsSet() || fSource->ShowDevelopPackages() != value) {
_InitFromSource();
fShowDevelopPackages = value;
}
return *this;
}