HaikuDepot: Replace the "featured packages" checkbox with tabs.

As discussed in #14598, there are now two tabs instead of the
checkbox: "Featured packages" and "All packages". It otherwise
behaves as before.

Also fixes #12428.
This commit is contained in:
Augustin Cavalier
2018-10-28 14:43:22 -04:00
parent 1562519066
commit e00a489b80
8 changed files with 59 additions and 50 deletions
@@ -348,7 +348,7 @@ private:
FeaturedPackagesView::FeaturedPackagesView() FeaturedPackagesView::FeaturedPackagesView()
: :
BView("featured package view", 0) BView(B_TRANSLATE("Featured packages"), 0)
{ {
BGroupLayout* layout = new BGroupLayout(B_VERTICAL); BGroupLayout* layout = new BGroupLayout(B_VERTICAL);
SetLayout(layout); SetLayout(layout);
-8
View File
@@ -46,10 +46,6 @@ FilterView::FilterView()
BPopUpMenu* showMenu = new BPopUpMenu(B_TRANSLATE("Category")); BPopUpMenu* showMenu = new BPopUpMenu(B_TRANSLATE("Category"));
fShowField = new BMenuField("category", B_TRANSLATE("Category:"), showMenu); fShowField = new BMenuField("category", B_TRANSLATE("Category:"), showMenu);
fShowFeaturedPackages = new BCheckBox("showonlyfeatured",
B_TRANSLATE("Show only featured packages"),
new BMessage(MSG_SHOW_FEATURED_PACKAGES));
// Construct search terms field // Construct search terms field
fSearchTermsText = new BTextControl("search terms", fSearchTermsText = new BTextControl("search terms",
B_TRANSLATE("Search terms:"), "", NULL); B_TRANSLATE("Search terms:"), "", NULL);
@@ -71,7 +67,6 @@ FilterView::FilterView()
.AddGroup(B_HORIZONTAL) .AddGroup(B_HORIZONTAL)
.AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING, 1.2f) .AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING, 1.2f)
.Add(fShowField, 0.0f) .Add(fShowField, 0.0f)
.Add(fShowFeaturedPackages, 0.0f)
.SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)) .SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET))
.End() .End()
.AddGlue(0.5f) .AddGlue(0.5f)
@@ -92,7 +87,6 @@ void
FilterView::AttachedToWindow() FilterView::AttachedToWindow()
{ {
fShowField->Menu()->SetTargetForItems(Window()); fShowField->Menu()->SetTargetForItems(Window());
fShowFeaturedPackages->SetTarget(Window());
fSearchTermsText->SetTarget(this); fSearchTermsText->SetTarget(this);
fSearchTermsText->MakeFocus(); fSearchTermsText->MakeFocus();
@@ -121,8 +115,6 @@ FilterView::MessageReceived(BMessage* message)
void void
FilterView::AdoptModel(const Model& model) FilterView::AdoptModel(const Model& model)
{ {
fShowFeaturedPackages->SetValue(model.ShowFeaturedPackages());
// Adopt categories // Adopt categories
BMenu* showMenu = fShowField->Menu(); BMenu* showMenu = fShowField->Menu();
showMenu->RemoveItems(0, showMenu->CountItems(), true); showMenu->RemoveItems(0, showMenu->CountItems(), true);
-2
View File
@@ -18,7 +18,6 @@ enum {
MSG_CATEGORY_SELECTED = 'ctsl', MSG_CATEGORY_SELECTED = 'ctsl',
MSG_DEPOT_SELECTED = 'dpsl', MSG_DEPOT_SELECTED = 'dpsl',
MSG_SEARCH_TERMS_MODIFIED = 'stmd', MSG_SEARCH_TERMS_MODIFIED = 'stmd',
MSG_SHOW_FEATURED_PACKAGES = 'sofp',
}; };
@@ -34,7 +33,6 @@ public:
private: private:
BMenuField* fShowField; BMenuField* fShowField;
BCheckBox* fShowFeaturedPackages;
BTextControl* fSearchTermsText; BTextControl* fSearchTermsText;
}; };
+15 -11
View File
@@ -76,6 +76,7 @@ enum {
MSG_AUTHORIZATION_CHANGED = 'athc', MSG_AUTHORIZATION_CHANGED = 'athc',
MSG_PACKAGE_CHANGED = 'pchd', MSG_PACKAGE_CHANGED = 'pchd',
MSG_SHOW_FEATURED_PACKAGES = 'sofp',
MSG_SHOW_AVAILABLE_PACKAGES = 'savl', MSG_SHOW_AVAILABLE_PACKAGES = 'savl',
MSG_SHOW_INSTALLED_PACKAGES = 'sins', MSG_SHOW_INSTALLED_PACKAGES = 'sins',
MSG_SHOW_SOURCE_PACKAGES = 'ssrc', MSG_SHOW_SOURCE_PACKAGES = 'ssrc',
@@ -156,11 +157,10 @@ MainWindow::MainWindow(const BMessage& settings)
fWorkStatusView = new WorkStatusView("work status"); fWorkStatusView = new WorkStatusView("work status");
fPackageListView->AttachWorkStatusView(fWorkStatusView); fPackageListView->AttachWorkStatusView(fWorkStatusView);
BView* listArea = new BView("list area", 0); fListTabs = new TabView(BMessenger(this),
fListLayout = new BCardLayout(); BMessage(MSG_SHOW_FEATURED_PACKAGES), "list tabs");
listArea->SetLayout(fListLayout); fListTabs->AddTab(fFeaturedPackagesView);
listArea->AddChild(fFeaturedPackagesView); fListTabs->AddTab(fPackageListView);
listArea->AddChild(fPackageListView);
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f) BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
.AddGroup(B_HORIZONTAL, 0.0f) .AddGroup(B_HORIZONTAL, 0.0f)
@@ -170,7 +170,7 @@ MainWindow::MainWindow(const BMessage& settings)
.Add(fFilterView) .Add(fFilterView)
.AddSplit(fSplitView) .AddSplit(fSplitView)
.AddGroup(B_VERTICAL) .AddGroup(B_VERTICAL)
.Add(listArea) .Add(fListTabs)
.SetInsets( .SetInsets(
B_USE_DEFAULT_SPACING, 0.0f, B_USE_DEFAULT_SPACING, 0.0f,
B_USE_DEFAULT_SPACING, 0.0f) B_USE_DEFAULT_SPACING, 0.0f)
@@ -203,9 +203,9 @@ MainWindow::MainWindow(const BMessage& settings)
fModel.SetShowSourcePackages(showOption); fModel.SetShowSourcePackages(showOption);
if (fModel.ShowFeaturedPackages()) if (fModel.ShowFeaturedPackages())
fListLayout->SetVisibleItem((int32)0); fListTabs->Select(0);
else else
fListLayout->SetVisibleItem(1); fListTabs->Select(1);
_RestoreUserName(settings); _RestoreUserName(settings);
_RestoreWindowFrame(settings); _RestoreWindowFrame(settings);
@@ -348,10 +348,14 @@ MainWindow::MessageReceived(BMessage* message)
break; break;
case MSG_SHOW_FEATURED_PACKAGES: case MSG_SHOW_FEATURED_PACKAGES:
// check to see if we aren't already on the current tab
if (fListTabs->Selection() ==
(fModel.ShowFeaturedPackages() ? 0 : 1))
break;
{ {
BAutolock locker(fModel.Lock()); BAutolock locker(fModel.Lock());
fModel.SetShowFeaturedPackages( fModel.SetShowFeaturedPackages(
!fModel.ShowFeaturedPackages()); fListTabs->Selection() == 0);
} }
_AdoptModel(); _AdoptModel();
break; break;
@@ -849,9 +853,9 @@ MainWindow::_AdoptModel()
fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages()); fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
if (fModel.ShowFeaturedPackages()) if (fModel.ShowFeaturedPackages())
fListLayout->SetVisibleItem((int32)0); fListTabs->Select(0);
else else
fListLayout->SetVisibleItem((int32)1); fListTabs->Select(1);
fFilterView->AdoptModel(fModel); fFilterView->AdoptModel(fModel);
} }
+2 -1
View File
@@ -10,6 +10,7 @@
#include <Window.h> #include <Window.h>
#include "TabView.h"
#include "BulkLoadStateMachine.h" #include "BulkLoadStateMachine.h"
#include "Model.h" #include "Model.h"
#include "PackageAction.h" #include "PackageAction.h"
@@ -94,7 +95,7 @@ private:
private: private:
FilterView* fFilterView; FilterView* fFilterView;
BCardLayout* fListLayout; TabView* fListTabs;
FeaturedPackagesView* fFeaturedPackagesView; FeaturedPackagesView* fFeaturedPackagesView;
PackageListView* fPackageListView; PackageListView* fPackageListView;
PackageInfoView* fPackageInfoView; PackageInfoView* fPackageInfoView;
+1 -1
View File
@@ -772,7 +772,7 @@ struct PackageListView::RowByNameHashDefinition {
PackageListView::PackageListView(BLocker* modelLock) PackageListView::PackageListView(BLocker* modelLock)
: :
BColumnListView("package list view", 0, B_FANCY_BORDER, true), BColumnListView(B_TRANSLATE("All packages"), 0, B_FANCY_BORDER, true),
fModelLock(modelLock), fModelLock(modelLock),
fPackageListener(new(std::nothrow) PackageListener(this)), fPackageListener(new(std::nothrow) PackageListener(this)),
fRowByNameTable(new RowByNameTable()), fRowByNameTable(new RowByNameTable()),
+39
View File
@@ -0,0 +1,39 @@
/*
* Copyright 2014, Stephan Aßmus <[email protected]>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef TABVIEW_H
#define TABVIEW_H
#include <Messenger.h>
#include <TabView.h>
class TabView : public BTabView {
public:
TabView(const BMessenger& target, const BMessage& message,
const char* name = "tab view")
:
BTabView(name, B_WIDTH_FROM_WIDEST),
fTarget(target),
fMessage(message)
{
}
virtual void Select(int32 tabIndex)
{
BTabView::Select(tabIndex);
BMessage message(fMessage);
message.AddInt32("tab index", tabIndex);
fTarget.SendMessage(&message);
}
private:
BMessenger fTarget;
BMessage fMessage;
};
#endif // TABVIEW_H
+1 -26
View File
@@ -17,12 +17,12 @@
#include <LayoutBuilder.h> #include <LayoutBuilder.h>
#include <MenuField.h> #include <MenuField.h>
#include <PopUpMenu.h> #include <PopUpMenu.h>
#include <TabView.h>
#include <TextControl.h> #include <TextControl.h>
#include <UnicodeChar.h> #include <UnicodeChar.h>
#include "BitmapView.h" #include "BitmapView.h"
#include "Model.h" #include "Model.h"
#include "TabView.h"
#include "WebAppInterface.h" #include "WebAppInterface.h"
@@ -39,31 +39,6 @@ enum {
}; };
class TabView : public BTabView {
public:
TabView(const BMessenger& target, const BMessage& message)
:
BTabView("tab view", B_WIDTH_FROM_WIDEST),
fTarget(target),
fMessage(message)
{
}
virtual void Select(int32 tabIndex)
{
BTabView::Select(tabIndex);
BMessage message(fMessage);
message.AddInt32("tab index", tabIndex);
fTarget.SendMessage(&message);
}
private:
BMessenger fTarget;
BMessage fMessage;
};
static void static void
add_languages_to_menu(const StringList& languages, BMenu* menu) add_languages_to_menu(const StringList& languages, BMenu* menu)
{ {