Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(492)

Unified Diff: ash/common/system/chromeos/screen_security/screen_tray_item.cc

Issue 2463163002: Update chromeos system menu buttons for MD. (Closed)
Patch Set: boxlayout has some annoying dchecks Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/common/system/chromeos/screen_security/screen_tray_item.cc
diff --git a/ash/common/system/chromeos/screen_security/screen_tray_item.cc b/ash/common/system/chromeos/screen_security/screen_tray_item.cc
index 9a6c415d3c29c57e3e6e283997ce2094b71ecc20..ff8dd45a100a803417e53a924e23c20305ce9a5d 100644
--- a/ash/common/system/chromeos/screen_security/screen_tray_item.cc
+++ b/ash/common/system/chromeos/screen_security/screen_tray_item.cc
@@ -8,11 +8,13 @@
#include "ash/common/shelf/wm_shelf_util.h"
#include "ash/common/system/tray/fixed_sized_image_view.h"
#include "ash/common/system/tray/tray_constants.h"
+#include "ash/common/system/tray/tray_utils.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "grit/ash_resources.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/message_center/message_center.h"
+#include "ui/views/controls/button/label_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
@@ -49,36 +51,18 @@ ScreenStatusView::ScreenStatusView(ScreenTrayItem* screen_tray_item,
const base::string16& label_text,
const base::string16& stop_button_text)
: screen_tray_item_(screen_tray_item),
- icon_(NULL),
- label_(NULL),
- stop_button_(NULL),
+ icon_(nullptr),
+ label_(nullptr),
+ stop_button_(nullptr),
label_text_(label_text),
stop_button_text_(stop_button_text) {
CreateItems();
- Update();
+ if (screen_tray_item_)
+ UpdateFromScreenTrayItem();
}
ScreenStatusView::~ScreenStatusView() {}
-void ScreenStatusView::Layout() {
- views::View::Layout();
-
- // Give the stop button the space it requests.
- gfx::Size stop_size = stop_button_->GetPreferredSize();
- gfx::Rect stop_bounds(stop_size);
- stop_bounds.set_x(width() - stop_size.width() - kStopButtonRightPadding);
- stop_bounds.set_y((height() - stop_size.height()) / 2);
- stop_button_->SetBoundsRect(stop_bounds);
-
- // Adjust the label's bounds in case it got cut off by |stop_button_|.
- if (label_->bounds().Intersects(stop_button_->bounds())) {
- gfx::Rect label_bounds = label_->bounds();
- label_bounds.set_width(stop_button_->x() - kTrayPopupPaddingBetweenItems -
- label_->x());
- label_->SetBoundsRect(label_bounds);
- }
-}
-
void ScreenStatusView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
DCHECK(sender == stop_button_);
@@ -87,13 +71,22 @@ void ScreenStatusView::ButtonPressed(views::Button* sender,
}
void ScreenStatusView::CreateItems() {
- set_background(views::Background::CreateSolidBackground(kBackgroundColor));
- SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
- kTrayPopupPaddingHorizontal, 0,
- kTrayPopupPaddingBetweenItems));
+ const bool use_md = MaterialDesignController::IsSystemTrayMenuMaterial();
+ if (!use_md)
+ set_background(views::Background::CreateSolidBackground(kBackgroundColor));
+
+ auto layout =
+ new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0,
+ use_md ? kTrayPopupPaddingBetweenItems : 0);
+ layout->set_cross_axis_alignment(
+ views::BoxLayout::CROSS_AXIS_ALIGNMENT_CENTER);
+ SetLayoutManager(layout);
+ SetBorder(views::Border::CreateEmptyBorder(
+ 0, kTrayPopupPaddingHorizontal, 0,
+ use_md ? kTrayPopupButtonEndMargin : kStopButtonRightPadding));
icon_ = new FixedSizedImageView(0, GetTrayConstant(TRAY_POPUP_ITEM_HEIGHT));
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
+ if (use_md) {
icon_->SetImage(
gfx::CreateVectorIcon(kSystemMenuScreenShareIcon, kMenuIconColor));
} else {
@@ -107,13 +100,18 @@ void ScreenStatusView::CreateItems() {
label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
label_->SetMultiLine(true);
label_->SetText(label_text_);
+ if (!use_md) {
+ label_->SetBorder(views::Border::CreateEmptyBorder(
+ 0, kTrayPopupPaddingBetweenItems, 0, 0));
+ }
AddChildView(label_);
+ layout->SetFlexForView(label_, 1);
- stop_button_ = new TrayPopupLabelButton(this, stop_button_text_);
+ stop_button_ = CreateTrayPopupButton(this, stop_button_text_);
AddChildView(stop_button_);
}
-void ScreenStatusView::Update() {
+void ScreenStatusView::UpdateFromScreenTrayItem() {
// Hide the notification bubble when the ash tray bubble opens.
screen_tray_item_->HideNotificationView();
SetVisible(screen_tray_item_->is_started());
@@ -135,8 +133,8 @@ void ScreenNotificationDelegate::ButtonClick(int button_index) {
ScreenTrayItem::ScreenTrayItem(SystemTray* system_tray, UmaType uma_type)
: SystemTrayItem(system_tray, uma_type),
- tray_view_(NULL),
- default_view_(NULL),
+ tray_view_(nullptr),
+ default_view_(nullptr),
is_started_(false),
stop_callback_(base::Bind(&base::DoNothing)) {}
@@ -146,7 +144,7 @@ void ScreenTrayItem::Update() {
if (tray_view_)
tray_view_->Update();
if (default_view_)
- default_view_->Update();
+ default_view_->UpdateFromScreenTrayItem();
if (is_started_) {
CreateOrUpdateNotification();
} else {
@@ -163,7 +161,7 @@ void ScreenTrayItem::Start(const base::Closure& stop_callback) {
tray_view_->Update();
if (default_view_)
- default_view_->Update();
+ default_view_->UpdateFromScreenTrayItem();
if (!system_tray()->HasSystemBubbleType(
SystemTrayBubble::BUBBLE_TYPE_DEFAULT)) {
@@ -193,11 +191,11 @@ void ScreenTrayItem::RecordStoppedFromDefaultViewMetric() {}
void ScreenTrayItem::RecordStoppedFromNotificationViewMetric() {}
void ScreenTrayItem::DestroyTrayView() {
- tray_view_ = NULL;
+ tray_view_ = nullptr;
}
void ScreenTrayItem::DestroyDefaultView() {
- default_view_ = NULL;
+ default_view_ = nullptr;
}
} // namespace ash
« no previous file with comments | « ash/common/system/chromeos/screen_security/screen_tray_item.h ('k') | ash/common/system/tray/system_tray.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698