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

Side by Side Diff: ash/frame/caption_buttons/frame_caption_button_container_view.cc

Issue 2906803002: Rename MaximizeMode to TabletMode (Closed)
Patch Set: updated filter Created 3 years, 7 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
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/frame/caption_buttons/frame_caption_button_container_view.h" 5 #include "ash/frame/caption_buttons/frame_caption_button_container_view.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <map> 8 #include <map>
9 9
10 #include "ash/frame/caption_buttons/frame_caption_button.h" 10 #include "ash/frame/caption_buttons/frame_caption_button.h"
11 #include "ash/frame/caption_buttons/frame_size_button.h" 11 #include "ash/frame/caption_buttons/frame_size_button.h"
12 #include "ash/shell.h" 12 #include "ash/shell.h"
13 #include "ash/shell_port.h" 13 #include "ash/shell_port.h"
14 #include "ash/wm/maximize_mode/maximize_mode_controller.h" 14 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
15 #include "ui/base/hit_test.h" 15 #include "ui/base/hit_test.h"
16 #include "ui/base/l10n/l10n_util.h" 16 #include "ui/base/l10n/l10n_util.h"
17 #include "ui/compositor/scoped_animation_duration_scale_mode.h" 17 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
18 #include "ui/gfx/animation/slide_animation.h" 18 #include "ui/gfx/animation/slide_animation.h"
19 #include "ui/gfx/animation/tween.h" 19 #include "ui/gfx/animation/tween.h"
20 #include "ui/gfx/canvas.h" 20 #include "ui/gfx/canvas.h"
21 #include "ui/gfx/geometry/insets.h" 21 #include "ui/gfx/geometry/insets.h"
22 #include "ui/gfx/geometry/point.h" 22 #include "ui/gfx/geometry/point.h"
23 #include "ui/gfx/vector_icon_types.h" 23 #include "ui/gfx/vector_icon_types.h"
24 #include "ui/strings/grit/ui_strings.h" // Accessibility names 24 #include "ui/strings/grit/ui_strings.h" // Accessibility names
25 #include "ui/views/widget/widget.h" 25 #include "ui/views/widget/widget.h"
26 #include "ui/views/widget/widget_delegate.h" 26 #include "ui/views/widget/widget_delegate.h"
27 27
28 namespace ash { 28 namespace ash {
29 29
30 namespace { 30 namespace {
31 31
32 // Duration of the animation of the position of |minimize_button_|. 32 // Duration of the animation of the position of |minimize_button_|.
33 const int kPositionAnimationDurationMs = 500; 33 const int kPositionAnimationDurationMs = 500;
34 34
35 // Duration of the animation of the alpha of |size_button_|. 35 // Duration of the animation of the alpha of |size_button_|.
36 const int kAlphaAnimationDurationMs = 250; 36 const int kAlphaAnimationDurationMs = 250;
37 37
38 // Delay during |maximize_mode_animation_| hide to wait before beginning to 38 // Delay during |tablet_mode_animation_| hide to wait before beginning to
39 // animate the position of |minimize_button_|. 39 // animate the position of |minimize_button_|.
40 const int kHidePositionDelayMs = 100; 40 const int kHidePositionDelayMs = 100;
41 41
42 // Duration of |maximize_mode_animation_| hiding. 42 // Duration of |tablet_mode_animation_| hiding.
43 // Hiding size button 250 43 // Hiding size button 250
44 // |------------------------| 44 // |------------------------|
45 // Delay 100 Slide minimize button 500 45 // Delay 100 Slide minimize button 500
46 // |---------|-------------------------------------------------| 46 // |---------|-------------------------------------------------|
47 const int kHideAnimationDurationMs = 47 const int kHideAnimationDurationMs =
48 kHidePositionDelayMs + kPositionAnimationDurationMs; 48 kHidePositionDelayMs + kPositionAnimationDurationMs;
49 49
50 // Delay during |maximize_mode_animation_| show to wait before beginning to 50 // Delay during |tablet_mode_animation_| show to wait before beginning to
51 // animate the alpha of |size_button_|. 51 // animate the alpha of |size_button_|.
52 const int kShowAnimationAlphaDelayMs = 100; 52 const int kShowAnimationAlphaDelayMs = 100;
53 53
54 // Duration of |maximize_mode_animation_| showing. 54 // Duration of |tablet_mode_animation_| showing.
55 // Slide minimize button 500 55 // Slide minimize button 500
56 // |-------------------------------------------------| 56 // |-------------------------------------------------|
57 // Delay 100 Show size button 250 57 // Delay 100 Show size button 250
58 // |---------|-----------------------| 58 // |---------|-----------------------|
59 const int kShowAnimationDurationMs = kPositionAnimationDurationMs; 59 const int kShowAnimationDurationMs = kPositionAnimationDurationMs;
60 60
61 // Value of |maximize_mode_animation_| showing to begin animating alpha of 61 // Value of |tablet_mode_animation_| showing to begin animating alpha of
62 // |size_button_|. 62 // |size_button_|.
63 float SizeButtonShowStartValue() { 63 float SizeButtonShowStartValue() {
64 return static_cast<float>(kShowAnimationAlphaDelayMs) / 64 return static_cast<float>(kShowAnimationAlphaDelayMs) /
65 kShowAnimationDurationMs; 65 kShowAnimationDurationMs;
66 } 66 }
67 67
68 // Amount of |maximize_mode_animation_| showing to animate the alpha of 68 // Amount of |tablet_mode_animation_| showing to animate the alpha of
69 // |size_button_|. 69 // |size_button_|.
70 float SizeButtonShowDuration() { 70 float SizeButtonShowDuration() {
71 return static_cast<float>(kAlphaAnimationDurationMs) / 71 return static_cast<float>(kAlphaAnimationDurationMs) /
72 kShowAnimationDurationMs; 72 kShowAnimationDurationMs;
73 } 73 }
74 74
75 // Amount of |maximize_mode_animation_| hiding to animate the alpha of 75 // Amount of |tablet_mode_animation_| hiding to animate the alpha of
76 // |size_button_|. 76 // |size_button_|.
77 float SizeButtonHideDuration() { 77 float SizeButtonHideDuration() {
78 return static_cast<float>(kAlphaAnimationDurationMs) / 78 return static_cast<float>(kAlphaAnimationDurationMs) /
79 kHideAnimationDurationMs; 79 kHideAnimationDurationMs;
80 } 80 }
81 81
82 // Value of |maximize_mode_animation_| hiding to begin animating the position of 82 // Value of |tablet_mode_animation_| hiding to begin animating the position of
83 // |minimize_button_|. 83 // |minimize_button_|.
84 float HidePositionStartValue() { 84 float HidePositionStartValue() {
85 return 1.0f - 85 return 1.0f -
86 static_cast<float>(kHidePositionDelayMs) / kHideAnimationDurationMs; 86 static_cast<float>(kHidePositionDelayMs) / kHideAnimationDurationMs;
87 } 87 }
88 88
89 // Converts |point| from |src| to |dst| and hittests against |dst|. 89 // Converts |point| from |src| to |dst| and hittests against |dst|.
90 bool ConvertPointToViewAndHitTest(const views::View* src, 90 bool ConvertPointToViewAndHitTest(const views::View* src,
91 const views::View* dst, 91 const views::View* dst,
92 const gfx::Point& point) { 92 const gfx::Point& point) {
(...skipping 15 matching lines...) Expand all
108 const char FrameCaptionButtonContainerView::kViewClassName[] = 108 const char FrameCaptionButtonContainerView::kViewClassName[] =
109 "FrameCaptionButtonContainerView"; 109 "FrameCaptionButtonContainerView";
110 110
111 FrameCaptionButtonContainerView::FrameCaptionButtonContainerView( 111 FrameCaptionButtonContainerView::FrameCaptionButtonContainerView(
112 views::Widget* frame) 112 views::Widget* frame)
113 : frame_(frame), 113 : frame_(frame),
114 minimize_button_(NULL), 114 minimize_button_(NULL),
115 size_button_(NULL), 115 size_button_(NULL),
116 close_button_(NULL) { 116 close_button_(NULL) {
117 bool size_button_visibility = ShouldSizeButtonBeVisible(); 117 bool size_button_visibility = ShouldSizeButtonBeVisible();
118 maximize_mode_animation_.reset(new gfx::SlideAnimation(this)); 118 tablet_mode_animation_.reset(new gfx::SlideAnimation(this));
119 maximize_mode_animation_->SetTweenType(gfx::Tween::LINEAR); 119 tablet_mode_animation_->SetTweenType(gfx::Tween::LINEAR);
120 120
121 // Ensure animation tracks visibility of size button. 121 // Ensure animation tracks visibility of size button.
122 if (size_button_visibility) 122 if (size_button_visibility)
123 maximize_mode_animation_->Reset(1.0f); 123 tablet_mode_animation_->Reset(1.0f);
124 124
125 // Insert the buttons left to right. 125 // Insert the buttons left to right.
126 minimize_button_ = new FrameCaptionButton(this, CAPTION_BUTTON_ICON_MINIMIZE); 126 minimize_button_ = new FrameCaptionButton(this, CAPTION_BUTTON_ICON_MINIMIZE);
127 minimize_button_->SetAccessibleName( 127 minimize_button_->SetAccessibleName(
128 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MINIMIZE)); 128 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MINIMIZE));
129 minimize_button_->SetVisible(frame_->widget_delegate()->CanMinimize()); 129 minimize_button_->SetVisible(frame_->widget_delegate()->CanMinimize());
130 AddChildView(minimize_button_); 130 AddChildView(minimize_button_);
131 131
132 size_button_ = new FrameSizeButton(this, frame, this); 132 size_button_ = new FrameSizeButton(this, frame, this);
133 size_button_->SetAccessibleName( 133 size_button_->SetAccessibleName(
134 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MAXIMIZE)); 134 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MAXIMIZE));
135 size_button_->SetVisible(size_button_visibility); 135 size_button_->SetVisible(size_button_visibility);
136 AddChildView(size_button_); 136 AddChildView(size_button_);
137 137
138 close_button_ = new FrameCaptionButton(this, CAPTION_BUTTON_ICON_CLOSE); 138 close_button_ = new FrameCaptionButton(this, CAPTION_BUTTON_ICON_CLOSE);
139 close_button_->SetAccessibleName( 139 close_button_->SetAccessibleName(
140 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE)); 140 l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE));
141 AddChildView(close_button_); 141 AddChildView(close_button_);
142 } 142 }
143 143
144 FrameCaptionButtonContainerView::~FrameCaptionButtonContainerView() {} 144 FrameCaptionButtonContainerView::~FrameCaptionButtonContainerView() {}
145 145
146 void FrameCaptionButtonContainerView::TestApi::EndAnimations() { 146 void FrameCaptionButtonContainerView::TestApi::EndAnimations() {
147 container_view_->maximize_mode_animation_->End(); 147 container_view_->tablet_mode_animation_->End();
148 } 148 }
149 149
150 void FrameCaptionButtonContainerView::SetButtonImage( 150 void FrameCaptionButtonContainerView::SetButtonImage(
151 CaptionButtonIcon icon, 151 CaptionButtonIcon icon,
152 const gfx::VectorIcon& icon_definition) { 152 const gfx::VectorIcon& icon_definition) {
153 button_icon_map_[icon] = &icon_definition; 153 button_icon_map_[icon] = &icon_definition;
154 154
155 FrameCaptionButton* buttons[] = {minimize_button_, size_button_, 155 FrameCaptionButton* buttons[] = {minimize_button_, size_button_,
156 close_button_}; 156 close_button_};
157 for (size_t i = 0; i < arraysize(buttons); ++i) { 157 for (size_t i = 0; i < arraysize(buttons); ++i) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 ConvertPointToViewAndHitTest(this, minimize_button_, point)) { 189 ConvertPointToViewAndHitTest(this, minimize_button_, point)) {
190 return HTMINBUTTON; 190 return HTMINBUTTON;
191 } 191 }
192 return HTNOWHERE; 192 return HTNOWHERE;
193 } 193 }
194 194
195 void FrameCaptionButtonContainerView::UpdateSizeButtonVisibility() { 195 void FrameCaptionButtonContainerView::UpdateSizeButtonVisibility() {
196 bool visible = ShouldSizeButtonBeVisible(); 196 bool visible = ShouldSizeButtonBeVisible();
197 if (visible) { 197 if (visible) {
198 size_button_->SetVisible(true); 198 size_button_->SetVisible(true);
199 maximize_mode_animation_->SetSlideDuration(kShowAnimationDurationMs); 199 tablet_mode_animation_->SetSlideDuration(kShowAnimationDurationMs);
200 maximize_mode_animation_->Show(); 200 tablet_mode_animation_->Show();
201 } else { 201 } else {
202 maximize_mode_animation_->SetSlideDuration(kHideAnimationDurationMs); 202 tablet_mode_animation_->SetSlideDuration(kHideAnimationDurationMs);
203 maximize_mode_animation_->Hide(); 203 tablet_mode_animation_->Hide();
204 } 204 }
205 } 205 }
206 206
207 void FrameCaptionButtonContainerView::SetButtonSize(const gfx::Size& size) { 207 void FrameCaptionButtonContainerView::SetButtonSize(const gfx::Size& size) {
208 minimize_button_->set_preferred_size(size); 208 minimize_button_->set_preferred_size(size);
209 size_button_->set_preferred_size(size); 209 size_button_->set_preferred_size(size);
210 close_button_->set_preferred_size(size); 210 close_button_->set_preferred_size(size);
211 } 211 }
212 212
213 gfx::Size FrameCaptionButtonContainerView::CalculatePreferredSize() const { 213 gfx::Size FrameCaptionButtonContainerView::CalculatePreferredSize() const {
(...skipping 10 matching lines...) Expand all
224 int x = 0; 224 int x = 0;
225 for (int i = 0; i < child_count(); ++i) { 225 for (int i = 0; i < child_count(); ++i) {
226 views::View* child = child_at(i); 226 views::View* child = child_at(i);
227 if (!child->visible()) 227 if (!child->visible())
228 continue; 228 continue;
229 229
230 gfx::Size size = child->GetPreferredSize(); 230 gfx::Size size = child->GetPreferredSize();
231 child->SetBounds(x, 0, size.width(), size.height()); 231 child->SetBounds(x, 0, size.width(), size.height());
232 x += size.width(); 232 x += size.width();
233 } 233 }
234 if (maximize_mode_animation_->is_animating()) { 234 if (tablet_mode_animation_->is_animating()) {
235 AnimationProgressed(maximize_mode_animation_.get()); 235 AnimationProgressed(tablet_mode_animation_.get());
236 } 236 }
237 } 237 }
238 238
239 const char* FrameCaptionButtonContainerView::GetClassName() const { 239 const char* FrameCaptionButtonContainerView::GetClassName() const {
240 return kViewClassName; 240 return kViewClassName;
241 } 241 }
242 242
243 void FrameCaptionButtonContainerView::AnimationEnded( 243 void FrameCaptionButtonContainerView::AnimationEnded(
244 const gfx::Animation* animation) { 244 const gfx::Animation* animation) {
245 // Ensure that position is calculated at least once. 245 // Ensure that position is calculated at least once.
246 AnimationProgressed(animation); 246 AnimationProgressed(animation);
247 247
248 double current_value = maximize_mode_animation_->GetCurrentValue(); 248 double current_value = tablet_mode_animation_->GetCurrentValue();
249 if (current_value == 0.0) { 249 if (current_value == 0.0) {
250 size_button_->SetVisible(false); 250 size_button_->SetVisible(false);
251 PreferredSizeChanged(); 251 PreferredSizeChanged();
252 } 252 }
253 } 253 }
254 254
255 void FrameCaptionButtonContainerView::AnimationProgressed( 255 void FrameCaptionButtonContainerView::AnimationProgressed(
256 const gfx::Animation* animation) { 256 const gfx::Animation* animation) {
257 double current_value = animation->GetCurrentValue(); 257 double current_value = animation->GetCurrentValue();
258 int size_alpha = 0; 258 int size_alpha = 0;
259 int minimize_x = 0; 259 int minimize_x = 0;
260 if (maximize_mode_animation_->IsShowing()) { 260 if (tablet_mode_animation_->IsShowing()) {
261 double scaled_value = 261 double scaled_value =
262 CapAnimationValue((current_value - SizeButtonShowStartValue()) / 262 CapAnimationValue((current_value - SizeButtonShowStartValue()) /
263 SizeButtonShowDuration()); 263 SizeButtonShowDuration());
264 double tweened_value_alpha = 264 double tweened_value_alpha =
265 gfx::Tween::CalculateValue(gfx::Tween::EASE_OUT, scaled_value); 265 gfx::Tween::CalculateValue(gfx::Tween::EASE_OUT, scaled_value);
266 size_alpha = gfx::Tween::LinearIntValueBetween(tweened_value_alpha, 0, 255); 266 size_alpha = gfx::Tween::LinearIntValueBetween(tweened_value_alpha, 0, 255);
267 267
268 double tweened_value_slide = 268 double tweened_value_slide =
269 gfx::Tween::CalculateValue(gfx::Tween::EASE_OUT, current_value); 269 gfx::Tween::CalculateValue(gfx::Tween::EASE_OUT, current_value);
270 minimize_x = gfx::Tween::LinearIntValueBetween(tweened_value_slide, 270 minimize_x = gfx::Tween::LinearIntValueBetween(tweened_value_slide,
(...skipping 30 matching lines...) Expand all
301 FrameCaptionButton::Animate fcb_animate = 301 FrameCaptionButton::Animate fcb_animate =
302 (animate == ANIMATE_YES) ? FrameCaptionButton::ANIMATE_YES 302 (animate == ANIMATE_YES) ? FrameCaptionButton::ANIMATE_YES
303 : FrameCaptionButton::ANIMATE_NO; 303 : FrameCaptionButton::ANIMATE_NO;
304 auto it = button_icon_map_.find(icon); 304 auto it = button_icon_map_.find(icon);
305 if (it != button_icon_map_.end()) 305 if (it != button_icon_map_.end())
306 button->SetImage(icon, fcb_animate, *it->second); 306 button->SetImage(icon, fcb_animate, *it->second);
307 } 307 }
308 308
309 bool FrameCaptionButtonContainerView::ShouldSizeButtonBeVisible() const { 309 bool FrameCaptionButtonContainerView::ShouldSizeButtonBeVisible() const {
310 return !Shell::Get() 310 return !Shell::Get()
311 ->maximize_mode_controller() 311 ->tablet_mode_controller()
312 ->IsMaximizeModeWindowManagerEnabled() && 312 ->IsTabletModeWindowManagerEnabled() &&
313 frame_->widget_delegate()->CanMaximize(); 313 frame_->widget_delegate()->CanMaximize();
314 } 314 }
315 315
316 void FrameCaptionButtonContainerView::ButtonPressed(views::Button* sender, 316 void FrameCaptionButtonContainerView::ButtonPressed(views::Button* sender,
317 const ui::Event& event) { 317 const ui::Event& event) {
318 // Abort any animations of the button icons. 318 // Abort any animations of the button icons.
319 SetButtonsToNormal(ANIMATE_NO); 319 SetButtonsToNormal(ANIMATE_NO);
320 320
321 UserMetricsAction action = UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MINIMIZE; 321 UserMetricsAction action = UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MINIMIZE;
322 if (sender == minimize_button_) { 322 if (sender == minimize_button_) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 views::Button::ButtonState new_state = views::Button::STATE_NORMAL; 404 views::Button::ButtonState new_state = views::Button::STATE_NORMAL;
405 if (button == to_hover) 405 if (button == to_hover)
406 new_state = views::Button::STATE_HOVERED; 406 new_state = views::Button::STATE_HOVERED;
407 else if (button == to_press) 407 else if (button == to_press)
408 new_state = views::Button::STATE_PRESSED; 408 new_state = views::Button::STATE_PRESSED;
409 button->SetState(new_state); 409 button->SetState(new_state);
410 } 410 }
411 } 411 }
412 412
413 } // namespace ash 413 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698