HaikuDepot: Switched back to actual BTabView
* Instead of showing all package actions along the bottom of the window, only the applicable actions are shown, but besides the package title. * The radio buttons are gone, instead an actual BTabView is used, but now in a more pretty way. * The package info content stretches to the window border which will make showing a vertical scroll bar look better.
This commit is contained in:
@@ -8,7 +8,6 @@ Application HaikuDepot :
|
|||||||
main.cpp
|
main.cpp
|
||||||
MainWindow.cpp
|
MainWindow.cpp
|
||||||
Model.cpp
|
Model.cpp
|
||||||
PackageActionsView.cpp
|
|
||||||
PackageInfo.cpp
|
PackageInfo.cpp
|
||||||
PackageInfoView.cpp
|
PackageInfoView.cpp
|
||||||
PackageListView.cpp
|
PackageListView.cpp
|
||||||
@@ -25,7 +24,6 @@ DoCatalogs HaikuDepot :
|
|||||||
App.cpp
|
App.cpp
|
||||||
FilterView.cpp
|
FilterView.cpp
|
||||||
MainWindow.cpp
|
MainWindow.cpp
|
||||||
PackageActionsView.cpp
|
|
||||||
PackageInfoView.cpp
|
PackageInfoView.cpp
|
||||||
PackageListView.cpp
|
PackageListView.cpp
|
||||||
PackageManager.cpp
|
PackageManager.cpp
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#include <TabView.h>
|
#include <TabView.h>
|
||||||
|
|
||||||
#include "FilterView.h"
|
#include "FilterView.h"
|
||||||
#include "PackageActionsView.h"
|
|
||||||
#include "PackageInfoView.h"
|
#include "PackageInfoView.h"
|
||||||
#include "PackageListView.h"
|
#include "PackageListView.h"
|
||||||
|
|
||||||
@@ -39,22 +38,21 @@ MainWindow::MainWindow(BRect frame)
|
|||||||
|
|
||||||
fFilterView = new FilterView();
|
fFilterView = new FilterView();
|
||||||
fPackageListView = new PackageListView();
|
fPackageListView = new PackageListView();
|
||||||
fPackageInfoView = new PackageInfoView();
|
fPackageInfoView = new PackageInfoView(&fPackageManager);
|
||||||
fPackageActionsView = new PackageActionsView();
|
|
||||||
|
|
||||||
fSplitView = new BSplitView(B_VERTICAL, B_USE_SMALL_SPACING);
|
fSplitView = new BSplitView(B_VERTICAL, B_USE_SMALL_SPACING);
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
|
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
|
||||||
.Add(menuBar)
|
.Add(menuBar)
|
||||||
.Add(fFilterView)
|
.Add(fFilterView)
|
||||||
.AddGroup(B_VERTICAL)
|
.AddSplit(fSplitView)
|
||||||
.AddSplit(fSplitView)
|
.AddGroup(B_VERTICAL)
|
||||||
.Add(fPackageListView)
|
.Add(fPackageListView)
|
||||||
.Add(fPackageInfoView)
|
.SetInsets(
|
||||||
|
B_USE_DEFAULT_SPACING, 0.0f,
|
||||||
|
B_USE_DEFAULT_SPACING, 0.0f)
|
||||||
.End()
|
.End()
|
||||||
.Add(fPackageActionsView)
|
.Add(fPackageInfoView)
|
||||||
.SetInsets(B_USE_DEFAULT_SPACING, 0.0f, B_USE_DEFAULT_SPACING,
|
|
||||||
B_USE_DEFAULT_SPACING)
|
|
||||||
.End()
|
.End()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
#include "Model.h"
|
#include "Model.h"
|
||||||
|
#include "PackageManager.h"
|
||||||
|
|
||||||
|
|
||||||
class BSplitView;
|
class BSplitView;
|
||||||
@@ -43,11 +44,12 @@ private:
|
|||||||
FilterView* fFilterView;
|
FilterView* fFilterView;
|
||||||
PackageListView* fPackageListView;
|
PackageListView* fPackageListView;
|
||||||
PackageInfoView* fPackageInfoView;
|
PackageInfoView* fPackageInfoView;
|
||||||
PackageActionsView* fPackageActionsView;
|
|
||||||
BSplitView* fSplitView;
|
BSplitView* fSplitView;
|
||||||
|
|
||||||
Model fModel;
|
Model fModel;
|
||||||
PackageInfoList fVisiblePackages;
|
PackageInfoList fVisiblePackages;
|
||||||
|
|
||||||
|
PackageManager fPackageManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAIN_WINDOW_H
|
#endif // MAIN_WINDOW_H
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013, Stephan Aßmus <[email protected]>.
|
|
||||||
* All rights reserved. Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "PackageActionsView.h"
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include <Button.h>
|
|
||||||
#include <Catalog.h>
|
|
||||||
#include <LayoutBuilder.h>
|
|
||||||
#include <Message.h>
|
|
||||||
|
|
||||||
|
|
||||||
#undef B_TRANSLATION_CONTEXT
|
|
||||||
#define B_TRANSLATION_CONTEXT "PackageActionsView"
|
|
||||||
|
|
||||||
|
|
||||||
enum {
|
|
||||||
MSG_INSTALL = 'inst',
|
|
||||||
MSG_TOGGLE_ACTIVE = 'tgac',
|
|
||||||
MSG_UPDATE = 'stmd',
|
|
||||||
MSG_UNINSTALL = 'dein',
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
PackageActionsView::PackageActionsView()
|
|
||||||
:
|
|
||||||
BGroupView("package actions view")
|
|
||||||
{
|
|
||||||
// Contruct action buttons
|
|
||||||
fInstallButton = new BButton("install", B_TRANSLATE("Install"),
|
|
||||||
new BMessage(MSG_INSTALL));
|
|
||||||
|
|
||||||
fToggleActiveButton = new BButton("toggle active",
|
|
||||||
B_TRANSLATE("Deactivate"), new BMessage(MSG_TOGGLE_ACTIVE));
|
|
||||||
|
|
||||||
fUpdateButton = new BButton("update",
|
|
||||||
B_TRANSLATE("Update"), new BMessage(MSG_UPDATE));
|
|
||||||
|
|
||||||
fUninstallButton = new BButton("uninstall", B_TRANSLATE("Uninstall"),
|
|
||||||
new BMessage(MSG_UNINSTALL));
|
|
||||||
|
|
||||||
// Build layout
|
|
||||||
BLayoutBuilder::Group<>(this)
|
|
||||||
.AddGlue(1.0f)
|
|
||||||
.Add(fUninstallButton)
|
|
||||||
.AddGlue(0.1f)
|
|
||||||
.Add(fUpdateButton)
|
|
||||||
.Add(fToggleActiveButton)
|
|
||||||
.Add(fInstallButton)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PackageActionsView::~PackageActionsView()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PackageActionsView::AttachedToWindow()
|
|
||||||
{
|
|
||||||
fInstallButton->SetTarget(this);
|
|
||||||
fToggleActiveButton->SetTarget(this);
|
|
||||||
fUpdateButton->SetTarget(this);
|
|
||||||
fUninstallButton->SetTarget(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PackageActionsView::MessageReceived(BMessage* message)
|
|
||||||
{
|
|
||||||
switch (message->what) {
|
|
||||||
default:
|
|
||||||
BGroupView::MessageReceived(message);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013, Stephan Aßmus <[email protected]>.
|
|
||||||
* All rights reserved. Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
#ifndef PACKAGE_ACTIONS_VIEW_H
|
|
||||||
#define PACKAGE_ACTIONS_VIEW_H
|
|
||||||
|
|
||||||
#include <GroupView.h>
|
|
||||||
|
|
||||||
|
|
||||||
class BButton;
|
|
||||||
|
|
||||||
|
|
||||||
class PackageActionsView : public BGroupView {
|
|
||||||
public:
|
|
||||||
PackageActionsView();
|
|
||||||
virtual ~PackageActionsView();
|
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
|
||||||
|
|
||||||
private:
|
|
||||||
BButton* fInstallButton;
|
|
||||||
BButton* fToggleActiveButton;
|
|
||||||
BButton* fUpdateButton;
|
|
||||||
BButton* fUninstallButton;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // PACKAGE_ACTIONS_VIEW_H
|
|
||||||
@@ -15,16 +15,19 @@
|
|||||||
#include <Font.h>
|
#include <Font.h>
|
||||||
#include <LayoutBuilder.h>
|
#include <LayoutBuilder.h>
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
#include <RadioButton.h>
|
#include <TabView.h>
|
||||||
#include <SpaceLayoutItem.h>
|
#include <SpaceLayoutItem.h>
|
||||||
#include <StringView.h>
|
#include <StringView.h>
|
||||||
|
|
||||||
|
#include "PackageManager.h"
|
||||||
|
|
||||||
|
|
||||||
#undef B_TRANSLATION_CONTEXT
|
#undef B_TRANSLATION_CONTEXT
|
||||||
#define B_TRANSLATION_CONTEXT "PackageInfoView"
|
#define B_TRANSLATION_CONTEXT "PackageInfoView"
|
||||||
|
|
||||||
|
|
||||||
static const rgb_color kLightBlack = (rgb_color){ 60, 60, 60, 255 };
|
static const rgb_color kLightBlack = (rgb_color){ 60, 60, 60, 255 };
|
||||||
|
static const float kContentTint = (B_NO_TINT + B_LIGHTEN_1_TINT) / 2.0f;
|
||||||
|
|
||||||
|
|
||||||
class BitmapView : public BView {
|
class BitmapView : public BView {
|
||||||
@@ -43,6 +46,13 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void AttachedToWindow()
|
||||||
|
{
|
||||||
|
BView* parent = Parent();
|
||||||
|
if (parent != NULL)
|
||||||
|
SetLowColor(parent->ViewColor());
|
||||||
|
}
|
||||||
|
|
||||||
virtual void Draw(BRect updateRect)
|
virtual void Draw(BRect updateRect)
|
||||||
{
|
{
|
||||||
BRect bounds(Bounds());
|
BRect bounds(Bounds());
|
||||||
@@ -180,9 +190,7 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MSG_SHOW_ABOUT_PAGE = 'shap',
|
MSG_PACKAGE_ACTION = 'pkga',
|
||||||
MSG_SHOW_RATINGS_PAGE = 'shrp',
|
|
||||||
MSG_SHOW_CHANGELOG_PAGE = 'shcp',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -232,22 +240,11 @@ public:
|
|||||||
fVoteInfo->SetFont(&font);
|
fVoteInfo->SetFont(&font);
|
||||||
fVoteInfo->SetHighColor(kLightBlack);
|
fVoteInfo->SetHighColor(kLightBlack);
|
||||||
|
|
||||||
fAboutPageButton = new BRadioButton("about page button",
|
|
||||||
B_TRANSLATE("About"), new BMessage(MSG_SHOW_ABOUT_PAGE));
|
|
||||||
fAboutPageButton->SetValue(B_CONTROL_ON);
|
|
||||||
|
|
||||||
fRatingsPageButton = new BRadioButton("ratings page button",
|
|
||||||
B_TRANSLATE("Ratings"), new BMessage(MSG_SHOW_RATINGS_PAGE));
|
|
||||||
|
|
||||||
fChangelogPageButton = new BRadioButton("changelog page button",
|
|
||||||
B_TRANSLATE("Changelog"), new BMessage(MSG_SHOW_CHANGELOG_PAGE));
|
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this)
|
BLayoutBuilder::Group<>(this)
|
||||||
.Add(fIconView)
|
.Add(fIconView)
|
||||||
.AddGroup(B_VERTICAL, 1.0f)
|
.AddGroup(B_VERTICAL, 1.0f)
|
||||||
.Add(fTitleView)
|
.Add(fTitleView)
|
||||||
.Add(fPublisherView)
|
.Add(fPublisherView)
|
||||||
// .SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET))
|
|
||||||
.End()
|
.End()
|
||||||
.AddGlue(0.2f)
|
.AddGlue(0.2f)
|
||||||
.AddGroup(B_HORIZONTAL, B_USE_SMALL_SPACING)
|
.AddGroup(B_HORIZONTAL, B_USE_SMALL_SPACING)
|
||||||
@@ -256,9 +253,6 @@ public:
|
|||||||
.Add(fVoteInfo)
|
.Add(fVoteInfo)
|
||||||
.End()
|
.End()
|
||||||
.AddGlue(3.0f)
|
.AddGlue(3.0f)
|
||||||
.Add(fAboutPageButton)
|
|
||||||
.Add(fRatingsPageButton)
|
|
||||||
.Add(fChangelogPageButton)
|
|
||||||
;
|
;
|
||||||
|
|
||||||
Clear();
|
Clear();
|
||||||
@@ -268,13 +262,6 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTarget(BHandler* handler)
|
|
||||||
{
|
|
||||||
fAboutPageButton->SetTarget(handler);
|
|
||||||
fRatingsPageButton->SetTarget(handler);
|
|
||||||
fChangelogPageButton->SetTarget(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPackage(const PackageInfo& package)
|
void SetPackage(const PackageInfo& package)
|
||||||
{
|
{
|
||||||
if (package.Icon().Get() != NULL)
|
if (package.Icon().Get() != NULL)
|
||||||
@@ -304,33 +291,18 @@ public:
|
|||||||
|
|
||||||
fVoteInfo->SetText(voteInfo);
|
fVoteInfo->SetText(voteInfo);
|
||||||
|
|
||||||
if (fAboutPageButton->IsHidden(fAboutPageButton))
|
|
||||||
fAboutPageButton->Show();
|
|
||||||
if (fRatingsPageButton->IsHidden(fRatingsPageButton))
|
|
||||||
fRatingsPageButton->Show();
|
|
||||||
if (fChangelogPageButton->IsHidden(fChangelogPageButton))
|
|
||||||
fChangelogPageButton->Show();
|
|
||||||
|
|
||||||
fAboutPageButton->SetValue(B_CONTROL_ON);
|
|
||||||
|
|
||||||
InvalidateLayout();
|
InvalidateLayout();
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clear()
|
void Clear()
|
||||||
{
|
{
|
||||||
|
fIconView->SetBitmap(NULL);
|
||||||
fTitleView->SetText("");
|
fTitleView->SetText("");
|
||||||
fPublisherView->SetText("");
|
fPublisherView->SetText("");
|
||||||
fRatingView->SetRating(-1.0f);
|
fRatingView->SetRating(-1.0f);
|
||||||
fAvgRating->SetText("");
|
fAvgRating->SetText("");
|
||||||
fVoteInfo->SetText("");
|
fVoteInfo->SetText("");
|
||||||
|
|
||||||
if (!fAboutPageButton->IsHidden(fAboutPageButton))
|
|
||||||
fAboutPageButton->Hide();
|
|
||||||
if (!fRatingsPageButton->IsHidden(fRatingsPageButton))
|
|
||||||
fRatingsPageButton->Hide();
|
|
||||||
if (!fChangelogPageButton->IsHidden(fChangelogPageButton))
|
|
||||||
fChangelogPageButton->Hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -342,10 +314,94 @@ private:
|
|||||||
RatingView* fRatingView;
|
RatingView* fRatingView;
|
||||||
BStringView* fAvgRating;
|
BStringView* fAvgRating;
|
||||||
BStringView* fVoteInfo;
|
BStringView* fVoteInfo;
|
||||||
|
};
|
||||||
|
|
||||||
BRadioButton* fAboutPageButton;
|
|
||||||
BRadioButton* fRatingsPageButton;
|
// #pragma mark - PackageActionView
|
||||||
BRadioButton* fChangelogPageButton;
|
|
||||||
|
|
||||||
|
class PackageActionView : public BView {
|
||||||
|
public:
|
||||||
|
PackageActionView(PackageManager* packageManager)
|
||||||
|
:
|
||||||
|
BView("about view", B_WILL_DRAW),
|
||||||
|
fPackageManager(packageManager),
|
||||||
|
fLayout(new BGroupLayout(B_HORIZONTAL))
|
||||||
|
{
|
||||||
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
|
SetLayout(fLayout);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~PackageActionView()
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void MessageReceived(BMessage* message)
|
||||||
|
{
|
||||||
|
switch (message->what) {
|
||||||
|
case MSG_PACKAGE_ACTION:
|
||||||
|
{
|
||||||
|
int32 index;
|
||||||
|
if (message->FindInt32("index", &index) == B_OK) {
|
||||||
|
const PackageActionRef& action
|
||||||
|
= fPackageActions.ItemAt(index);
|
||||||
|
if (action.Get() != NULL) {
|
||||||
|
status_t result = action->Perform();
|
||||||
|
if (result != B_OK) {
|
||||||
|
fprintf(stderr, "Package action failed: %s '%s'\n",
|
||||||
|
action->Label(),
|
||||||
|
action->Package().Title().String());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
BView::MessageReceived(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetPackage(const PackageInfo& package)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
fPackageActions = fPackageManager->GetPackageActions(package);
|
||||||
|
|
||||||
|
// Add Buttons in reverse action order
|
||||||
|
for (int32 i = fPackageActions.CountItems() - 1; i >= 0; i--) {
|
||||||
|
const PackageActionRef& action = fPackageActions.ItemAtFast(i);
|
||||||
|
|
||||||
|
BMessage* message = new BMessage(MSG_PACKAGE_ACTION);
|
||||||
|
message->AddInt32("index", i);
|
||||||
|
|
||||||
|
BButton* button = new BButton(action->Label(), message);
|
||||||
|
fLayout->AddView(button);
|
||||||
|
button->SetTarget(this);
|
||||||
|
|
||||||
|
fButtons.AddItem(button);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{
|
||||||
|
for (int32 i = fButtons.CountItems() - 1; i >= 0; i--) {
|
||||||
|
BButton* button = (BButton*)fButtons.ItemAtFast(i);
|
||||||
|
button->RemoveSelf();
|
||||||
|
delete button;
|
||||||
|
}
|
||||||
|
fButtons.MakeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
PackageManager* fPackageManager;
|
||||||
|
|
||||||
|
BGroupLayout* fLayout;
|
||||||
|
PackageActionList fPackageActions;
|
||||||
|
BList fButtons;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -356,18 +412,20 @@ class AboutView : public BView {
|
|||||||
public:
|
public:
|
||||||
AboutView()
|
AboutView()
|
||||||
:
|
:
|
||||||
BView("about view", B_WILL_DRAW),
|
BView("about view", 0),
|
||||||
fLayout(new BGroupLayout(B_HORIZONTAL)),
|
fLayout(new BGroupLayout(B_HORIZONTAL)),
|
||||||
fEmailIcon("text/x-email"),
|
fEmailIcon("text/x-email"),
|
||||||
fWebsiteIcon("text/html")
|
fWebsiteIcon("text/html")
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR),
|
||||||
|
kContentTint));
|
||||||
|
|
||||||
SetLayout(fLayout);
|
SetLayout(fLayout);
|
||||||
|
|
||||||
fDescriptionView = new BTextView("description view");
|
fDescriptionView = new BTextView("description view");
|
||||||
fDescriptionView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
fDescriptionView->SetViewColor(ViewColor());
|
||||||
fDescriptionView->MakeEditable(false);
|
fDescriptionView->MakeEditable(false);
|
||||||
|
fDescriptionView->SetInsets(0.0f, be_plain_font->Size(), 0.0f, 0.0f);
|
||||||
|
|
||||||
BFont smallFont;
|
BFont smallFont;
|
||||||
GetFont(&smallFont);
|
GetFont(&smallFont);
|
||||||
@@ -384,6 +442,7 @@ public:
|
|||||||
fWebsiteLinkView->SetHighColor(kLightBlack);
|
fWebsiteLinkView->SetHighColor(kLightBlack);
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(fLayout)
|
BLayoutBuilder::Group<>(fLayout)
|
||||||
|
.Add(BSpaceLayoutItem::CreateHorizontalStrut(32.0f))
|
||||||
.Add(fDescriptionView, 1.0f)
|
.Add(fDescriptionView, 1.0f)
|
||||||
.AddGroup(B_VERTICAL, 0.0f)
|
.AddGroup(B_VERTICAL, 0.0f)
|
||||||
.AddGlue()
|
.AddGlue()
|
||||||
@@ -394,10 +453,12 @@ public:
|
|||||||
.Add(fEmailLinkView, 1, 0)
|
.Add(fEmailLinkView, 1, 0)
|
||||||
.Add(fWebsiteIconView, 0, 1)
|
.Add(fWebsiteIconView, 0, 1)
|
||||||
.Add(fWebsiteLinkView, 1, 1)
|
.Add(fWebsiteLinkView, 1, 1)
|
||||||
|
.SetInsets(B_USE_DEFAULT_SPACING)
|
||||||
.End()
|
.End()
|
||||||
.End()
|
.End()
|
||||||
.End()
|
.End()
|
||||||
.SetExplicitMaxSize(BSize(B_SIZE_UNSET, B_SIZE_UNLIMITED))
|
.SetExplicitMaxSize(BSize(B_SIZE_UNSET, B_SIZE_UNLIMITED))
|
||||||
|
.SetInsets(B_USE_DEFAULT_SPACING, 0.0f, 0.0f, 0.0f)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,10 +467,6 @@ public:
|
|||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void Draw(BRect updateRect)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPackage(const PackageInfo& package)
|
void SetPackage(const PackageInfo& package)
|
||||||
{
|
{
|
||||||
fDescriptionView->SetText(package.FullDescription());
|
fDescriptionView->SetText(package.FullDescription());
|
||||||
@@ -449,19 +506,23 @@ class UserRatingsView : public BView {
|
|||||||
public:
|
public:
|
||||||
UserRatingsView()
|
UserRatingsView()
|
||||||
:
|
:
|
||||||
BView("package ratings view", B_WILL_DRAW),
|
BView("package ratings view", 0),
|
||||||
fLayout(new BGroupLayout(B_HORIZONTAL))
|
fLayout(new BGroupLayout(B_HORIZONTAL))
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR),
|
||||||
|
kContentTint));
|
||||||
|
|
||||||
SetLayout(fLayout);
|
SetLayout(fLayout);
|
||||||
|
|
||||||
fTextView = new BTextView("ratings view");
|
fTextView = new BTextView("ratings view");
|
||||||
fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
fTextView->SetViewColor(ViewColor());
|
||||||
fTextView->MakeEditable(false);
|
fTextView->MakeEditable(false);
|
||||||
|
fTextView->SetInsets(0.0f, be_plain_font->Size(), 0.0f, 0.0f);
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(fLayout)
|
BLayoutBuilder::Group<>(fLayout)
|
||||||
|
.Add(BSpaceLayoutItem::CreateHorizontalStrut(32.0f))
|
||||||
.Add(fTextView, 1.0f)
|
.Add(fTextView, 1.0f)
|
||||||
|
.SetInsets(B_USE_DEFAULT_SPACING, 0.0f, 0.0f, 0.0f)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -470,10 +531,6 @@ public:
|
|||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void Draw(BRect updateRect)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPackage(const PackageInfo& package)
|
void SetPackage(const PackageInfo& package)
|
||||||
{
|
{
|
||||||
fTextView->SetText("");
|
fTextView->SetText("");
|
||||||
@@ -521,16 +578,20 @@ public:
|
|||||||
BView("package changelog view", B_WILL_DRAW),
|
BView("package changelog view", B_WILL_DRAW),
|
||||||
fLayout(new BGroupLayout(B_HORIZONTAL))
|
fLayout(new BGroupLayout(B_HORIZONTAL))
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR),
|
||||||
|
kContentTint));
|
||||||
|
|
||||||
SetLayout(fLayout);
|
SetLayout(fLayout);
|
||||||
|
|
||||||
fTextView = new BTextView("changelog view");
|
fTextView = new BTextView("changelog view");
|
||||||
fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
fTextView->SetViewColor(ViewColor());
|
||||||
fTextView->MakeEditable(false);
|
fTextView->MakeEditable(false);
|
||||||
|
fTextView->SetInsets(0.0f, be_plain_font->Size(), 0.0f, 0.0f);
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(fLayout)
|
BLayoutBuilder::Group<>(fLayout)
|
||||||
|
.Add(BSpaceLayoutItem::CreateHorizontalStrut(32.0f))
|
||||||
.Add(fTextView, 1.0f)
|
.Add(fTextView, 1.0f)
|
||||||
|
.SetInsets(B_USE_DEFAULT_SPACING, 0.0f, 0.0f, 0.0f)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,26 +623,28 @@ private:
|
|||||||
// #pragma mark - PagesView
|
// #pragma mark - PagesView
|
||||||
|
|
||||||
|
|
||||||
class PagesView : public BView {
|
class PagesView : public BTabView {
|
||||||
public:
|
public:
|
||||||
PagesView()
|
PagesView()
|
||||||
:
|
:
|
||||||
BView("pages view", 0),
|
BTabView("pages view", B_WIDTH_FROM_WIDEST),
|
||||||
fLayout(new BCardLayout())
|
fLayout(new BCardLayout())
|
||||||
{
|
{
|
||||||
SetViewColor(B_TRANSPARENT_COLOR);
|
SetBorder(B_NO_BORDER);
|
||||||
SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
|
||||||
SetLayout(fLayout);
|
|
||||||
|
|
||||||
fAboutView = new AboutView();
|
fAboutView = new AboutView();
|
||||||
fUserRatingsView = new UserRatingsView();
|
fUserRatingsView = new UserRatingsView();
|
||||||
fChangelogView = new ChangelogView();
|
fChangelogView = new ChangelogView();
|
||||||
|
|
||||||
|
AddTab(fAboutView);
|
||||||
|
AddTab(fUserRatingsView);
|
||||||
|
AddTab(fChangelogView);
|
||||||
|
|
||||||
fLayout->AddView(fAboutView);
|
TabAt(0)->SetLabel(B_TRANSLATE("About"));
|
||||||
fLayout->AddView(fUserRatingsView);
|
TabAt(1)->SetLabel(B_TRANSLATE("Ratings"));
|
||||||
fLayout->AddView(fChangelogView);
|
TabAt(2)->SetLabel(B_TRANSLATE("Changelog"));
|
||||||
|
|
||||||
fLayout->SetVisibleItem(0L);
|
Select(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~PagesView()
|
virtual ~PagesView()
|
||||||
@@ -589,28 +652,9 @@ public:
|
|||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message)
|
|
||||||
{
|
|
||||||
switch (message->what) {
|
|
||||||
case MSG_SHOW_ABOUT_PAGE:
|
|
||||||
fLayout->SetVisibleItem(0L);
|
|
||||||
break;
|
|
||||||
case MSG_SHOW_RATINGS_PAGE:
|
|
||||||
fLayout->SetVisibleItem(1L);
|
|
||||||
break;
|
|
||||||
case MSG_SHOW_CHANGELOG_PAGE:
|
|
||||||
fLayout->SetVisibleItem(2L);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
BView::MessageReceived(message);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPackage(const PackageInfo& package)
|
void SetPackage(const PackageInfo& package)
|
||||||
{
|
{
|
||||||
fLayout->SetVisibleItem(0L);
|
Select(0);
|
||||||
fAboutView->SetPackage(package);
|
fAboutView->SetPackage(package);
|
||||||
fUserRatingsView->SetPackage(package);
|
fUserRatingsView->SetPackage(package);
|
||||||
fChangelogView->SetPackage(package);
|
fChangelogView->SetPackage(package);
|
||||||
@@ -635,20 +679,26 @@ private:
|
|||||||
// #pragma mark - PackageInfoView
|
// #pragma mark - PackageInfoView
|
||||||
|
|
||||||
|
|
||||||
PackageInfoView::PackageInfoView()
|
PackageInfoView::PackageInfoView(PackageManager* packageManager)
|
||||||
:
|
:
|
||||||
BGroupView("package info view", B_VERTICAL)
|
BGroupView("package info view", B_VERTICAL)
|
||||||
{
|
{
|
||||||
fTitleView = new TitleView();
|
fTitleView = new TitleView();
|
||||||
|
fPackageActionView = new PackageActionView(packageManager);
|
||||||
fPagesView = new PagesView();
|
fPagesView = new PagesView();
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this)
|
BLayoutBuilder::Group<>(this)
|
||||||
.Add(fTitleView, 0.0f)
|
.AddGroup(B_HORIZONTAL, 0.0f)
|
||||||
.AddGroup(B_HORIZONTAL)
|
.Add(fTitleView)
|
||||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(32.0f))
|
.Add(fPackageActionView)
|
||||||
.Add(fPagesView)
|
.SetInsets(
|
||||||
|
B_USE_DEFAULT_SPACING, 0.0f,
|
||||||
|
B_USE_DEFAULT_SPACING, 0.0f)
|
||||||
.End()
|
.End()
|
||||||
|
.Add(fPagesView)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -660,7 +710,6 @@ PackageInfoView::~PackageInfoView()
|
|||||||
void
|
void
|
||||||
PackageInfoView::AttachedToWindow()
|
PackageInfoView::AttachedToWindow()
|
||||||
{
|
{
|
||||||
fTitleView->SetTarget(fPagesView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -678,17 +727,23 @@ PackageInfoView::MessageReceived(BMessage* message)
|
|||||||
void
|
void
|
||||||
PackageInfoView::SetPackage(const PackageInfo& package)
|
PackageInfoView::SetPackage(const PackageInfo& package)
|
||||||
{
|
{
|
||||||
fPackageInfo = package;
|
fTitleView->SetPackage(package);
|
||||||
fTitleView->SetPackage(fPackageInfo);
|
fPackageActionView->SetPackage(package);
|
||||||
fPagesView->SetPackage(fPackageInfo);
|
fPagesView->SetPackage(package);
|
||||||
|
|
||||||
|
if (fPagesView->IsHidden(fPagesView))
|
||||||
|
fPagesView->Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PackageInfoView::Clear()
|
PackageInfoView::Clear()
|
||||||
{
|
{
|
||||||
fPackageInfo = PackageInfo();
|
|
||||||
fTitleView->Clear();
|
fTitleView->Clear();
|
||||||
|
fPackageActionView->Clear();
|
||||||
fPagesView->Clear();
|
fPagesView->Clear();
|
||||||
|
|
||||||
|
if (!fPagesView->IsHidden(fPagesView))
|
||||||
|
fPagesView->Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,14 @@
|
|||||||
|
|
||||||
|
|
||||||
class TitleView;
|
class TitleView;
|
||||||
|
class PackageActionView;
|
||||||
|
class PackageManager;
|
||||||
class PagesView;
|
class PagesView;
|
||||||
|
|
||||||
|
|
||||||
class PackageInfoView : public BGroupView {
|
class PackageInfoView : public BGroupView {
|
||||||
public:
|
public:
|
||||||
PackageInfoView();
|
PackageInfoView(PackageManager* packageManager);
|
||||||
virtual ~PackageInfoView();
|
virtual ~PackageInfoView();
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
@@ -27,8 +29,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
TitleView* fTitleView;
|
TitleView* fTitleView;
|
||||||
|
PackageActionView* fPackageActionView;
|
||||||
PagesView* fPagesView;
|
PagesView* fPagesView;
|
||||||
PackageInfo fPackageInfo;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PACKAGE_INFO_VIEW_H
|
#endif // PACKAGE_INFO_VIEW_H
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ public:
|
|||||||
// Package Kit supports this stuff already.
|
// Package Kit supports this stuff already.
|
||||||
virtual status_t Perform() = 0;
|
virtual status_t Perform() = 0;
|
||||||
|
|
||||||
protected:
|
const PackageInfo& Package() const
|
||||||
|
{ return fPackage; }
|
||||||
|
|
||||||
|
private:
|
||||||
PackageInfo fPackage;
|
PackageInfo fPackage;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user