From fdec4227f5fc60024af6f092e1ae14f6425938b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sat, 25 Oct 2014 17:30:54 +0200 Subject: [PATCH] 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. --- src/apps/haikudepot/ui/FilterView.cpp | 46 ------------- src/apps/haikudepot/ui/FilterView.h | 8 --- src/apps/haikudepot/ui/MainWindow.cpp | 95 ++++++++++++++------------- 3 files changed, 50 insertions(+), 99 deletions(-) diff --git a/src/apps/haikudepot/ui/FilterView.cpp b/src/apps/haikudepot/ui/FilterView.cpp index 11c2c1bb41..c4e976329e 100644 --- a/src/apps/haikudepot/ui/FilterView.cpp +++ b/src/apps/haikudepot/ui/FilterView.cpp @@ -9,7 +9,6 @@ #include #include -#include #include #include #include @@ -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()); } diff --git a/src/apps/haikudepot/ui/FilterView.h b/src/apps/haikudepot/ui/FilterView.h index 056d889b55..4e444d6b4a 100644 --- a/src/apps/haikudepot/ui/FilterView.h +++ b/src/apps/haikudepot/ui/FilterView.h @@ -8,7 +8,6 @@ #include -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 diff --git a/src/apps/haikudepot/ui/MainWindow.cpp b/src/apps/haikudepot/ui/MainWindow.cpp index e1dddea2e7..71a33f5950 100644 --- a/src/apps/haikudepot/ui/MainWindow.cpp +++ b/src/apps/haikudepot/ui/MainWindow.cpp @@ -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()); }