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

Unified Diff: ash/shelf/app_list_button.cc

Issue 198063003: Revert of Shelf Cleanup (- binary files) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/app_list_button.h ('k') | ash/shelf/overflow_bubble_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/shelf/app_list_button.cc
diff --git a/ash/shelf/app_list_button.cc b/ash/shelf/app_list_button.cc
index 6e02085827c93753099923d4afca8e9a91a9da7b..56fc0e3d6414b7f3c9ffe06c755dd1dca1359fba 100644
--- a/ash/shelf/app_list_button.cc
+++ b/ash/shelf/app_list_button.cc
@@ -4,14 +4,11 @@
#include "ash/shelf/app_list_button.h"
+#include <vector>
+
#include "ash/ash_constants.h"
-#include "ash/ash_switches.h"
-#include "ash/shelf/shelf_button.h"
#include "ash/shelf/shelf_button_host.h"
-#include "ash/shelf/shelf_layout_manager.h"
-#include "ash/shelf/shelf_types.h"
-#include "ash/shelf/shelf_widget.h"
-#include "ash/shell.h"
+#include "ash/shelf/shelf_constants.h"
#include "grit/ash_resources.h"
#include "grit/ash_strings.h"
#include "ui/accessibility/ax_view_state.h"
@@ -21,31 +18,72 @@
#include "ui/compositor/layer_animation_element.h"
#include "ui/compositor/layer_animation_sequence.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/image/image_skia_operations.h"
-#include "ui/views/controls/button/image_button.h"
#include "ui/views/painter.h"
namespace ash {
namespace internal {
-// static
-const int AppListButton::kImageBoundsSize = 7;
-
+const int kAnimationDurationInMs = 600;
+const float kAnimationOpacity[] = { 1.0f, 0.4f, 1.0f };
AppListButton::AppListButton(views::ButtonListener* listener,
- ShelfButtonHost* host,
- ShelfWidget* shelf_widget)
+ ShelfButtonHost* host)
: views::ImageButton(listener),
- host_(host),
- shelf_widget_(shelf_widget) {
+ host_(host) {
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
+ SetImage(
+ views::CustomButton::STATE_NORMAL,
+ rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST).ToImageSkia());
+ SetImage(
+ views::CustomButton::STATE_HOVERED,
+ rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_HOT).
+ ToImageSkia());
+ SetImage(
+ views::CustomButton::STATE_PRESSED,
+ rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_PUSHED).
+ ToImageSkia());
SetAccessibleName(l10n_util::GetStringUTF16(IDS_AURA_APP_LIST_TITLE));
- SetSize(gfx::Size(kShelfSize, kShelfSize));
+ SetSize(gfx::Size(kShelfPreferredSize, kShelfPreferredSize));
+ SetImageAlignment(ImageButton::ALIGN_CENTER, ImageButton::ALIGN_TOP);
SetFocusPainter(views::Painter::CreateSolidFocusPainter(
kFocusBorderColor, gfx::Insets(1, 1, 1, 1)));
}
AppListButton::~AppListButton() {
+}
+
+void AppListButton::StartLoadingAnimation() {
+ layer()->GetAnimator()->StopAnimating();
+
+ scoped_ptr<ui::LayerAnimationSequence> opacity_sequence(
+ new ui::LayerAnimationSequence());
+
+ opacity_sequence->set_is_cyclic(true);
+
+ for (size_t i = 0; i < arraysize(kAnimationOpacity); ++i) {
+ opacity_sequence->AddElement(
+ ui::LayerAnimationElement::CreateOpacityElement(
+ kAnimationOpacity[i],
+ base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
+ }
+
+ opacity_sequence->AddElement(
+ ui::LayerAnimationElement::CreatePauseElement(
+ ui::LayerAnimationElement::OPACITY,
+ base::TimeDelta::FromMilliseconds(kAnimationDurationInMs)));
+
+ // LayerAnimator takes ownership of the sequences.
+ layer()->GetAnimator()->ScheduleAnimation(opacity_sequence.release());
+}
+
+void AppListButton::StopLoadingAnimation() {
+ layer()->GetAnimator()->StopAnimating();
+
+ ui::ScopedLayerAnimationSettings settings(layer()->GetAnimator());
+ settings.SetTransitionDuration(
+ base::TimeDelta::FromMilliseconds(kAnimationDurationInMs));
+ layer()->SetOpacity(1.0f);
+ layer()->SetTransform(gfx::Transform());
}
bool AppListButton::OnMousePressed(const ui::MouseEvent& event) {
@@ -85,84 +123,6 @@
host_->MouseExitedButton(this);
}
-void AppListButton::OnGestureEvent(ui::GestureEvent* event) {
- switch (event->type()) {
- case ui::ET_GESTURE_SCROLL_BEGIN:
- host_->PointerPressedOnButton(this, ShelfButtonHost::TOUCH, *event);
- event->SetHandled();
- return;
- case ui::ET_GESTURE_SCROLL_UPDATE:
- host_->PointerDraggedOnButton(this, ShelfButtonHost::TOUCH, *event);
- event->SetHandled();
- return;
- case ui::ET_GESTURE_SCROLL_END:
- case ui::ET_SCROLL_FLING_START:
- host_->PointerReleasedOnButton(this, ShelfButtonHost::TOUCH, false);
- event->SetHandled();
- return;
- default:
- ImageButton::OnGestureEvent(event);
- return;
- }
-}
-
-void AppListButton::OnPaint(gfx::Canvas* canvas) {
- // Call the base class first to paint any background/borders.
- View::OnPaint(canvas);
-
- int background_image_id = 0;
- if (Shell::GetInstance()->GetAppListTargetVisibility()) {
- background_image_id = IDR_AURA_NOTIFICATION_BACKGROUND_PRESSED;
- } else {
- if (shelf_widget_->GetDimsShelf())
- background_image_id = IDR_AURA_NOTIFICATION_BACKGROUND_ON_BLACK;
- else
- background_image_id = IDR_AURA_NOTIFICATION_BACKGROUND_NORMAL;
- }
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- const gfx::ImageSkia* background_image =
- rb.GetImageNamed(background_image_id).ToImageSkia();
- const gfx::ImageSkia* forground_image =
- rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_ALTERNATE).ToImageSkia();
-
- gfx::Rect contents_bounds = GetContentsBounds();
- gfx::Rect background_bounds, forground_bounds;
-
- ShelfAlignment alignment = shelf_widget_->GetAlignment();
- background_bounds.set_size(background_image->size());
- if (alignment == SHELF_ALIGNMENT_LEFT) {
- background_bounds.set_x(contents_bounds.width() -
- ShelfLayoutManager::kShelfItemInset - background_image->width());
- background_bounds.set_y(contents_bounds.y() +
- (contents_bounds.height() - background_image->height()) / 2);
- } else if(alignment == SHELF_ALIGNMENT_RIGHT) {
- background_bounds.set_x(ShelfLayoutManager::kShelfItemInset);
- background_bounds.set_y(contents_bounds.y() +
- (contents_bounds.height() - background_image->height()) / 2);
- } else {
- background_bounds.set_y(ShelfLayoutManager::kShelfItemInset);
- background_bounds.set_x(contents_bounds.x() +
- (contents_bounds.width() - background_image->width()) / 2);
- }
-
- forground_bounds.set_size(forground_image->size());
- forground_bounds.set_x(background_bounds.x() +
- std::max(0,
- (background_bounds.width() - forground_bounds.width()) / 2));
- forground_bounds.set_y(background_bounds.y() +
- std::max(0,
- (background_bounds.height() - forground_bounds.height()) / 2));
-
- canvas->DrawImageInt(*background_image,
- background_bounds.x(),
- background_bounds.y());
- canvas->DrawImageInt(*forground_image,
- forground_bounds.x(),
- forground_bounds.y());
-
- views::Painter::PaintFocusPainter(this, canvas, focus_painter());
-}
-
void AppListButton::GetAccessibleState(ui::AXViewState* state) {
state->role = ui::AX_ROLE_BUTTON;
state->name = host_->GetAccessibleName(this);
« no previous file with comments | « ash/shelf/app_list_button.h ('k') | ash/shelf/overflow_bubble_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698