HaikuDepot: PackageInfoList -> PackageList, added PackageState enum
* Model has SetPackageState(). It adds or removes a PackageInfo to/from three internal lists, installed, activated and uninstalled packages.
This commit is contained in:
@@ -47,7 +47,7 @@ private:
|
|||||||
BSplitView* fSplitView;
|
BSplitView* fSplitView;
|
||||||
|
|
||||||
Model fModel;
|
Model fModel;
|
||||||
PackageInfoList fVisiblePackages;
|
PackageList fVisiblePackages;
|
||||||
|
|
||||||
PackageManager fPackageManager;
|
PackageManager fPackageManager;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ public:
|
|||||||
// Also the PackageList could actually contain references to packages
|
// Also the PackageList could actually contain references to packages
|
||||||
// instead of the packages as objects. The equal operator is quite
|
// instead of the packages as objects. The equal operator is quite
|
||||||
// expensive as is.
|
// expensive as is.
|
||||||
const PackageInfoList& packageList = fDepot.PackageList();
|
const PackageList& packages = fDepot.Packages();
|
||||||
for (int i = packageList.CountItems() - 1; i >= 0; i--) {
|
for (int i = packages.CountItems() - 1; i >= 0; i--) {
|
||||||
if (packageList.ItemAtFast(i) == package)
|
if (packages.ItemAtFast(i) == package)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -131,20 +131,19 @@ Model::Model()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PackageInfoList
|
PackageList
|
||||||
Model::CreatePackageList() const
|
Model::CreatePackageList() const
|
||||||
{
|
{
|
||||||
// TODO: Allow to restrict depot, filter by search terms, ...
|
// TODO: Allow to restrict depot, filter by search terms, ...
|
||||||
|
|
||||||
// Return all packages from all depots.
|
// Return all packages from all depots.
|
||||||
PackageInfoList resultList;
|
PackageList resultList;
|
||||||
|
|
||||||
for (int32 i = 0; i < fDepots.CountItems(); i++) {
|
for (int32 i = 0; i < fDepots.CountItems(); i++) {
|
||||||
const PackageInfoList& packageList
|
const PackageList& packages = fDepots.ItemAtFast(i).Packages();
|
||||||
= fDepots.ItemAtFast(i).PackageList();
|
|
||||||
|
|
||||||
for (int32 j = 0; j < packageList.CountItems(); j++) {
|
for (int32 j = 0; j < packages.CountItems(); j++) {
|
||||||
const PackageInfo& package = packageList.ItemAtFast(j);
|
const PackageInfo& package = packages.ItemAtFast(j);
|
||||||
if (fCategoryFilter->AcceptsPackage(package)
|
if (fCategoryFilter->AcceptsPackage(package)
|
||||||
&& fDepotFilter->AcceptsPackage(package)
|
&& fDepotFilter->AcceptsPackage(package)
|
||||||
&& fSearchTermsFilter->AcceptsPackage(package)) {
|
&& fSearchTermsFilter->AcceptsPackage(package)) {
|
||||||
@@ -164,6 +163,38 @@ Model::AddDepot(const DepotInfo& depot)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Model::SetPackageState(const PackageInfo& package, PackageState state)
|
||||||
|
{
|
||||||
|
switch (state) {
|
||||||
|
default:
|
||||||
|
case NONE:
|
||||||
|
fInstalledPackages.Remove(package);
|
||||||
|
fActivatedPackages.Remove(package);
|
||||||
|
fUninstalledPackages.Remove(package);
|
||||||
|
break;
|
||||||
|
case INSTALLED:
|
||||||
|
if (!fInstalledPackages.Contains(package))
|
||||||
|
fInstalledPackages.Add(package);
|
||||||
|
fActivatedPackages.Remove(package);
|
||||||
|
fUninstalledPackages.Remove(package);
|
||||||
|
break;
|
||||||
|
case ACTIVATED:
|
||||||
|
if (!fInstalledPackages.Contains(package))
|
||||||
|
fInstalledPackages.Add(package);
|
||||||
|
if (!fActivatedPackages.Contains(package))
|
||||||
|
fActivatedPackages.Add(package);
|
||||||
|
fUninstalledPackages.Remove(package);
|
||||||
|
break;
|
||||||
|
case UNINSTALLED:
|
||||||
|
fInstalledPackages.Remove(package);
|
||||||
|
fActivatedPackages.Remove(package);
|
||||||
|
fUninstalledPackages.Add(package);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Model::SetCategory(const BString& category)
|
Model::SetCategory(const BString& category)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public:
|
|||||||
Model();
|
Model();
|
||||||
|
|
||||||
// !Returns new PackageInfoList from current parameters
|
// !Returns new PackageInfoList from current parameters
|
||||||
PackageInfoList CreatePackageList() const;
|
PackageList CreatePackageList() const;
|
||||||
|
|
||||||
bool AddDepot(const DepotInfo& depot);
|
bool AddDepot(const DepotInfo& depot);
|
||||||
const DepotList& Depots() const
|
const DepotList& Depots() const
|
||||||
@@ -50,6 +50,10 @@ public:
|
|||||||
const CategoryList& Categories() const
|
const CategoryList& Categories() const
|
||||||
{ return fCategories; }
|
{ return fCategories; }
|
||||||
|
|
||||||
|
void SetPackageState(
|
||||||
|
const PackageInfo& package,
|
||||||
|
PackageState state);
|
||||||
|
|
||||||
// Configure PackageFilters
|
// Configure PackageFilters
|
||||||
void SetCategory(const BString& category);
|
void SetCategory(const BString& category);
|
||||||
|
|
||||||
@@ -69,6 +73,10 @@ private:
|
|||||||
|
|
||||||
CategoryList fCategories;
|
CategoryList fCategories;
|
||||||
|
|
||||||
|
PackageList fInstalledPackages;
|
||||||
|
PackageList fActivatedPackages;
|
||||||
|
PackageList fUninstalledPackages;
|
||||||
|
|
||||||
PackageFilterRef fCategoryFilter;
|
PackageFilterRef fCategoryFilter;
|
||||||
PackageFilterRef fDepotFilter;
|
PackageFilterRef fDepotFilter;
|
||||||
PackageFilterRef fSearchTermsFilter;
|
PackageFilterRef fSearchTermsFilter;
|
||||||
|
|||||||
@@ -232,7 +232,15 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef List<PackageInfo, false> PackageInfoList;
|
typedef List<PackageInfo, false> PackageList;
|
||||||
|
|
||||||
|
|
||||||
|
enum PackageState {
|
||||||
|
NONE = 0,
|
||||||
|
INSTALLED = 1,
|
||||||
|
ACTIVATED = 2,
|
||||||
|
UNINSTALLED = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class DepotInfo {
|
class DepotInfo {
|
||||||
@@ -248,14 +256,14 @@ public:
|
|||||||
const BString& Name() const
|
const BString& Name() const
|
||||||
{ return fName; }
|
{ return fName; }
|
||||||
|
|
||||||
const PackageInfoList& PackageList() const
|
const PackageList& Packages() const
|
||||||
{ return fPackages; }
|
{ return fPackages; }
|
||||||
|
|
||||||
bool AddPackage(const PackageInfo& package);
|
bool AddPackage(const PackageInfo& package);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BString fName;
|
BString fName;
|
||||||
PackageInfoList fPackages;
|
PackageList fPackages;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user