HaikuDepot: Resurrect Options menu...

And move the (new) checkmarks into the Options menu. This makes them less
easy to discover, but cleans up the UI, especially since the options to show
development and source code packages are not very important for most users.
This commit is contained in:
Stephan Aßmus 2014-10-25 17:30:54 +02:00
parent e0a26dce59
commit fdec4227f5
3 changed files with 50 additions and 99 deletions

View File

@ -9,7 +9,6 @@
#include <stdio.h>
#include <Catalog.h>
#include <CheckBox.h>
#include <LayoutBuilder.h>
#include <MenuField.h>
#include <MenuItem.h>
@ -38,17 +37,6 @@ add_categories_to_menu(const CategoryList& categories, BMenu* menu)
}
static BCheckBox*
create_check_box(const char* label, const char* name)
{
BMessage* message = new BMessage(MSG_FILTER_SELECTED);
message->AddString("name", name);
BCheckBox* checkBox = new BCheckBox(label, message);
set_small_font(checkBox);
return checkBox;
}
FilterView::FilterView()
:
BGroupView("filter view", B_VERTICAL)
@ -78,16 +66,6 @@ FilterView::FilterView()
float maxSearchWidth = minSearchWidth * 2;
fSearchTermsText->SetExplicitMaxSize(BSize(maxSearchWidth, B_SIZE_UNSET));
// Construct check boxen
fAvailableCheckBox = create_check_box(
B_TRANSLATE("Available"), "available");
fInstalledCheckBox = create_check_box(
B_TRANSLATE("Installed"), "installed");
fDevelopmentCheckBox = create_check_box(
B_TRANSLATE("Development"), "development");
fSourceCodeCheckBox = create_check_box(
B_TRANSLATE("Source code"), "source code");
// Build layout
BLayoutBuilder::Group<>(this)
.AddGroup(B_HORIZONTAL)
@ -99,13 +77,6 @@ FilterView::FilterView()
.AddGlue(0.5f)
.Add(fSearchTermsText, 1.0f)
.End()
.AddGroup(B_HORIZONTAL)
.Add(fAvailableCheckBox)
.Add(fInstalledCheckBox)
.Add(fDevelopmentCheckBox)
.Add(fSourceCodeCheckBox)
.AddGlue()
.End()
.SetInsets(B_USE_DEFAULT_SPACING)
;
@ -125,11 +96,6 @@ FilterView::AttachedToWindow()
fSearchTermsText->SetTarget(this);
fSearchTermsText->MakeFocus();
fAvailableCheckBox->SetTarget(Window());
fInstalledCheckBox->SetTarget(Window());
fDevelopmentCheckBox->SetTarget(Window());
fSourceCodeCheckBox->SetTarget(Window());
}
@ -184,17 +150,5 @@ FilterView::AdoptModel(const Model& model)
add_categories_to_menu(model.Categories(), showMenu);
showMenu->ItemAt(0)->SetMarked(true);
AdoptCheckmarks(model);
}
void
FilterView::AdoptCheckmarks(const Model& model)
{
fAvailableCheckBox->SetValue(model.ShowAvailablePackages());
fInstalledCheckBox->SetValue(model.ShowInstalledPackages());
fDevelopmentCheckBox->SetValue(model.ShowDevelopPackages());
fSourceCodeCheckBox->SetValue(model.ShowSourcePackages());
}

View File

@ -8,7 +8,6 @@
#include <GroupView.h>
class BCheckBox;
class BMenuField;
class BTextControl;
class Model;
@ -16,7 +15,6 @@ class Model;
enum {
MSG_CATEGORY_SELECTED = 'ctsl',
MSG_FILTER_SELECTED = 'ftsl',
MSG_DEPOT_SELECTED = 'dpsl',
MSG_SEARCH_TERMS_MODIFIED = 'stmd',
};
@ -31,17 +29,11 @@ public:
virtual void MessageReceived(BMessage* message);
void AdoptModel(const Model& model);
void AdoptCheckmarks(const Model& model);
private:
BMenuField* fShowField;
BMenuField* fRepositoryField;
BTextControl* fSearchTermsText;
BCheckBox* fAvailableCheckBox;
BCheckBox* fInstalledCheckBox;
BCheckBox* fDevelopmentCheckBox;
BCheckBox* fSourceCodeCheckBox;
};
#endif // FILTER_VIEW_H

