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

Side by Side Diff: chrome/browser/ui/views/download/download_shelf_view.cc

Issue 1408223008: [MD] Share button code between find bar and download shelf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: one more place Created 5 years, 1 month 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
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 "chrome/browser/ui/views/download/download_shelf_view.h" 5 #include "chrome/browser/ui/views/download/download_shelf_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/download/download_item_model.h" 12 #include "chrome/browser/download/download_item_model.h"
13 #include "chrome/browser/download/download_stats.h" 13 #include "chrome/browser/download/download_stats.h"
14 #include "chrome/browser/themes/theme_properties.h" 14 #include "chrome/browser/themes/theme_properties.h"
15 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/chrome_pages.h" 16 #include "chrome/browser/ui/chrome_pages.h"
17 #include "chrome/browser/ui/view_ids.h" 17 #include "chrome/browser/ui/view_ids.h"
18 #include "chrome/browser/ui/views/bar_control_button.h"
18 #include "chrome/browser/ui/views/download/download_item_view.h" 19 #include "chrome/browser/ui/views/download/download_item_view.h"
19 #include "chrome/browser/ui/views/download/download_item_view_md.h" 20 #include "chrome/browser/ui/views/download/download_item_view_md.h"
20 #include "chrome/browser/ui/views/frame/browser_view.h" 21 #include "chrome/browser/ui/views/frame/browser_view.h"
21 #include "chrome/grit/generated_resources.h" 22 #include "chrome/grit/generated_resources.h"
22 #include "content/public/browser/download_item.h" 23 #include "content/public/browser/download_item.h"
23 #include "content/public/browser/download_manager.h" 24 #include "content/public/browser/download_manager.h"
24 #include "content/public/browser/page_navigator.h" 25 #include "content/public/browser/page_navigator.h"
25 #include "grit/theme_resources.h" 26 #include "grit/theme_resources.h"
26 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
27 #include "ui/base/resource/material_design/material_design_controller.h" 28 #include "ui/base/resource/material_design/material_design_controller.h"
28 #include "ui/base/resource/resource_bundle.h" 29 #include "ui/base/resource/resource_bundle.h"
29 #include "ui/base/theme_provider.h" 30 #include "ui/base/theme_provider.h"
30 #include "ui/gfx/animation/slide_animation.h" 31 #include "ui/gfx/animation/slide_animation.h"
31 #include "ui/gfx/canvas.h" 32 #include "ui/gfx/canvas.h"
32 #include "ui/gfx/color_palette.h"
33 #include "ui/gfx/paint_vector_icon.h"
34 #include "ui/gfx/vector_icons_public.h" 33 #include "ui/gfx/vector_icons_public.h"
35 #include "ui/resources/grit/ui_resources.h" 34 #include "ui/resources/grit/ui_resources.h"
36 #include "ui/views/background.h" 35 #include "ui/views/background.h"
37 #include "ui/views/border.h" 36 #include "ui/views/border.h"
38 #include "ui/views/controls/button/image_button.h" 37 #include "ui/views/controls/button/image_button.h"
39 #include "ui/views/controls/button/label_button.h" 38 #include "ui/views/controls/button/label_button.h"
40 #include "ui/views/controls/image_view.h" 39 #include "ui/views/controls/image_view.h"
41 #include "ui/views/controls/link.h" 40 #include "ui/views/controls/link.h"
42 #include "ui/views/mouse_watcher_view_host.h" 41 #include "ui/views/mouse_watcher_view_host.h"
43 42
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 this) { 135 this) {
137 mouse_watcher_.set_notify_on_exit_time( 136 mouse_watcher_.set_notify_on_exit_time(
138 base::TimeDelta::FromMilliseconds(kNotifyOnExitTimeMS)); 137 base::TimeDelta::FromMilliseconds(kNotifyOnExitTimeMS));
139 set_id(VIEW_ID_DOWNLOAD_SHELF); 138 set_id(VIEW_ID_DOWNLOAD_SHELF);
140 parent->AddChildView(this); 139 parent->AddChildView(this);
141 140
142 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 141 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
143 142
144 arrow_image_ = new views::ImageView(); 143 arrow_image_ = new views::ImageView();
145 AddChildView(arrow_image_); 144 AddChildView(arrow_image_);
146 close_button_ = new views::ImageButton(this);
147 close_button_->SetAccessibleName(
148 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE));
149 if (!ui::MaterialDesignController::IsModeMaterial()) { 145 if (!ui::MaterialDesignController::IsModeMaterial()) {
150 arrow_image_->SetImage(rb.GetImageSkiaNamed(IDR_DOWNLOADS_FAVICON)); 146 arrow_image_->SetImage(rb.GetImageSkiaNamed(IDR_DOWNLOADS_FAVICON));
151 147
152 views::Link* show_all_view = 148 views::Link* show_all_view =
153 new views::Link(l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS)); 149 new views::Link(l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS));
154 show_all_view->set_listener(this); 150 show_all_view->set_listener(this);
155 show_all_view_ = show_all_view; 151 show_all_view_ = show_all_view;
156 152
153 close_button_ = new views::ImageButton(this);
157 close_button_->SetImage(views::CustomButton::STATE_NORMAL, 154 close_button_->SetImage(views::CustomButton::STATE_NORMAL,
158 rb.GetImageSkiaNamed(IDR_CLOSE_1)); 155 rb.GetImageSkiaNamed(IDR_CLOSE_1));
159 close_button_->SetImage(views::CustomButton::STATE_HOVERED, 156 close_button_->SetImage(views::CustomButton::STATE_HOVERED,
160 rb.GetImageSkiaNamed(IDR_CLOSE_1_H)); 157 rb.GetImageSkiaNamed(IDR_CLOSE_1_H));
161 close_button_->SetImage(views::CustomButton::STATE_PRESSED, 158 close_button_->SetImage(views::CustomButton::STATE_PRESSED,
162 rb.GetImageSkiaNamed(IDR_CLOSE_1_P)); 159 rb.GetImageSkiaNamed(IDR_CLOSE_1_P));
163 } else { 160 } else {
164 views::LabelButton* show_all_view = new views::LabelButton( 161 views::LabelButton* show_all_view = new views::LabelButton(
165 this, l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS_MD)); 162 this, l10n_util::GetStringUTF16(IDS_SHOW_ALL_DOWNLOADS_MD));
166 show_all_view->SetFocusable(true); 163 show_all_view->SetFocusable(true);
167 show_all_view->SetStyle(views::Button::STYLE_BUTTON); 164 show_all_view->SetStyle(views::Button::STYLE_BUTTON);
168 show_all_view_ = show_all_view; 165 show_all_view_ = show_all_view;
169 166
170 // TODO(estade): share this button init code with the find in page bar; 167 BarControlButton* close_button = new BarControlButton(this);
171 // also fix theming. 168 close_button->SetIcon(gfx::VectorIconId::BAR_CLOSE,
172 close_button_->SetBorder(views::Border::CreateEmptyBorder(4, 4, 4, 4)); 169 base::Bind(&DownloadShelfView::GetTextColorForIconMd,
173 close_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, 170 base::Unretained(this)));
174 views::ImageButton::ALIGN_MIDDLE); 171 close_button_ = close_button;
175 gfx::ImageSkia image = gfx::CreateVectorIcon(gfx::VectorIconId::BAR_CLOSE,
176 16, gfx::kChromeIconGrey);
177 close_button_->SetImage(views::CustomButton::STATE_NORMAL, &image);
178 } 172 }
173 close_button_->SetAccessibleName(
174 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE));
179 AddChildView(show_all_view_); 175 AddChildView(show_all_view_);
180 AddChildView(close_button_); 176 AddChildView(close_button_);
181 177
182 new_item_animation_.SetSlideDuration(kNewItemAnimationDurationMs); 178 new_item_animation_.SetSlideDuration(kNewItemAnimationDurationMs);
183 shelf_animation_.SetSlideDuration(kShelfAnimationDurationMs); 179 shelf_animation_.SetSlideDuration(kShelfAnimationDurationMs);
184 } 180 }
185 181
186 DownloadShelfView::~DownloadShelfView() { 182 DownloadShelfView::~DownloadShelfView() {
187 parent_->RemoveChildView(this); 183 parent_->RemoveChildView(this);
188 } 184 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 void DownloadShelfView::UpdateColorsFromTheme() { 386 void DownloadShelfView::UpdateColorsFromTheme() {
391 if (show_all_view_ && close_button_ && GetThemeProvider()) { 387 if (show_all_view_ && close_button_ && GetThemeProvider()) {
392 set_background(views::Background::CreateSolidBackground( 388 set_background(views::Background::CreateSolidBackground(
393 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR))); 389 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR)));
394 390
395 if (!ui::MaterialDesignController::IsModeMaterial()) { 391 if (!ui::MaterialDesignController::IsModeMaterial()) {
396 views::Link* show_all_view = static_cast<views::Link*>(show_all_view_); 392 views::Link* show_all_view = static_cast<views::Link*>(show_all_view_);
397 show_all_view->SetBackgroundColor(background()->get_color()); 393 show_all_view->SetBackgroundColor(background()->get_color());
398 show_all_view->SetEnabledColor( 394 show_all_view->SetEnabledColor(
399 GetThemeProvider()->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT)); 395 GetThemeProvider()->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT));
396
397 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
398 close_button_->SetBackground(
399 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT),
400 rb.GetImageSkiaNamed(IDR_CLOSE_1),
401 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK));
400 } 402 }
401
402 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
403 set_background(views::Background::CreateSolidBackground(
404 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR)));
405 close_button_->SetBackground(
406 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT),
407 rb.GetImageSkiaNamed(IDR_CLOSE_1),
408 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK));
409 } 403 }
410 } 404 }
411 405
412 void DownloadShelfView::OnThemeChanged() { 406 void DownloadShelfView::OnThemeChanged() {
413 UpdateColorsFromTheme(); 407 UpdateColorsFromTheme();
414 } 408 }
415 409
416 void DownloadShelfView::LinkClicked(views::Link* source, int event_flags) { 410 void DownloadShelfView::LinkClicked(views::Link* source, int event_flags) {
417 chrome::ShowDownloads(browser_); 411 chrome::ShowDownloads(browser_);
418 } 412 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 return false; 481 return false;
488 } 482 }
489 return true; 483 return true;
490 } 484 }
491 485
492 content::DownloadItem* DownloadShelfView::GetDownloadItemForView(size_t i) { 486 content::DownloadItem* DownloadShelfView::GetDownloadItemForView(size_t i) {
493 if (ui::MaterialDesignController::IsModeMaterial()) 487 if (ui::MaterialDesignController::IsModeMaterial())
494 return static_cast<DownloadItemViewMd*>(download_views_[i])->download(); 488 return static_cast<DownloadItemViewMd*>(download_views_[i])->download();
495 return static_cast<DownloadItemView*>(download_views_[i])->download(); 489 return static_cast<DownloadItemView*>(download_views_[i])->download();
496 } 490 }
491
492 SkColor DownloadShelfView::GetTextColorForIconMd() {
493 return DownloadItemViewMd::GetTextColorForThemeProvider(GetThemeProvider());
494 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698