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

Side by Side Diff: chrome/browser/ui/views/location_bar/zoom_view.cc

Issue 10736028: Refactor browser window zoom handling and enable zoom icon on all platforms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix mac Created 8 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 | Annotate | Revision Log
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/location_bar/zoom_view.h" 5 #include "chrome/browser/ui/views/location_bar/zoom_view.h"
6 6
7 #include "chrome/browser/ui/views/browser_dialogs.h" 7 #include "chrome/browser/ui/views/browser_dialogs.h"
8 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h" 8 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h"
9 #include "chrome/browser/ui/view_ids.h" 9 #include "chrome/browser/ui/view_ids.h"
10 #include "grit/generated_resources.h" 10 #include "grit/generated_resources.h"
11 #include "grit/theme_resources.h" 11 #include "grit/theme_resources.h"
12 #include "ui/base/accessibility/accessible_view_state.h" 12 #include "ui/base/accessibility/accessible_view_state.h"
13 #include "ui/base/l10n/l10n_util.h" 13 #include "ui/base/l10n/l10n_util.h"
14 #include "ui/base/resource/resource_bundle.h" 14 #include "ui/base/resource/resource_bundle.h"
15 #include "ui/gfx/size.h" 15 #include "ui/gfx/size.h"
16 16
17 ZoomView::ZoomView(ToolbarModel* toolbar_model) 17 ZoomView::ZoomView(ToolbarModel* toolbar_model)
18 : toolbar_model_(toolbar_model), 18 : toolbar_model_(toolbar_model) {
19 zoom_icon_state_(ZoomController::NONE),
20 zoom_percent_(100) {
21 set_accessibility_focusable(true); 19 set_accessibility_focusable(true);
20 Update(NULL);
22 } 21 }
23 22
24 ZoomView::~ZoomView() { 23 ZoomView::~ZoomView() {
25 } 24 }
26 25
27 void ZoomView::SetZoomIconState(ZoomController::ZoomIconState zoom_icon_state) { 26 void ZoomView::Update(ZoomController* zoom_controller) {
28 if (zoom_icon_state == zoom_icon_state_) 27 if (!zoom_controller || zoom_controller->IsAtDefaultZoom() ||
28 toolbar_model_->input_in_progress()) {
29 SetVisible(false);
29 return; 30 return;
31 }
30 32
31 zoom_icon_state_ = zoom_icon_state; 33 int zoom_percent = zoom_controller->zoom_percent();
32 Update(); 34 SetTooltipText(
33 } 35 l10n_util::GetStringFUTF16Int(IDS_TOOLTIP_ZOOM, zoom_percent));
34 36 SetImage(ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
35 void ZoomView::SetZoomIconTooltipPercent(int zoom_percent) { 37 zoom_percent > 100 ? IDR_ZOOM_PLUS : IDR_ZOOM_MINUS));
Kyle Horimoto 2012/07/24 03:22:28 Same thing with 100 vs. default zoom percent.
Dan Beam 2012/08/15 09:04:59 Done.
36 if (zoom_percent == zoom_percent_) 38 SetVisible(true);
37 return;
38
39 zoom_percent_ = zoom_percent;
40 Update();
41 }
42
43 void ZoomView::Update() {
44 if (toolbar_model_->input_in_progress() ||
45 zoom_icon_state_ == ZoomController::NONE) {
46 SetVisible(false);
47 ZoomBubbleView::CloseBubble();
48 } else {
49 SetVisible(true);
50 SetTooltipText(
51 l10n_util::GetStringFUTF16Int(IDS_TOOLTIP_ZOOM, zoom_percent_));
52 SetImage(ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
53 zoom_icon_state_ == ZoomController::ZOOM_PLUS_ICON ?
54 IDR_ZOOM_PLUS : IDR_ZOOM_MINUS));
55 }
56 } 39 }
57 40
58 void ZoomView::GetAccessibleState(ui::AccessibleViewState* state) { 41 void ZoomView::GetAccessibleState(ui::AccessibleViewState* state) {
59 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_ZOOM); 42 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_ZOOM);
60 state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; 43 state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON;
61 } 44 }
62 45
63 bool ZoomView::GetTooltipText(const gfx::Point& p, string16* tooltip) const { 46 bool ZoomView::GetTooltipText(const gfx::Point& p, string16* tooltip) const {
64 // Don't show tooltip if the zoom bubble is displayed. 47 // Don't show tooltip if the zoom bubble is displayed.
65 return !ZoomBubbleView::IsShowing() && ImageView::GetTooltipText(p, tooltip); 48 return !ZoomBubbleView::IsShowing() && ImageView::GetTooltipText(p, tooltip);
66 } 49 }
67
68 bool ZoomView::OnMousePressed(const views::MouseEvent& event) {
69 // Do nothing until mouse is released.
70 return true;
71 }
72
73 void ZoomView::OnMouseReleased(const views::MouseEvent& event) {
74 if (event.IsOnlyLeftMouseButton() && HitTest(event.location()))
75 ZoomBubbleView::ShowBubble(this, zoom_percent_, false);
76 }
77
78 bool ZoomView::OnKeyPressed(const views::KeyEvent& event) {
79 if (event.key_code() != ui::VKEY_SPACE &&
80 event.key_code() != ui::VKEY_RETURN)
81 return false;
82
83 ZoomBubbleView::ShowBubble(this, zoom_percent_, false);
84 return true;
85 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698