HaikuDepot: Hide *_source and *_devel packages by default

* Renamed "Package" main menu to "Tools"
 * Added "Option" menu, containing the two options to show *_devel and
   *_source packages, defaulting to off.
This commit is contained in:
Stephan Aßmus
2013-12-08 23:10:37 +01:00
parent d543cbfcf6
commit 870554ac69
4 changed files with 96 additions and 6 deletions
+47 -4
View File
@@ -53,7 +53,9 @@
enum {
MSG_MODEL_WORKER_DONE = 'mmwd',
MSG_REFRESH_DEPOTS = 'mrdp',
MSG_PACKAGE_STATE_CHANGED = 'mpsc'
MSG_PACKAGE_STATE_CHANGED = 'mpsc',
MSG_SHOW_SOURCE_PACKAGES = 'ssrc',
MSG_SHOW_DEVELOP_PACKAGES = 'sdvl'
};
@@ -117,6 +119,12 @@ MainWindow::MainWindow(BRect frame, const BMessage& settings)
if (settings.FindMessage("column settings", &columnSettings) == B_OK)
fPackageListView->LoadState(&columnSettings);
bool showOption;
if (settings.FindBool("show develop packages", &showOption) == B_OK)
fModel.SetShowDevelopPackages(showOption);
if (settings.FindBool("show source packages", &showOption) == B_OK)
fModel.SetShowSourcePackages(showOption);
_StartRefreshWorker();
fPendingActionsSem = create_sem(0, "PendingPackageActions");
@@ -175,10 +183,25 @@ MainWindow::MessageReceived(BMessage* message)
break;
case MSG_REFRESH_DEPOTS:
{
_StartRefreshWorker(true);
break;
}
case MSG_SHOW_SOURCE_PACKAGES:
{
BAutolock _(fModel.Lock());
fModel.SetShowSourcePackages(!fModel.ShowSourcePackages());
}
_AdoptModel();
break;
case MSG_SHOW_DEVELOP_PACKAGES:
{
BAutolock _(fModel.Lock());
fModel.SetShowDevelopPackages(!fModel.ShowDevelopPackages());
}
_AdoptModel();
break;
case MSG_PACKAGE_SELECTED:
{
BString title;
@@ -254,6 +277,9 @@ MainWindow::StoreSettings(BMessage& settings) const
fPackageListView->SaveState(&columnSettings);
settings.AddMessage("column settings", &columnSettings);
settings.AddBool("show develop packages", fModel.ShowDevelopPackages());
settings.AddBool("show source packages", fModel.ShowSourcePackages());
}
@@ -295,11 +321,24 @@ MainWindow::GetModel()
void
MainWindow::_BuildMenu(BMenuBar* menuBar)
{
BMenu* menu = new BMenu(B_TRANSLATE("Package"));
BMenu* menu = new BMenu(B_TRANSLATE("Tools"));
menu->AddItem(new BMenuItem(B_TRANSLATE("Refresh depots"),
new BMessage(MSG_REFRESH_DEPOTS)));
menuBar->AddItem(menu);
menu = new BMenu(B_TRANSLATE("Options"));
fShowDevelopPackagesItem = new BMenuItem(
B_TRANSLATE("Show develop packages"),
new BMessage(MSG_SHOW_DEVELOP_PACKAGES));
menu->AddItem(fShowDevelopPackagesItem);
fShowSourcePackagesItem = new BMenuItem(
B_TRANSLATE("Show source packages"),
new BMessage(MSG_SHOW_SOURCE_PACKAGES));
menu->AddItem(fShowSourcePackagesItem);
menuBar->AddItem(menu);
}
@@ -313,6 +352,10 @@ MainWindow::_AdoptModel()
BAutolock _(fModel.Lock());
fPackageListView->AddPackage(fVisiblePackages.ItemAtFast(i));
}
BAutolock _(fModel.Lock());
fShowSourcePackagesItem->SetMarked(fModel.ShowSourcePackages());
fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
}
+2
View File
@@ -75,6 +75,8 @@ private:
PackageListView* fPackageListView;
PackageInfoView* fPackageInfoView;
BSplitView* fSplitView;
BMenuItem* fShowDevelopPackagesItem;
BMenuItem* fShowSourcePackagesItem;
Model fModel;
PackageList fVisiblePackages;
+38 -2
View File
@@ -179,6 +179,22 @@ private:
};
static inline bool
is_source_package(const PackageInfoRef& package)
{
const BString& packageName = package->Title();
return packageName.EndsWith("_source");
}
static inline bool
is_develop_package(const PackageInfoRef& package)
{
const BString& packageName = package->Title();
return packageName.EndsWith("_devel");
}
// #pragma mark - Model
@@ -210,7 +226,10 @@ Model::Model()
fCategoryFilter(PackageFilterRef(new AnyFilter(), true)),
fDepotFilter(""),
fSearchTermsFilter(PackageFilterRef(new AnyFilter(), true))
fSearchTermsFilter(PackageFilterRef(new AnyFilter(), true)),
fShowSourcePackages(false),
fShowDevelopPackages(false)
{
// Don't forget to add new categories to this list:
fCategories.Add(fCategoryAudio);
@@ -270,7 +289,9 @@ Model::CreatePackageList() const
for (int32 j = 0; j < packages.CountItems(); j++) {
const PackageInfoRef& package = packages.ItemAtFast(j);
if (fCategoryFilter->AcceptsPackage(package)
&& fSearchTermsFilter->AcceptsPackage(package)) {
&& fSearchTermsFilter->AcceptsPackage(package)
&& (fShowSourcePackages || !is_source_package(package))
&& (fShowDevelopPackages || !is_develop_package(package))) {
resultList.Add(package);
}
}
@@ -377,6 +398,21 @@ Model::SetSearchTerms(const BString& searchTerms)
}
void
Model::SetShowSourcePackages(bool show)
{
fShowSourcePackages = show;
}
void
Model::SetShowDevelopPackages(bool show)
{
fShowDevelopPackages = show;
}
// #pragma mark - information retrival
+9
View File
@@ -68,6 +68,12 @@ public:
void SetCategory(const BString& category);
void SetDepot(const BString& depot);
void SetSearchTerms(const BString& searchTerms);
void SetShowSourcePackages(bool show);
bool ShowSourcePackages() const
{ return fShowSourcePackages; }
void SetShowDevelopPackages(bool show);
bool ShowDevelopPackages() const
{ return fShowDevelopPackages; }
// Retrieve package information
void PopulatePackage(const PackageInfoRef& package);
@@ -100,6 +106,9 @@ private:
PackageFilterRef fCategoryFilter;
BString fDepotFilter;
PackageFilterRef fSearchTermsFilter;
bool fShowSourcePackages;
bool fShowDevelopPackages;
};