| 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 feaadafd1d384b24225d78d245fa45b00e0f778d..dcd4ab2a42249ffb8b45fb22c14804ad40aa4474 100644
|
| --- a/ash/common/system/tray/tray_popup_utils.cc
|
| +++ b/ash/common/system/tray/tray_popup_utils.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "ash/common/system/tray/tray_popup_utils.h"
|
|
|
| +#include "ash/common/ash_constants.h"
|
| #include "ash/common/material_design/material_design_controller.h"
|
| #include "ash/common/system/tray/fixed_sized_image_view.h"
|
| #include "ash/common/system/tray/tray_constants.h"
|
| @@ -12,7 +13,9 @@
|
| #include "ui/views/controls/button/label_button.h"
|
| #include "ui/views/controls/image_view.h"
|
| #include "ui/views/controls/label.h"
|
| +#include "ui/views/controls/slider.h"
|
| #include "ui/views/layout/box_layout.h"
|
| +#include "ui/views/layout/fill_layout.h"
|
|
|
| namespace ash {
|
|
|
| @@ -46,6 +49,28 @@ std::unique_ptr<views::LayoutManager> CreateDefaultEndsLayoutManager() {
|
| } // 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(
|
| @@ -53,25 +78,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() {
|
| @@ -99,15 +117,36 @@ 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;
|
| }
|
|
|
| -void TrayPopupUtils::ConfigureDefaultLayout(TriView* tri_view,
|
| - TriView::Container container) {
|
| +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(
|
| @@ -123,8 +162,42 @@ void TrayPopupUtils::ConfigureDefaultLayout(TriView* tri_view,
|
| gfx::Size(GetTrayConstant(TRAY_POPUP_ITEM_MIN_END_WIDTH), 0));
|
| break;
|
| }
|
| +}
|
|
|
| - tri_view->SetContainerLayout(container, CreateLayoutManager(container));
|
| +std::unique_ptr<views::LayoutManager>
|
| +TrayPopupUtils::CreateDefaultLayoutManager(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;
|
| +}
|
| +
|
| +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:
|
| + return nullptr;
|
| + break;
|
| + case TriView::Container::END:
|
| + return views::CreateEmptyBorder(
|
| + 0, GetTrayConstant(TRAY_POPUP_ITEM_MORE_REGION_HORIZONTAL_INSET), 0,
|
| + GetTrayConstant(TRAY_POPUP_ITEM_MORE_REGION_HORIZONTAL_INSET));
|
| + break;
|
| + }
|
| + // Required by some compilers.
|
| + NOTREACHED();
|
| + return nullptr;
|
| }
|
|
|
| } // namespace ash
|
|
|