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

Side by Side Diff: ash/system/user/tray_user.cc

Issue 9969068: ash: Animate changes in the uber tray. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « ash/system/tray_update.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/system/user/tray_user.h" 5 #include "ash/system/user/tray_user.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/system/tray/system_tray_delegate.h" 8 #include "ash/system/tray/system_tray_delegate.h"
9 #include "ash/system/tray/tray_constants.h" 9 #include "ash/system/tray/tray_constants.h"
10 #include "ash/system/tray/tray_item_view.h"
10 #include "ash/system/tray/tray_views.h" 11 #include "ash/system/tray/tray_views.h"
11 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
12 #include "grit/ash_strings.h" 13 #include "grit/ash_strings.h"
13 #include "skia/ext/image_operations.h" 14 #include "skia/ext/image_operations.h"
14 #include "third_party/skia/include/core/SkCanvas.h" 15 #include "third_party/skia/include/core/SkCanvas.h"
15 #include "third_party/skia/include/core/SkPaint.h" 16 #include "third_party/skia/include/core/SkPaint.h"
16 #include "third_party/skia/include/core/SkPath.h" 17 #include "third_party/skia/include/core/SkPath.h"
17 #include "third_party/skia/include/core/SkShader.h" 18 #include "third_party/skia/include/core/SkShader.h"
18 #include "ui/base/resource/resource_bundle.h" 19 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/canvas.h" 20 #include "ui/gfx/canvas.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 views::View* update_; 177 views::View* update_;
177 178
178 TrayPopupTextButton* shutdown_; 179 TrayPopupTextButton* shutdown_;
179 TrayPopupTextButton* signout_; 180 TrayPopupTextButton* signout_;
180 TrayPopupTextButton* lock_; 181 TrayPopupTextButton* lock_;
181 182
182 DISALLOW_COPY_AND_ASSIGN(UserView); 183 DISALLOW_COPY_AND_ASSIGN(UserView);
183 }; 184 };
184 185
185 // A custom image view with rounded edges. 186 // A custom image view with rounded edges.
186 class RoundedImageView : public views::View { 187 class RoundedImageView : public TrayItemView {
187 public: 188 public:
188 // Constructs a new rounded image view with rounded corners of radius 189 // Constructs a new rounded image view with rounded corners of radius
189 // |corner_radius|. 190 // |corner_radius|.
190 explicit RoundedImageView(int corner_radius) : corner_radius_(corner_radius) { 191 explicit RoundedImageView(int corner_radius) : corner_radius_(corner_radius) {
191 } 192 }
192 193
193 virtual ~RoundedImageView() { 194 virtual ~RoundedImageView() {
194 } 195 }
195 196
196 // Set the bitmap that should be displayed from a pointer. The pointer 197 // Set the bitmap that should be displayed from a pointer. The pointer
197 // contents is copied in the receiver's bitmap. 198 // contents is copied in the receiver's bitmap.
198 void SetImage(const SkBitmap& bm, const gfx::Size& size) { 199 void SetImage(const SkBitmap& bm, const gfx::Size& size) {
199 image_ = bm; 200 image_ = bm;
200 image_size_ = size; 201 image_size_ = size;
201 202
202 // Try to get the best image quality for the avatar. 203 // Try to get the best image quality for the avatar.
203 resized_ = skia::ImageOperations::Resize(image_, 204 resized_ = skia::ImageOperations::Resize(image_,
204 skia::ImageOperations::RESIZE_BEST, size.width(), size.height()); 205 skia::ImageOperations::RESIZE_BEST, size.width(), size.height());
205 PreferredSizeChanged(); 206 if (GetWidget() && visible()) {
206 SchedulePaint(); 207 PreferredSizeChanged();
208 SchedulePaint();
209 }
207 } 210 }
208 211
209 // Overridden from views::View. 212 // Overridden from TrayItemView.
210 virtual gfx::Size GetPreferredSize() OVERRIDE { 213 virtual gfx::Size DesiredSize() OVERRIDE {
211 return gfx::Size(image_size_.width() + GetInsets().width(), 214 return gfx::Size(image_size_.width() + GetInsets().width(),
212 image_size_.height() + GetInsets().height()); 215 image_size_.height() + GetInsets().height());
213 } 216 }
214 217
218 virtual int GetAnimationDurationMS() OVERRIDE {
219 return 750;
220 }
221
222 // Overridden from views::View.
215 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { 223 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
216 View::OnPaint(canvas); 224 View::OnPaint(canvas);
217 gfx::Rect image_bounds(GetPreferredSize()); 225 gfx::Rect image_bounds(DesiredSize());
218 image_bounds.Inset(GetInsets()); 226 image_bounds.Inset(GetInsets());
219 const SkScalar kRadius = SkIntToScalar(corner_radius_); 227 const SkScalar kRadius = SkIntToScalar(corner_radius_);
220 SkPath path; 228 SkPath path;
221 path.addRoundRect(gfx::RectToSkRect(image_bounds), kRadius, kRadius); 229 path.addRoundRect(gfx::RectToSkRect(image_bounds), kRadius, kRadius);
222 230
223 SkPaint paint; 231 SkPaint paint;
224 SkShader* shader = SkShader::CreateBitmapShader(resized_, 232 SkShader* shader = SkShader::CreateBitmapShader(resized_,
225 SkShader::kRepeat_TileMode, 233 SkShader::kRepeat_TileMode,
226 SkShader::kRepeat_TileMode); 234 SkShader::kRepeat_TileMode);
227 SkMatrix shader_matrix; 235 SkMatrix shader_matrix;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 } 298 }
291 299
292 void TrayUser::OnUserUpdate() { 300 void TrayUser::OnUserUpdate() {
293 avatar_->SetImage( 301 avatar_->SetImage(
294 ash::Shell::GetInstance()->tray_delegate()->GetUserImage(), 302 ash::Shell::GetInstance()->tray_delegate()->GetUserImage(),
295 gfx::Size(kUserIconSize, kUserIconSize)); 303 gfx::Size(kUserIconSize, kUserIconSize));
296 } 304 }
297 305
298 } // namespace internal 306 } // namespace internal
299 } // namespace ash 307 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/tray_update.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698