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:
parent
1562519066
commit
e00a489b80
@ -348,7 +348,7 @@ private:
|
||||
|
||||
FeaturedPackagesView::FeaturedPackagesView()
|
||||
:
|
||||
BView("featured package view", 0)
|
||||
BView(B_TRANSLATE("Featured packages"), 0)
|
||||
{
|
||||
BGroupLayout* layout = new BGroupLayout(B_VERTICAL);
|
||||
SetLayout(layout);
|
||||
|
@ -46,10 +46,6 @@ FilterView::FilterView()
|
||||
BPopUpMenu* showMenu = new BPopUpMenu(B_TRANSLATE("Category"));
|
||||
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
|
||||
fSearchTermsText = new BTextControl("search terms",
|
||||
B_TRANSLATE("Search terms:"), "", NULL);
|
||||
@ -71,7 +67,6 @@ FilterView::FilterView()
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING, 1.2f)
|
||||
.Add(fShowField, 0.0f)
|
||||
.Add(fShowFeaturedPackages, 0.0f)
|
||||
.SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET))
|
||||
.End()
|
||||
.AddGlue(0.5f)
|
||||
@ -92,7 +87,6 @@ void
|
||||
FilterView::AttachedToWindow()
|
||||
{
|
||||
fShowField->Menu()->SetTargetForItems(Window());
|
||||
fShowFeaturedPackages->SetTarget(Window());
|
||||
fSearchTermsText->SetTarget(this);
|
||||
|
||||
fSearchTermsText->MakeFocus();
|
||||
@ -121,8 +115,6 @@ FilterView::MessageReceived(BMessage* message)
|
||||
void
|
||||
FilterView::AdoptModel(const Model& model)
|
||||
{
|
||||
fShowFeaturedPackages->SetValue(model.ShowFeaturedPackages());
|
||||
|
||||
// Adopt categories
|
||||
BMenu* showMenu = fShowField->Menu();
|
||||
showMenu->RemoveItems(0, showMenu->CountItems(), true);
|
||||
|
@ -18,7 +18,6 @@ enum {
|
||||
MSG_CATEGORY_SELECTED = 'ctsl',
|
||||
MSG_DEPOT_SELECTED = 'dpsl',
|
||||
MSG_SEARCH_TERMS_MODIFIED = 'stmd',
|
||||
MSG_SHOW_FEATURED_PACKAGES = 'sofp',
|
||||
};
|
||||
|
||||
|
||||
@ -34,7 +33,6 @@ public:
|
||||
|
||||
private:
|
||||
BMenuField* fShowField;
|
||||
BCheckBox* fShowFeaturedPackages;
|
||||
BTextControl* fSearchTermsText;
|
||||
};
|
||||
|
||||
|
@ -76,6 +76,7 @@ enum {
|
||||
MSG_AUTHORIZATION_CHANGED = 'athc',
|
||||
MSG_PACKAGE_CHANGED = 'pchd',
|
||||
|
||||
MSG_SHOW_FEATURED_PACKAGES = 'sofp',
|
||||
MSG_SHOW_AVAILABLE_PACKAGES = 'savl',
|
||||
MSG_SHOW_INSTALLED_PACKAGES = 'sins',
|
||||
MSG_SHOW_SOURCE_PACKAGES = 'ssrc',
|
||||
@ -156,11 +157,10 @@ MainWindow::MainWindow(const BMessage& settings)
|
||||
fWorkStatusView = new WorkStatusView("work status");
|
||||
fPackageListView->AttachWorkStatusView(fWorkStatusView);
|
||||
|
||||
BView* listArea = new BView("list area", 0);
|
||||
fListLayout = new BCardLayout();
|
||||
listArea->SetLayout(fListLayout);
|
||||
listArea->AddChild(fFeaturedPackagesView);
|
||||
listArea->AddChild(fPackageListView);
|
||||
fListTabs = new TabView(BMessenger(this),
|
||||
BMessage(MSG_SHOW_FEATURED_PACKAGES), "list tabs");
|
||||
fListTabs->AddTab(fFeaturedPackagesView);
|
||||
fListTabs->AddTab(fPackageListView);
|
||||
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
|
||||
.AddGroup(B_HORIZONTAL, 0.0f)
|
||||
@ -170,7 +170,7 @@ MainWindow::MainWindow(const BMessage& settings)
|
||||
.Add(fFilterView)
|
||||
.AddSplit(fSplitView)
|
||||
.AddGroup(B_VERTICAL)
|
||||
.Add(listArea)
|
||||
.Add(fListTabs)
|
||||
.SetInsets(
|
||||
B_USE_DEFAULT_SPACING, 0.0f,
|
||||
B_USE_DEFAULT_SPACING, 0.0f)
|
||||
@ -203,9 +203,9 @@ MainWindow::MainWindow(const BMessage& settings)
|
||||
fModel.SetShowSourcePackages(showOption);
|
||||
|
||||
if (fModel.ShowFeaturedPackages())
|
||||
fListLayout->SetVisibleItem((int32)0);
|
||||
fListTabs->Select(0);
|
||||
else
|
||||
fListLayout->SetVisibleItem(1);
|
||||
fListTabs->Select(1);
|
||||
|
||||
_RestoreUserName(settings);
|
||||
_RestoreWindowFrame(settings);
|
||||
@ -348,10 +348,14 @@ MainWindow::MessageReceived(BMessage* message)
|
||||
break;
|
||||
|
||||
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());
|
||||
fModel.SetShowFeaturedPackages(
|
||||
!fModel.ShowFeaturedPackages());
|
||||
fListTabs->Selection() == 0);
|
||||
}
|
||||
_AdoptModel();
|
||||
break;
|
||||
@ -849,9 +853,9 @@ MainWindow::_AdoptModel()
|
||||
fShowDevelopPackagesItem->SetMarked(fModel.ShowDevelopPackages());
|
||||
|
||||
if (fModel.ShowFeaturedPackages())
|
||||
fListLayout->SetVisibleItem((int32)0);
|
||||
fListTabs->Select(0);
|
||||
else
|
||||
fListLayout->SetVisibleItem((int32)1);
|
||||
fListTabs->Select(1);
|
||||
|
||||
fFilterView->AdoptModel(fModel);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include <Window.h>
|
||||
|
||||
#include "TabView.h"
|
||||
#include "BulkLoadStateMachine.h"
|
||||
#include "Model.h"
|
||||
#include "PackageAction.h"
|
||||
@ -94,7 +95,7 @@ private:
|
||||
|
||||
private:
|
||||
FilterView* fFilterView;
|
||||
BCardLayout* fListLayout;
|
||||
TabView* fListTabs;
|
||||
FeaturedPackagesView* fFeaturedPackagesView;
|
||||
PackageListView* fPackageListView;
|
||||
PackageInfoView* fPackageInfoView;
|
||||
|
@ -772,7 +772,7 @@ struct PackageListView::RowByNameHashDefinition {
|
||||
|
||||
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),
|
||||
fPackageListener(new(std::nothrow) PackageListener(this)),
|
||||
fRowByNameTable(new RowByNameTable()),
|
||||
|
39
src/apps/haikudepot/ui/TabView.h
Normal file
39
src/apps/haikudepot/ui/TabView.h
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
|
||||
* 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
|
@ -17,12 +17,12 @@
|
||||
#include <LayoutBuilder.h>
|
||||
#include <MenuField.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <TabView.h>
|
||||
#include <TextControl.h>
|
||||
#include <UnicodeChar.h>
|
||||
|
||||
#include "BitmapView.h"
|
||||
#include "Model.h"
|
||||
#include "TabView.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
|
||||
add_languages_to_menu(const StringList& languages, BMenu* menu)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user