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

Side by Side Diff: ash/shelf/shelf_button.cc

Issue 2095193002: clang-format all of //ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « ash/shelf/shelf_button.h ('k') | ash/shelf/shelf_button_pressed_metric_tracker.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/shelf/shelf_button.h" 5 #include "ash/shelf/shelf_button.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ash/common/ash_constants.h" 9 #include "ash/common/ash_constants.h"
10 #include "ash/common/ash_switches.h" 10 #include "ash/common/ash_switches.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 78
79 protected: 79 protected:
80 virtual ~Observer() {} 80 virtual ~Observer() {}
81 }; 81 };
82 82
83 static ShelfButtonAnimation* GetInstance() { 83 static ShelfButtonAnimation* GetInstance() {
84 static ShelfButtonAnimation* s_instance = new ShelfButtonAnimation(); 84 static ShelfButtonAnimation* s_instance = new ShelfButtonAnimation();
85 return s_instance; 85 return s_instance;
86 } 86 }
87 87
88 void AddObserver(Observer* observer) { 88 void AddObserver(Observer* observer) { observers_.AddObserver(observer); }
89 observers_.AddObserver(observer);
90 }
91 89
92 void RemoveObserver(Observer* observer) { 90 void RemoveObserver(Observer* observer) {
93 observers_.RemoveObserver(observer); 91 observers_.RemoveObserver(observer);
94 if (!observers_.might_have_observers()) 92 if (!observers_.might_have_observers())
95 animation_.Stop(); 93 animation_.Stop();
96 } 94 }
97 95
98 int GetAlpha() { 96 int GetAlpha() { return GetThrobAnimation().CurrentValueBetween(0, 255); }
99 return GetThrobAnimation().CurrentValueBetween(0, 255);
100 }
101 97
102 double GetAnimation() { 98 double GetAnimation() { return GetThrobAnimation().GetCurrentValue(); }
103 return GetThrobAnimation().GetCurrentValue();
104 }
105 99
106 private: 100 private:
107 ShelfButtonAnimation() 101 ShelfButtonAnimation() : animation_(this) {
108 : animation_(this) {
109 animation_.SetThrobDuration(kAttentionThrobDurationMS); 102 animation_.SetThrobDuration(kAttentionThrobDurationMS);
110 animation_.SetTweenType(gfx::Tween::SMOOTH_IN_OUT); 103 animation_.SetTweenType(gfx::Tween::SMOOTH_IN_OUT);
111 } 104 }
112 105
113 ~ShelfButtonAnimation() override {} 106 ~ShelfButtonAnimation() override {}
114 107
115 gfx::ThrobAnimation& GetThrobAnimation() { 108 gfx::ThrobAnimation& GetThrobAnimation() {
116 if (!animation_.is_animating()) { 109 if (!animation_.is_animating()) {
117 animation_.Reset(); 110 animation_.Reset();
118 animation_.StartThrobbing(-1 /*throb indefinitely*/); 111 animation_.StartThrobbing(-1 /*throb indefinitely*/);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 void SetBarBoundsRect(const gfx::Rect& bounds) { 174 void SetBarBoundsRect(const gfx::Rect& bounds) {
182 base_bounds_ = bounds; 175 base_bounds_ = bounds;
183 UpdateBounds(); 176 UpdateBounds();
184 } 177 }
185 178
186 void ShowAttention(bool show) { 179 void ShowAttention(bool show) {
187 if (show_attention_ != show) { 180 if (show_attention_ != show) {
188 show_attention_ = show; 181 show_attention_ = show;
189 if (show_attention_) { 182 if (show_attention_) {
190 animating_ = true; 183 animating_ = true;
191 animation_end_time_ = base::TimeTicks::Now() + 184 animation_end_time_ =
185 base::TimeTicks::Now() +
192 base::TimeDelta::FromSeconds(kMaxAnimationSeconds); 186 base::TimeDelta::FromSeconds(kMaxAnimationSeconds);
193 ShelfButtonAnimation::GetInstance()->AddObserver(this); 187 ShelfButtonAnimation::GetInstance()->AddObserver(this);
194 } else { 188 } else {
195 animating_ = false; 189 animating_ = false;
196 ShelfButtonAnimation::GetInstance()->RemoveObserver(this); 190 ShelfButtonAnimation::GetInstance()->RemoveObserver(this);
197 } 191 }
198 } 192 }
199 UpdateBounds(); 193 UpdateBounds();
200 } 194 }
201 195
202 private: 196 private:
203 void UpdateBounds() { 197 void UpdateBounds() {
204 gfx::Rect bounds = base_bounds_; 198 gfx::Rect bounds = base_bounds_;
205 if (show_attention_) { 199 if (show_attention_) {
206 // Scale from .35 to 1.0 of the total width (which is wider than the 200 // Scale from .35 to 1.0 of the total width (which is wider than the
207 // visible width of the image), so the animation "rests" briefly at full 201 // visible width of the image), so the animation "rests" briefly at full
208 // visible width. Cap bounds length at kIconSize to prevent visual 202 // visible width. Cap bounds length at kIconSize to prevent visual
209 // flutter while centering bar within further expanding bounds. 203 // flutter while centering bar within further expanding bounds.
210 double animation = animating_ ? 204 double animation =
211 ShelfButtonAnimation::GetInstance()->GetAnimation() : 1.0; 205 animating_ ? ShelfButtonAnimation::GetInstance()->GetAnimation()
206 : 1.0;
212 double scale = .35 + .65 * animation; 207 double scale = .35 + .65 * animation;
213 if (shelf_->IsHorizontalAlignment()) { 208 if (shelf_->IsHorizontalAlignment()) {
214 int width = base_bounds_.width() * scale; 209 int width = base_bounds_.width() * scale;
215 bounds.set_width(std::min(width, kIconSize)); 210 bounds.set_width(std::min(width, kIconSize));
216 int x_offset = (base_bounds_.width() - bounds.width()) / 2; 211 int x_offset = (base_bounds_.width() - bounds.width()) / 2;
217 bounds.set_x(base_bounds_.x() + x_offset); 212 bounds.set_x(base_bounds_.x() + x_offset);
218 UpdateAnimating(bounds.width() == kIconSize); 213 UpdateAnimating(bounds.width() == kIconSize);
219 } else { 214 } else {
220 int height = base_bounds_.height() * scale; 215 int height = base_bounds_.height() * scale;
221 bounds.set_height(std::min(height, kIconSize)); 216 bounds.set_height(std::min(height, kIconSize));
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 if (width > kIconSize) { 305 if (width > kIconSize) {
311 width = kIconSize; 306 width = kIconSize;
312 height = static_cast<int>(width / aspect_ratio); 307 height = static_cast<int>(width / aspect_ratio);
313 } 308 }
314 309
315 if (width == image.width() && height == image.height()) { 310 if (width == image.width() && height == image.height()) {
316 SetShadowedImage(image); 311 SetShadowedImage(image);
317 return; 312 return;
318 } 313 }
319 314
320 SetShadowedImage(gfx::ImageSkiaOperations::CreateResizedImage(image, 315 SetShadowedImage(gfx::ImageSkiaOperations::CreateResizedImage(
321 skia::ImageOperations::RESIZE_BEST, gfx::Size(width, height))); 316 image, skia::ImageOperations::RESIZE_BEST, gfx::Size(width, height)));
322 } 317 }
323 318
324 const gfx::ImageSkia& ShelfButton::GetImage() const { 319 const gfx::ImageSkia& ShelfButton::GetImage() const {
325 return icon_view_->GetImage(); 320 return icon_view_->GetImage();
326 } 321 }
327 322
328 void ShelfButton::AddState(State state) { 323 void ShelfButton::AddState(State state) {
329 if (!(state_ & state)) { 324 if (!(state_ & state)) {
330 state_ |= state; 325 state_ |= state;
331 Layout(); 326 Layout();
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 views::ImageView::TRAILING)); 572 views::ImageView::TRAILING));
578 bar_->SetVerticalAlignment(shelf->SelectValueForShelfAlignment( 573 bar_->SetVerticalAlignment(shelf->SelectValueForShelfAlignment(
579 views::ImageView::TRAILING, views::ImageView::CENTER, 574 views::ImageView::TRAILING, views::ImageView::CENTER,
580 views::ImageView::CENTER)); 575 views::ImageView::CENTER));
581 bar_->SchedulePaint(); 576 bar_->SchedulePaint();
582 } 577 }
583 bar_->SetVisible(bar_id != 0 && state_ != STATE_NORMAL); 578 bar_->SetVisible(bar_id != 0 && state_ != STATE_NORMAL);
584 } 579 }
585 580
586 } // namespace ash 581 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_button.h ('k') | ash/shelf/shelf_button_pressed_metric_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698