| Index: ash/common/system/tray/tray_popup_utils.cc
|
| diff --git a/ash/common/system/tray/tray_popup_utils.cc b/ash/common/system/tray/tray_popup_utils.cc
|
| index 2e71ff246b63110803b076492721e82f88dc7430..3864fa8dd9891be18cc259886a6ad09ca8ffa947 100644
|
| --- a/ash/common/system/tray/tray_popup_utils.cc
|
| +++ b/ash/common/system/tray/tray_popup_utils.cc
|
| @@ -20,7 +20,9 @@
|
| #include "ui/views/controls/image_view.h"
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/controls/separator.h"
|
| +#include "ui/views/controls/slider.h"
|
| #include "ui/views/layout/box_layout.h"
|
| +#include "ui/views/layout/fill_layout.h"
|
|
|
| namespace ash {
|
|
|
| @@ -99,6 +101,28 @@ class BorderlessLabelButton : public views::LabelButton {
|
| } // namespace
|
|
|
| TriView* TrayPopupUtils::CreateDefaultRowView() {
|
| + TriView* tri_view = CreateMultiTargetRowView();
|
| + tri_view->SetContainerBorder(TriView::Container::START,
|
| + CreateDefaultBorder(TriView::Container::START));
|
| + tri_view->SetContainerBorder(TriView::Container::CENTER,
|
| + CreateDefaultBorder(TriView::Container::CENTER));
|
| + tri_view->SetContainerBorder(TriView::Container::END,
|
| + CreateDefaultBorder(TriView::Container::END));
|
| +
|
| + tri_view->SetContainerLayout(
|
| + TriView::Container::START,
|
| + CreateDefaultLayoutManager(TriView::Container::START));
|
| + tri_view->SetContainerLayout(
|
| + TriView::Container::CENTER,
|
| + CreateDefaultLayoutManager(TriView::Container::CENTER));
|
| + tri_view->SetContainerLayout(
|
| + TriView::Container::END,
|
| + CreateDefaultLayoutManager(TriView::Container::END));
|
| +
|
| + return tri_view;
|
| +}
|
| +
|
| +TriView* TrayPopupUtils::CreateMultiTargetRowView() {
|
| TriView* tri_view = new TriView(0 /* padding_between_items */);
|
|
|
| tri_view->SetInsets(
|
| @@ -106,25 +130,18 @@ TriView* TrayPopupUtils::CreateDefaultRowView() {
|
| GetTrayConstant(TRAY_POPUP_ITEM_RIGHT_INSET)));
|
| tri_view->SetMinCrossAxisSize(GetTrayConstant(TRAY_POPUP_ITEM_HEIGHT));
|
|
|
| - ConfigureDefaultLayout(tri_view, TriView::Container::START);
|
| - ConfigureDefaultLayout(tri_view, TriView::Container::CENTER);
|
| - ConfigureDefaultLayout(tri_view, TriView::Container::END);
|
| + ConfigureDefaultSizeAndFlex(tri_view, TriView::Container::START);
|
| + ConfigureDefaultSizeAndFlex(tri_view, TriView::Container::CENTER);
|
| + ConfigureDefaultSizeAndFlex(tri_view, TriView::Container::END);
|
|
|
| - return tri_view;
|
| -}
|
| + tri_view->SetContainerLayout(TriView::Container::START,
|
| + base::MakeUnique<views::FillLayout>());
|
| + tri_view->SetContainerLayout(TriView::Container::CENTER,
|
| + base::MakeUnique<views::FillLayout>());
|
| + tri_view->SetContainerLayout(TriView::Container::END,
|
| + base::MakeUnique<views::FillLayout>());
|
|
|
| -std::unique_ptr<views::LayoutManager> TrayPopupUtils::CreateLayoutManager(
|
| - TriView::Container container) {
|
| - switch (container) {
|
| - case TriView::Container::START:
|
| - case TriView::Container::END:
|
| - return CreateDefaultEndsLayoutManager();
|
| - case TriView::Container::CENTER:
|
| - return CreateDefaultCenterLayoutManager();
|
| - }
|
| - // Required by some compilers.
|
| - NOTREACHED();
|
| - return nullptr;
|
| + return tri_view;
|
| }
|
|
|
| views::Label* TrayPopupUtils::CreateDefaultLabel() {
|
| @@ -152,13 +169,53 @@ views::ImageView* TrayPopupUtils::CreateMainImageView() {
|
| }
|
|
|
| views::ImageView* TrayPopupUtils::CreateMoreImageView() {
|
| - views::ImageView* image = new FixedSizedImageView(
|
| - GetTrayConstant(TRAY_POPUP_ITEM_MORE_IMAGE_CONTAINER_WIDTH),
|
| - GetTrayConstant(TRAY_POPUP_ITEM_HEIGHT));
|
| + views::ImageView* image =
|
| + new FixedSizedImageView(GetTrayConstant(TRAY_POPUP_ITEM_MORE_IMAGE_SIZE),
|
| + GetTrayConstant(TRAY_POPUP_ITEM_MORE_IMAGE_SIZE));
|
| image->EnableCanvasFlippingForRTLUI(true);
|
| return image;
|
| }
|
|
|
| +views::Slider* TrayPopupUtils::CreateSlider(views::SliderListener* listener) {
|
| + const bool is_material = MaterialDesignController::IsSystemTrayMenuMaterial();
|
| + views::Slider* slider = views::Slider::CreateSlider(is_material, listener);
|
| + slider->set_focus_border_color(kFocusBorderColor);
|
| + if (is_material) {
|
| + slider->SetBorder(
|
| + views::CreateEmptyBorder(gfx::Insets(0, kTrayPopupSliderPaddingMD)));
|
| + } else {
|
| + slider->SetBorder(
|
| + views::CreateEmptyBorder(0, 0, 0, kTrayPopupPaddingBetweenItems));
|
| + }
|
| + return slider;
|
| +}
|
| +
|
| +void TrayPopupUtils::ConfigureContainer(TriView::Container container,
|
| + views::View* container_view) {
|
| + container_view->SetBorder(CreateDefaultBorder(container));
|
| + container_view->SetLayoutManager(
|
| + CreateDefaultLayoutManager(container).release());
|
| +}
|
| +
|
| +void TrayPopupUtils::ConfigureDefaultSizeAndFlex(TriView* tri_view,
|
| + TriView::Container container) {
|
| + switch (container) {
|
| + case TriView::Container::START:
|
| + tri_view->SetMinSize(
|
| + TriView::Container::START,
|
| + gfx::Size(GetTrayConstant(TRAY_POPUP_ITEM_MIN_START_WIDTH), 0));
|
| + break;
|
| + case TriView::Container::CENTER:
|
| + tri_view->SetFlexForContainer(TriView::Container::CENTER, 1.f);
|
| + break;
|
| + case TriView::Container::END:
|
| + tri_view->SetMinSize(
|
| + TriView::Container::END,
|
| + gfx::Size(GetTrayConstant(TRAY_POPUP_ITEM_MIN_END_WIDTH), 0));
|
| + break;
|
| + }
|
| +}
|
| +
|
| views::LabelButton* TrayPopupUtils::CreateTrayPopupBorderlessButton(
|
| views::ButtonListener* listener,
|
| const base::string16& text) {
|
| @@ -193,25 +250,40 @@ bool TrayPopupUtils::CanOpenWebUISettings(LoginStatus status) {
|
| !WmShell::Get()->GetSessionStateDelegate()->IsInSecondaryLoginScreen();
|
| }
|
|
|
| -void TrayPopupUtils::ConfigureDefaultLayout(TriView* tri_view,
|
| - TriView::Container container) {
|
| +std::unique_ptr<views::LayoutManager>
|
| +TrayPopupUtils::CreateDefaultLayoutManager(TriView::Container container) {
|
| switch (container) {
|
| case TriView::Container::START:
|
| - tri_view->SetMinSize(
|
| - TriView::Container::START,
|
| - gfx::Size(GetTrayConstant(TRAY_POPUP_ITEM_MIN_START_WIDTH), 0));
|
| + case TriView::Container::END:
|
| + return CreateDefaultEndsLayoutManager();
|
| + case TriView::Container::CENTER:
|
| + return CreateDefaultCenterLayoutManager();
|
| + }
|
| + // Required by some compilers.
|
| + NOTREACHED();
|
| + return nullptr;
|
| +}
|
| +
|
| +std::unique_ptr<views::Border> TrayPopupUtils::CreateDefaultBorder(
|
| + TriView::Container container) {
|
| + switch (container) {
|
| + case TriView::Container::START:
|
| + // TODO(bruthig): Update the 'Main' images to have a fixed size that is
|
| + // just the painted size and add a border.
|
| + return nullptr;
|
| break;
|
| case TriView::Container::CENTER:
|
| - tri_view->SetFlexForContainer(TriView::Container::CENTER, 1.f);
|
| + return nullptr;
|
| break;
|
| case TriView::Container::END:
|
| - tri_view->SetMinSize(
|
| - TriView::Container::END,
|
| - gfx::Size(GetTrayConstant(TRAY_POPUP_ITEM_MIN_END_WIDTH), 0));
|
| + return views::CreateEmptyBorder(
|
| + 0, GetTrayConstant(TRAY_POPUP_ITEM_MORE_REGION_HORIZONTAL_INSET), 0,
|
| + GetTrayConstant(TRAY_POPUP_ITEM_MORE_REGION_HORIZONTAL_INSET));
|
| break;
|
| }
|
| -
|
| - tri_view->SetContainerLayout(container, CreateLayoutManager(container));
|
| + // Required by some compilers.
|
| + NOTREACHED();
|
| + return nullptr;
|
| }
|
|
|
| } // namespace ash
|
|
|