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

Side by Side Diff: ui/aura_shell/launcher/launcher_view.cc

Issue 8957012: Another set of icons for the launcher. The chrome logo now shows the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 | « ui/aura_shell/examples/aura_shell_main.cc ('k') | ui/aura_shell/shell_delegate.h » ('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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura_shell/launcher/launcher_view.h" 5 #include "ui/aura_shell/launcher/launcher_view.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "grit/ui_resources.h" 8 #include "grit/ui_resources.h"
9 #include "ui/aura/window.h" 9 #include "ui/aura/window.h"
10 #include "ui/aura_shell/launcher/app_launcher_button.h" 10 #include "ui/aura_shell/launcher/app_launcher_button.h"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 model_->RemoveObserver(this); 223 model_->RemoveObserver(this);
224 } 224 }
225 225
226 void LauncherView::Init() { 226 void LauncherView::Init() {
227 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 227 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
228 model_->AddObserver(this); 228 model_->AddObserver(this);
229 229
230 set_background( 230 set_background(
231 views::Background::CreateBackgroundPainter(true, new ShelfPainter())); 231 views::Background::CreateBackgroundPainter(true, new ShelfPainter()));
232 232
233 new_browser_button_ = new views::ImageButton(this); 233 show_apps_button_ = new views::ImageButton(this);
234 ShellDelegate* delegate = Shell::GetInstance()->delegate(); 234 show_apps_button_->SetImage(
235 int new_browser_button_image_id = delegate ?
236 delegate->GetResourceIDForNewBrowserWindow() :
237 IDR_AURA_LAUNCHER_ICON_CHROME;
238 new_browser_button_->SetImage(
239 views::CustomButton::BS_NORMAL, 235 views::CustomButton::BS_NORMAL,
240 rb.GetImageNamed(new_browser_button_image_id).ToSkBitmap()); 236 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST).ToSkBitmap());
241 ConfigureChildView(new_browser_button_); 237 show_apps_button_->SetImage(
242 AddChildView(new_browser_button_); 238 views::CustomButton::BS_HOT,
239 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_HOT).ToSkBitmap());
240 show_apps_button_->SetImage(
241 views::CustomButton::BS_PUSHED,
242 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_PUSHED).ToSkBitmap());
243 ConfigureChildView(show_apps_button_);
244 AddChildView(show_apps_button_);
243 245
244 const LauncherItems& items(model_->items()); 246 const LauncherItems& items(model_->items());
245 for (LauncherItems::const_iterator i = items.begin(); i != items.end(); ++i) { 247 for (LauncherItems::const_iterator i = items.begin(); i != items.end(); ++i) {
246 views::View* child = CreateViewForItem(*i); 248 views::View* child = CreateViewForItem(*i);
247 child->SetPaintToLayer(true); 249 child->SetPaintToLayer(true);
248 view_model_->Add(child, static_cast<int>(i - items.begin())); 250 view_model_->Add(child, static_cast<int>(i - items.begin()));
249 AddChildView(child); 251 AddChildView(child);
250 } 252 }
251 253
252 show_apps_button_ = new views::ImageButton(this); 254 new_browser_button_ = new views::ImageButton(this);
253 show_apps_button_->SetImage( 255 new_browser_button_->SetImage(
254 views::CustomButton::BS_NORMAL, 256 views::CustomButton::BS_NORMAL,
255 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST).ToSkBitmap()); 257 rb.GetImageNamed(IDR_AURA_LAUNCHER_NEW_BROWSER).ToSkBitmap());
256 show_apps_button_->SetImage( 258 new_browser_button_->SetImage(
257 views::CustomButton::BS_HOT, 259 views::CustomButton::BS_HOT,
258 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_HOT).ToSkBitmap()); 260 rb.GetImageNamed(IDR_AURA_LAUNCHER_NEW_BROWSER_HOT).ToSkBitmap());
259 show_apps_button_->SetImage( 261 new_browser_button_->SetImage(
260 views::CustomButton::BS_PUSHED, 262 views::CustomButton::BS_PUSHED,
261 rb.GetImageNamed(IDR_AURA_LAUNCHER_ICON_APPLIST_PUSHED).ToSkBitmap()); 263 rb.GetImageNamed(IDR_AURA_LAUNCHER_NEW_BROWSER_PUSHED).ToSkBitmap());
262 ConfigureChildView(show_apps_button_); 264 ConfigureChildView(new_browser_button_);
263 AddChildView(show_apps_button_); 265 AddChildView(new_browser_button_);
264 266
265 overflow_button_ = new views::ImageButton(this); 267 overflow_button_ = new views::ImageButton(this);
266 overflow_button_->SetImage( 268 overflow_button_->SetImage(
267 views::CustomButton::BS_NORMAL, 269 views::CustomButton::BS_NORMAL,
268 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW).ToSkBitmap()); 270 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW).ToSkBitmap());
269 overflow_button_->SetImage( 271 overflow_button_->SetImage(
270 views::CustomButton::BS_HOT, 272 views::CustomButton::BS_HOT,
271 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW_HOT).ToSkBitmap()); 273 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW_HOT).ToSkBitmap());
272 overflow_button_->SetImage( 274 overflow_button_->SetImage(
273 views::CustomButton::BS_PUSHED, 275 views::CustomButton::BS_PUSHED,
274 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW_PUSHED).ToSkBitmap()); 276 rb.GetImageNamed(IDR_AURA_LAUNCHER_OVERFLOW_PUSHED).ToSkBitmap());
275 ConfigureChildView(overflow_button_); 277 ConfigureChildView(overflow_button_);
276 AddChildView(overflow_button_); 278 AddChildView(overflow_button_);
277 279
278 // We'll layout when our bounds change. 280 // We'll layout when our bounds change.
279 } 281 }
280 282
281 void LauncherView::LayoutToIdealBounds() { 283 void LauncherView::LayoutToIdealBounds() {
282 IdealBounds ideal_bounds; 284 IdealBounds ideal_bounds;
283 CalculateIdealBounds(&ideal_bounds); 285 CalculateIdealBounds(&ideal_bounds);
286 show_apps_button_->SetBoundsRect(ideal_bounds.show_apps_bounds);
284 new_browser_button_->SetBoundsRect(ideal_bounds.new_browser_bounds); 287 new_browser_button_->SetBoundsRect(ideal_bounds.new_browser_bounds);
285 show_apps_button_->SetBoundsRect(ideal_bounds.show_apps_bounds);
286 ViewModelUtils::SetViewBoundsToIdealBounds(*view_model_); 288 ViewModelUtils::SetViewBoundsToIdealBounds(*view_model_);
287 } 289 }
288 290
289 void LauncherView::CalculateIdealBounds(IdealBounds* bounds) { 291 void LauncherView::CalculateIdealBounds(IdealBounds* bounds) {
290 int available_width = width(); 292 int available_width = width();
291 if (!available_width) 293 if (!available_width)
292 return; 294 return;
293 295
294 // new_browser_button first. 296 // show_apps_button_ first.
295 int x = kLeadingInset; 297 int x = kLeadingInset;
296 gfx::Size pref = new_browser_button_->GetPreferredSize(); 298 gfx::Size pref = show_apps_button_->GetPreferredSize();
297 bounds->new_browser_bounds = gfx::Rect( 299 bounds->show_apps_bounds = gfx::Rect(
298 x, (kPreferredHeight - pref.height()) / 2, pref.width(), pref.height()); 300 x, (kPreferredHeight - pref.height()) / 2, pref.width(), pref.height());
299 x += bounds->new_browser_bounds.width() + kHorizontalPadding; 301 x += bounds->show_apps_bounds.width() + kHorizontalPadding;
302 // TODO: remove when we get better images.
303 x -= 6;
300 304
301 // Then launcher buttons. 305 // Then launcher buttons.
302 for (int i = 0; i < view_model_->view_size(); ++i) { 306 for (int i = 0; i < view_model_->view_size(); ++i) {
303 pref = view_model_->view_at(i)->GetPreferredSize(); 307 pref = view_model_->view_at(i)->GetPreferredSize();
304 view_model_->set_ideal_bounds(i, gfx::Rect( 308 view_model_->set_ideal_bounds(i, gfx::Rect(
305 x, (kPreferredHeight - pref.height()) / 2, pref.width(), 309 x, (kPreferredHeight - pref.height()) / 2, pref.width(),
306 pref.height())); 310 pref.height()));
307 x += pref.width() + kHorizontalPadding; 311 x += pref.width() + kHorizontalPadding;
308 } 312 }
309 313
310 // Show apps button and overflow button. 314 // new_browser_button_ and overflow button.
311 bounds->show_apps_bounds.set_size(show_apps_button_->GetPreferredSize()); 315 bounds->new_browser_bounds.set_size(new_browser_button_->GetPreferredSize());
312 bounds->overflow_bounds.set_size(overflow_button_->GetPreferredSize()); 316 bounds->overflow_bounds.set_size(overflow_button_->GetPreferredSize());
313 int last_visible_index = DetermineLastVisibleIndex( 317 int last_visible_index = DetermineLastVisibleIndex(
314 available_width - kLeadingInset - bounds->show_apps_bounds.width() - 318 available_width - kLeadingInset - bounds->new_browser_bounds.width() -
315 kHorizontalPadding - bounds->overflow_bounds.width() - 319 kHorizontalPadding - bounds->overflow_bounds.width() -
316 kHorizontalPadding); 320 kHorizontalPadding);
317 bool show_overflow = (last_visible_index + 1 != view_model_->view_size()); 321 bool show_overflow = (last_visible_index + 1 != view_model_->view_size());
318 if (overflow_button_->visible() != show_overflow) { 322 if (overflow_button_->visible() != show_overflow) {
319 // Only change visibility of the views if the visibility of the overflow 323 // Only change visibility of the views if the visibility of the overflow
320 // button changes. Otherwise we'll effect the insertion animation, which 324 // button changes. Otherwise we'll effect the insertion animation, which
321 // changes the visibility. 325 // changes the visibility.
322 for (int i = 0; i <= last_visible_index; ++i) 326 for (int i = 0; i <= last_visible_index; ++i)
323 view_model_->view_at(i)->SetVisible(true); 327 view_model_->view_at(i)->SetVisible(true);
324 for (int i = last_visible_index + 1; i < view_model_->view_size(); ++i) 328 for (int i = last_visible_index + 1; i < view_model_->view_size(); ++i)
325 view_model_->view_at(i)->SetVisible(false); 329 view_model_->view_at(i)->SetVisible(false);
326 } 330 }
327 331
328 overflow_button_->SetVisible(show_overflow); 332 overflow_button_->SetVisible(show_overflow);
329 if (show_overflow) { 333 if (show_overflow) {
330 DCHECK_NE(0, view_model_->view_size()); 334 DCHECK_NE(0, view_model_->view_size());
331 x = view_model_->ideal_bounds(last_visible_index).right() + 335 x = view_model_->ideal_bounds(last_visible_index).right() +
332 kHorizontalPadding; 336 kHorizontalPadding;
333 bounds->overflow_bounds.set_x(x); 337 bounds->overflow_bounds.set_x(x);
334 bounds->overflow_bounds.set_y( 338 bounds->overflow_bounds.set_y(
335 (kPreferredHeight - bounds->overflow_bounds.height()) / 2); 339 (kPreferredHeight - bounds->overflow_bounds.height()) / 2);
336 x = bounds->overflow_bounds.right() + kHorizontalPadding; 340 x = bounds->overflow_bounds.right() + kHorizontalPadding;
337 } 341 }
338 // TODO(sky): -6 is a hack, remove when we get better images. 342 bounds->new_browser_bounds.set_x(x);
339 bounds->show_apps_bounds.set_x(x - 6); 343 bounds->new_browser_bounds.set_y(
340 bounds->show_apps_bounds.set_y( 344 (kPreferredHeight - bounds->new_browser_bounds.height()) / 2);
341 (kPreferredHeight - bounds->show_apps_bounds.height()) / 2);
342 } 345 }
343 346
344 int LauncherView::DetermineLastVisibleIndex(int max_x) { 347 int LauncherView::DetermineLastVisibleIndex(int max_x) {
345 int index = view_model_->view_size() - 1; 348 int index = view_model_->view_size() - 1;
346 while (index >= 0 && view_model_->ideal_bounds(index).right() > max_x) 349 while (index >= 0 && view_model_->ideal_bounds(index).right() > max_x)
347 index--; 350 index--;
348 return index; 351 return index;
349 } 352 }
350 353
351 void LauncherView::AnimateToIdealBounds() { 354 void LauncherView::AnimateToIdealBounds() {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 if (!was_dragging) 494 if (!was_dragging)
492 return; 495 return;
493 496
494 view_model_->Move(view_model_->GetIndexOfView(drag_view), start_drag_index_); 497 view_model_->Move(view_model_->GetIndexOfView(drag_view), start_drag_index_);
495 AnimateToIdealBounds(); 498 AnimateToIdealBounds();
496 } 499 }
497 500
498 gfx::Size LauncherView::GetPreferredSize() { 501 gfx::Size LauncherView::GetPreferredSize() {
499 IdealBounds ideal_bounds; 502 IdealBounds ideal_bounds;
500 CalculateIdealBounds(&ideal_bounds); 503 CalculateIdealBounds(&ideal_bounds);
501 return gfx::Size(ideal_bounds.show_apps_bounds.right() + kLeadingInset, 504 return gfx::Size(ideal_bounds.new_browser_bounds.right() + kLeadingInset,
502 kPreferredHeight); 505 kPreferredHeight);
503 } 506 }
504 507
505 void LauncherView::OnBoundsChanged(const gfx::Rect& previous_bounds) { 508 void LauncherView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
506 LayoutToIdealBounds(); 509 LayoutToIdealBounds();
507 } 510 }
508 511
509 void LauncherView::LauncherItemAdded(int model_index) { 512 void LauncherView::LauncherItemAdded(int model_index) {
510 CancelDrag(NULL); 513 CancelDrag(NULL);
511 514
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 } else { 606 } else {
604 int view_index = view_model_->GetIndexOfView(sender); 607 int view_index = view_model_->GetIndexOfView(sender);
605 // May be -1 while in the process of animating closed. 608 // May be -1 while in the process of animating closed.
606 if (view_index != -1) 609 if (view_index != -1)
607 delegate->LauncherItemClicked(model_->items()[view_index]); 610 delegate->LauncherItemClicked(model_->items()[view_index]);
608 } 611 }
609 } 612 }
610 613
611 } // namespace internal 614 } // namespace internal
612 } // namespace aura_shell 615 } // namespace aura_shell
OLDNEW
« no previous file with comments | « ui/aura_shell/examples/aura_shell_main.cc ('k') | ui/aura_shell/shell_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698