View File

@ -60,6 +60,9 @@ enum {
MSG_LOG_OUT = 'lgot',
MSG_AUTHORIZATION_CHANGED = 'athc',
MSG_PACKAGE_STATE_CHANGED = 'mpsc',
MSG_SHOW_AVAILABLE_PACKAGES = 'savl',
MSG_SHOW_INSTALLED_PACKAGES = 'sins',
MSG_SHOW_SOURCE_PACKAGES = 'ssrc',
MSG_SHOW_DEVELOP_PACKAGES = 'sdvl'
};
@ -289,6 +292,24 @@ MainWindow::MessageReceived(BMessage* message)
_UpdateAuthorization();
break;
case MSG_SHOW_AVAILABLE_PACKAGES:
{
BAutolock locker(fModel.Lock());
fModel.SetShowAvailablePackages(
!fModel.ShowAvailablePackages());
}
_AdoptModel();
break;
case MSG_SHOW_INSTALLED_PACKAGES:
{
BAutolock locker(fModel.Lock());
fModel.SetShowInstalledPackages(
!fModel.ShowInstalledPackages());
}
_AdoptModel();
break;
case MSG_SHOW_SOURCE_PACKAGES:
{
BAutolock locker(fModel.Lock());
@ -337,36 +358,6 @@ MainWindow::MessageReceived(BMessage* message)
break;
}
case MSG_FILTER_SELECTED:
{
BString name;
int32 value;
if (message->FindString("name", &name) != B_OK
|| message->FindInt32("be:value", &value) != B_OK) {
break;
}
{
BAutolock locker(fModel.Lock());
if (name == "available") {
fModel.SetShowAvailablePackages(
value == B_CONTROL_ON);
} else if (name == "installed") {
fModel.SetShowInstalledPackages(
value == B_CONTROL_ON);
} else if (name == "development") {
fModel.SetShowDevelopPackages(
value == B_CONTROL_ON);
} else if (name == "source code") {
fModel.SetShowSourcePackages(
value == B_CONTROL_ON);
} else {
break;
}
}
_AdoptModel();
break;
}
case MSG_DEPOT_SELECTED:
{
BString name;
@ -481,18 +472,31 @@ MainWindow::_BuildMenu(BMenuBar* menuBar)
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);
menu = new BMenu(B_TRANSLATE("Options"));
fShowAvailablePackagesItem = new BMenuItem(
B_TRANSLATE("Show available packages"),
new BMessage(MSG_SHOW_AVAILABLE_PACKAGES));
menu->AddItem(fShowAvailablePackagesItem);
fShowInstalledPackagesItem = new BMenuItem(
B_TRANSLATE("Show installed packages"),
new BMessage(MSG_SHOW_INSTALLED_PACKAGES));
menu->AddItem(fShowInstalledPackagesItem);
menu->AddSeparatorItem();
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);
}
@ -546,9 +550,10 @@ MainWindow::_AdoptModel()
}
BAutolock locker(fModel.Lock());
// fShowSourcePackagesItem->SetMarked(fModel.ShowSourcePackages());
// fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
fFilterView->AdoptCheckmarks(fModel);
fShowAvailablePackagesItem->SetMarked(fModel.ShowAvailablePackages());
fShowInstalledPackagesItem->SetMarked(fModel.ShowInstalledPackages());
fShowSourcePackagesItem->SetMarked(fModel.ShowSourcePackages());
fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
}