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

Unified Diff: ash/shelf/overflow_button.cc

Issue 2164733002: mash: Convert ash shelf overflow bubble to wm common types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 5 months 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
« no previous file with comments | « ash/shelf/overflow_button.h ('k') | ash/shelf/shelf_button.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/shelf/overflow_button.cc
diff --git a/ash/shelf/overflow_button.cc b/ash/shelf/overflow_button.cc
deleted file mode 100644
index e51bfd2b3a45d72852ae1cf4d0b76100bbf4967c..0000000000000000000000000000000000000000
--- a/ash/shelf/overflow_button.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/shelf/overflow_button.h"
-
-#include "ash/common/ash_constants.h"
-#include "ash/common/ash_switches.h"
-#include "ash/common/material_design/material_design_controller.h"
-#include "ash/common/shelf/shelf_constants.h"
-#include "ash/shelf/ink_drop_button_listener.h"
-#include "ash/shelf/shelf.h"
-#include "ash/shelf/shelf_layout_manager.h"
-#include "ash/shelf/shelf_widget.h"
-#include "grit/ash_resources.h"
-#include "grit/ash_strings.h"
-#include "third_party/skia/include/core/SkPaint.h"
-#include "third_party/skia/include/core/SkPath.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/animation/throb_animation.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/image/image_skia_operations.h"
-#include "ui/gfx/paint_vector_icon.h"
-#include "ui/gfx/skbitmap_operations.h"
-#include "ui/gfx/skia_util.h"
-#include "ui/gfx/transform.h"
-#include "ui/gfx/vector_icons_public.h"
-#include "ui/views/widget/widget.h"
-
-namespace ash {
-
-OverflowButton::OverflowButton(InkDropButtonListener* listener, Shelf* shelf)
- : CustomButton(nullptr),
- bottom_image_(nullptr),
- listener_(listener),
- shelf_(shelf) {
- if (MaterialDesignController::IsShelfMaterial()) {
- bottom_image_md_ =
- CreateVectorIcon(gfx::VectorIconId::SHELF_OVERFLOW, kShelfIconColor);
- bottom_image_ = &bottom_image_md_;
- } else {
- bottom_image_ = ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
- IDR_ASH_SHELF_OVERFLOW);
- }
-
- SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
- SetAccessibleName(l10n_util::GetStringUTF16(IDS_ASH_SHELF_OVERFLOW_NAME));
-}
-
-OverflowButton::~OverflowButton() {}
-
-void OverflowButton::OnShelfAlignmentChanged() {
- SchedulePaint();
-}
-
-void OverflowButton::OnPaint(gfx::Canvas* canvas) {
- gfx::Rect bounds = CalculateButtonBounds();
- PaintBackground(canvas, bounds);
- PaintForeground(canvas, bounds);
-}
-
-void OverflowButton::NotifyClick(const ui::Event& event) {
- CustomButton::NotifyClick(event);
- if (listener_)
- listener_->ButtonPressed(this, event, ink_drop());
-}
-
-void OverflowButton::PaintBackground(gfx::Canvas* canvas,
- const gfx::Rect& bounds) {
- if (MaterialDesignController::IsShelfMaterial()) {
- SkColor background_color = SK_ColorTRANSPARENT;
- ShelfWidget* shelf_widget = shelf_->shelf_widget();
- if (shelf_widget &&
- shelf_widget->GetBackgroundType() ==
- ShelfBackgroundType::SHELF_BACKGROUND_DEFAULT) {
- background_color = SkColorSetA(kShelfBaseColor,
- GetShelfConstant(SHELF_BACKGROUND_ALPHA));
- }
-
- // TODO(bruthig|tdanderson): The background should be changed using a
- // fade in/out animation.
- SkPaint background_paint;
- background_paint.setFlags(SkPaint::kAntiAlias_Flag);
- background_paint.setColor(background_color);
- canvas->DrawRoundRect(bounds, kOverflowButtonCornerRadius,
- background_paint);
-
- if (shelf_->IsShowingOverflowBubble()) {
- SkPaint highlight_paint;
- highlight_paint.setFlags(SkPaint::kAntiAlias_Flag);
- highlight_paint.setColor(kShelfButtonActivatedHighlightColor);
- canvas->DrawRoundRect(bounds, kOverflowButtonCornerRadius,
- highlight_paint);
- }
- } else {
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- const gfx::ImageSkia* background =
- rb.GetImageNamed(NonMaterialBackgroundImageId()).ToImageSkia();
- canvas->DrawImageInt(*background, bounds.x(), bounds.y());
- }
-}
-
-void OverflowButton::PaintForeground(gfx::Canvas* canvas,
- const gfx::Rect& bounds) {
- const gfx::ImageSkia* image = nullptr;
-
- switch (shelf_->alignment()) {
- case SHELF_ALIGNMENT_LEFT:
- if (left_image_.isNull()) {
- left_image_ = gfx::ImageSkiaOperations::CreateRotatedImage(
- *bottom_image_, SkBitmapOperations::ROTATION_90_CW);
- }
- image = &left_image_;
- break;
- case SHELF_ALIGNMENT_RIGHT:
- if (right_image_.isNull()) {
- right_image_ = gfx::ImageSkiaOperations::CreateRotatedImage(
- *bottom_image_, SkBitmapOperations::ROTATION_270_CW);
- }
- image = &right_image_;
- break;
- default:
- image = bottom_image_;
- break;
- }
-
- canvas->DrawImageInt(*image,
- bounds.x() + ((bounds.width() - image->width()) / 2),
- bounds.y() + ((bounds.height() - image->height()) / 2));
-}
-
-int OverflowButton::NonMaterialBackgroundImageId() {
- if (shelf_->IsShowingOverflowBubble())
- return IDR_AURA_NOTIFICATION_BACKGROUND_PRESSED;
- else if (shelf_->shelf_widget()->GetDimsShelf())
- return IDR_AURA_NOTIFICATION_BACKGROUND_ON_BLACK;
- return IDR_AURA_NOTIFICATION_BACKGROUND_NORMAL;
-}
-
-gfx::Rect OverflowButton::CalculateButtonBounds() {
- ShelfAlignment alignment = shelf_->alignment();
- gfx::Rect bounds(GetContentsBounds());
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- if (MaterialDesignController::IsShelfMaterial()) {
- const int width_offset = (bounds.width() - kOverflowButtonSize) / 2;
- const int height_offset = (bounds.height() - kOverflowButtonSize) / 2;
- if (shelf_->IsHorizontalAlignment()) {
- bounds = gfx::Rect(bounds.x() + width_offset, bounds.y() + height_offset,
- kOverflowButtonSize, kOverflowButtonSize);
- } else {
- bounds = gfx::Rect(bounds.x() + height_offset, bounds.y() + width_offset,
- kOverflowButtonSize, kOverflowButtonSize);
- }
- } else {
- const gfx::ImageSkia* background =
- rb.GetImageNamed(NonMaterialBackgroundImageId()).ToImageSkia();
- if (alignment == SHELF_ALIGNMENT_LEFT) {
- bounds =
- gfx::Rect(bounds.right() - background->width() - kShelfItemInset,
- bounds.y() + (bounds.height() - background->height()) / 2,
- background->width(), background->height());
- } else if (alignment == SHELF_ALIGNMENT_RIGHT) {
- bounds =
- gfx::Rect(bounds.x() + kShelfItemInset,
- bounds.y() + (bounds.height() - background->height()) / 2,
- background->width(), background->height());
- } else {
- bounds =
- gfx::Rect(bounds.x() + (bounds.width() - background->width()) / 2,
- bounds.y() + kShelfItemInset, background->width(),
- background->height());
- }
- }
- return bounds;
-}
-
-} // namespace ash
« no previous file with comments | « ash/shelf/overflow_button.h ('k') | ash/shelf/shelf_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698