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:
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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()),
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user