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
-46
View File
@@ -9,7 +9,6 @@
#include <stdio.h> #include <stdio.h>
#include <Catalog.h> #include <Catalog.h>
#include <CheckBox.h>
#include <LayoutBuilder.h> #include <LayoutBuilder.h>
#include <MenuField.h> #include <MenuField.h>
#include <MenuItem.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() FilterView::FilterView()
: :
BGroupView("filter view", B_VERTICAL) BGroupView("filter view", B_VERTICAL)
@@ -78,16 +66,6 @@ FilterView::FilterView()
float maxSearchWidth = minSearchWidth * 2; float maxSearchWidth = minSearchWidth * 2;
fSearchTermsText->SetExplicitMaxSize(BSize(maxSearchWidth, B_SIZE_UNSET)); 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 // Build layout
BLayoutBuilder::Group<>(this) BLayoutBuilder::Group<>(this)
.AddGroup(B_HORIZONTAL) .AddGroup(B_HORIZONTAL)
@@ -99,13 +77,6 @@ FilterView::FilterView()
.AddGlue(0.5f) .AddGlue(0.5f)
.Add(fSearchTermsText, 1.0f) .Add(fSearchTermsText, 1.0f)
.End() .End()
.AddGroup(B_HORIZONTAL)
.Add(fAvailableCheckBox)
.Add(fInstalledCheckBox)
.Add(fDevelopmentCheckBox)
.Add(fSourceCodeCheckBox)
.AddGlue()
.End()
.SetInsets(B_USE_DEFAULT_SPACING) .SetInsets(B_USE_DEFAULT_SPACING)
; ;
@@ -125,11 +96,6 @@ FilterView::AttachedToWindow()
fSearchTermsText->SetTarget(this); fSearchTermsText->SetTarget(this);
fSearchTermsText->MakeFocus(); 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); add_categories_to_menu(model.Categories(), showMenu);
showMenu->ItemAt(0)->SetMarked(true); 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());
} }
-8
View File
@@ -8,7 +8,6 @@
#include <GroupView.h> #include <GroupView.h>
class BCheckBox;
class BMenuField; class BMenuField;
class BTextControl; class BTextControl;
class Model; class Model;
@@ -16,7 +15,6 @@ class Model;
enum { enum {
MSG_CATEGORY_SELECTED = 'ctsl', MSG_CATEGORY_SELECTED = 'ctsl',
MSG_FILTER_SELECTED = 'ftsl',
MSG_DEPOT_SELECTED = 'dpsl', MSG_DEPOT_SELECTED = 'dpsl',
MSG_SEARCH_TERMS_MODIFIED = 'stmd', MSG_SEARCH_TERMS_MODIFIED = 'stmd',
}; };
@@ -31,17 +29,11 @@ public:
virtual void MessageReceived(BMessage* message); virtual void MessageReceived(BMessage* message);
void AdoptModel(const Model& model); void AdoptModel(const Model& model);
void AdoptCheckmarks(const Model& model);
private: private:
BMenuField* fShowField; BMenuField* fShowField;
BMenuField* fRepositoryField; BMenuField* fRepositoryField;
BTextControl* fSearchTermsText; BTextControl* fSearchTermsText;
BCheckBox* fAvailableCheckBox;
BCheckBox* fInstalledCheckBox;
BCheckBox* fDevelopmentCheckBox;
BCheckBox* fSourceCodeCheckBox;
}; };
#endif // FILTER_VIEW_H #endif // FILTER_VIEW_H
+50 -45
View File
@@ -60,6 +60,9 @@ enum {
MSG_LOG_OUT = 'lgot', MSG_LOG_OUT = 'lgot',
MSG_AUTHORIZATION_CHANGED = 'athc', MSG_AUTHORIZATION_CHANGED = 'athc',
MSG_PACKAGE_STATE_CHANGED = 'mpsc', MSG_PACKAGE_STATE_CHANGED = 'mpsc',
MSG_SHOW_AVAILABLE_PACKAGES = 'savl',
MSG_SHOW_INSTALLED_PACKAGES = 'sins',
MSG_SHOW_SOURCE_PACKAGES = 'ssrc', MSG_SHOW_SOURCE_PACKAGES = 'ssrc',
MSG_SHOW_DEVELOP_PACKAGES = 'sdvl' MSG_SHOW_DEVELOP_PACKAGES = 'sdvl'
}; };
@@ -289,6 +292,24 @@ MainWindow::MessageReceived(BMessage* message)
_UpdateAuthorization(); _UpdateAuthorization();
break; 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: case MSG_SHOW_SOURCE_PACKAGES:
{ {
BAutolock locker(fModel.Lock()); BAutolock locker(fModel.Lock());
@@ -337,36 +358,6 @@ MainWindow::MessageReceived(BMessage* message)
break; 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: case MSG_DEPOT_SELECTED:
{ {
BString name; BString name;
@@ -481,18 +472,31 @@ MainWindow::_BuildMenu(BMenuBar* menuBar)
menuBar->AddItem(menu); menuBar->AddItem(menu);
// menu = new BMenu(B_TRANSLATE("Options")); menu = new BMenu(B_TRANSLATE("Options"));
//
// fShowDevelopPackagesItem = new BMenuItem( fShowAvailablePackagesItem = new BMenuItem(
// B_TRANSLATE("Show develop packages"), B_TRANSLATE("Show available packages"),
// new BMessage(MSG_SHOW_DEVELOP_PACKAGES)); new BMessage(MSG_SHOW_AVAILABLE_PACKAGES));
// menu->AddItem(fShowDevelopPackagesItem); menu->AddItem(fShowAvailablePackagesItem);
//
// fShowSourcePackagesItem = new BMenuItem(B_TRANSLATE("Show source packages"), fShowInstalledPackagesItem = new BMenuItem(
// new BMessage(MSG_SHOW_SOURCE_PACKAGES)); B_TRANSLATE("Show installed packages"),
// menu->AddItem(fShowSourcePackagesItem); new BMessage(MSG_SHOW_INSTALLED_PACKAGES));
// menu->AddItem(fShowInstalledPackagesItem);
// menuBar->AddItem(menu);
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()); BAutolock locker(fModel.Lock());
// fShowSourcePackagesItem->SetMarked(fModel.ShowSourcePackages()); fShowAvailablePackagesItem->SetMarked(fModel.ShowAvailablePackages());
// fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages()); fShowInstalledPackagesItem->SetMarked(fModel.ShowInstalledPackages());
fFilterView->AdoptCheckmarks(fModel); fShowSourcePackagesItem->SetMarked(fModel.ShowSourcePackages());
fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
} }