| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/profiles/profile_chooser_view.h" | 5 #include "chrome/browser/ui/views/profiles/profile_chooser_view.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/lifetime/application_lifetime.h" | 10 #include "chrome/browser/lifetime/application_lifetime.h" |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 SetMinSize(gfx::Size(0, | 145 SetMinSize(gfx::Size(0, |
| 146 kButtonHeight + views::kRelatedControlVerticalSpacing)); | 146 kButtonHeight + views::kRelatedControlVerticalSpacing)); |
| 147 SetImage(STATE_NORMAL, icon); | 147 SetImage(STATE_NORMAL, icon); |
| 148 SetFocusable(true); | 148 SetFocusable(true); |
| 149 } | 149 } |
| 150 | 150 |
| 151 virtual ~BackgroundColorHoverButton() {} | 151 virtual ~BackgroundColorHoverButton() {} |
| 152 | 152 |
| 153 private: | 153 private: |
| 154 // views::LabelButton: | 154 // views::LabelButton: |
| 155 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { | 155 virtual void OnPaint(gfx::Canvas* canvas) override { |
| 156 if ((state() == STATE_PRESSED) || | 156 if ((state() == STATE_PRESSED) || |
| 157 (state() == STATE_HOVERED) || | 157 (state() == STATE_HOVERED) || |
| 158 HasFocus()) { | 158 HasFocus()) { |
| 159 canvas->DrawColor(GetNativeTheme()->GetSystemColor( | 159 canvas->DrawColor(GetNativeTheme()->GetSystemColor( |
| 160 ui::NativeTheme::kColorId_ButtonHoverBackgroundColor)); | 160 ui::NativeTheme::kColorId_ButtonHoverBackgroundColor)); |
| 161 } | 161 } |
| 162 LabelButton::OnPaint(canvas); | 162 LabelButton::OnPaint(canvas); |
| 163 } | 163 } |
| 164 | 164 |
| 165 DISALLOW_COPY_AND_ASSIGN(BackgroundColorHoverButton); | 165 DISALLOW_COPY_AND_ASSIGN(BackgroundColorHoverButton); |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 // SizedContainer ------------------------------------------------- | 168 // SizedContainer ------------------------------------------------- |
| 169 | 169 |
| 170 // A simple container view that takes an explicit preferred size. | 170 // A simple container view that takes an explicit preferred size. |
| 171 class SizedContainer : public views::View { | 171 class SizedContainer : public views::View { |
| 172 public: | 172 public: |
| 173 explicit SizedContainer(const gfx::Size& preferred_size) | 173 explicit SizedContainer(const gfx::Size& preferred_size) |
| 174 : preferred_size_(preferred_size) {} | 174 : preferred_size_(preferred_size) {} |
| 175 | 175 |
| 176 virtual gfx::Size GetPreferredSize() const OVERRIDE { | 176 virtual gfx::Size GetPreferredSize() const override { |
| 177 return preferred_size_; | 177 return preferred_size_; |
| 178 } | 178 } |
| 179 | 179 |
| 180 private: | 180 private: |
| 181 gfx::Size preferred_size_; | 181 gfx::Size preferred_size_; |
| 182 }; | 182 }; |
| 183 | 183 |
| 184 } // namespace | 184 } // namespace |
| 185 | 185 |
| 186 // RightAlignedIconLabelButton ------------------------------------------------- | 186 // RightAlignedIconLabelButton ------------------------------------------------- |
| 187 | 187 |
| 188 // A custom LabelButton that has a centered text and right aligned icon. | 188 // A custom LabelButton that has a centered text and right aligned icon. |
| 189 class RightAlignedIconLabelButton : public views::LabelButton { | 189 class RightAlignedIconLabelButton : public views::LabelButton { |
| 190 public: | 190 public: |
| 191 RightAlignedIconLabelButton(views::ButtonListener* listener, | 191 RightAlignedIconLabelButton(views::ButtonListener* listener, |
| 192 const base::string16& text) | 192 const base::string16& text) |
| 193 : views::LabelButton(listener, text) { | 193 : views::LabelButton(listener, text) { |
| 194 } | 194 } |
| 195 | 195 |
| 196 protected: | 196 protected: |
| 197 virtual void Layout() OVERRIDE { | 197 virtual void Layout() override { |
| 198 // This layout trick keeps the text left-aligned and the icon right-aligned. | 198 // This layout trick keeps the text left-aligned and the icon right-aligned. |
| 199 SetHorizontalAlignment(gfx::ALIGN_RIGHT); | 199 SetHorizontalAlignment(gfx::ALIGN_RIGHT); |
| 200 views::LabelButton::Layout(); | 200 views::LabelButton::Layout(); |
| 201 label()->SetHorizontalAlignment(gfx::ALIGN_CENTER); | 201 label()->SetHorizontalAlignment(gfx::ALIGN_CENTER); |
| 202 } | 202 } |
| 203 | 203 |
| 204 private: | 204 private: |
| 205 DISALLOW_COPY_AND_ASSIGN(RightAlignedIconLabelButton); | 205 DISALLOW_COPY_AND_ASSIGN(RightAlignedIconLabelButton); |
| 206 }; | 206 }; |
| 207 | 207 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 photo_overlay_->set_background( | 241 photo_overlay_->set_background( |
| 242 views::Background::CreateSolidBackground(kBackgroundColor)); | 242 views::Background::CreateSolidBackground(kBackgroundColor)); |
| 243 photo_overlay_->SetImage(*ui::ResourceBundle::GetSharedInstance(). | 243 photo_overlay_->SetImage(*ui::ResourceBundle::GetSharedInstance(). |
| 244 GetImageSkiaNamed(IDR_ICON_PROFILES_EDIT_CAMERA)); | 244 GetImageSkiaNamed(IDR_ICON_PROFILES_EDIT_CAMERA)); |
| 245 | 245 |
| 246 photo_overlay_->SetSize(bounds.size()); | 246 photo_overlay_->SetSize(bounds.size()); |
| 247 photo_overlay_->SetVisible(false); | 247 photo_overlay_->SetVisible(false); |
| 248 AddChildView(photo_overlay_); | 248 AddChildView(photo_overlay_); |
| 249 } | 249 } |
| 250 | 250 |
| 251 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { | 251 virtual void OnPaint(gfx::Canvas* canvas) override { |
| 252 // Display the profile picture as a circle. | 252 // Display the profile picture as a circle. |
| 253 canvas->ClipPath(circular_mask_, true); | 253 canvas->ClipPath(circular_mask_, true); |
| 254 views::LabelButton::OnPaint(canvas); | 254 views::LabelButton::OnPaint(canvas); |
| 255 } | 255 } |
| 256 | 256 |
| 257 virtual void PaintChildren(gfx::Canvas* canvas, | 257 virtual void PaintChildren(gfx::Canvas* canvas, |
| 258 const views::CullSet& cull_set) OVERRIDE { | 258 const views::CullSet& cull_set) override { |
| 259 // Display any children (the "change photo" overlay) as a circle. | 259 // Display any children (the "change photo" overlay) as a circle. |
| 260 canvas->ClipPath(circular_mask_, true); | 260 canvas->ClipPath(circular_mask_, true); |
| 261 View::PaintChildren(canvas, cull_set); | 261 View::PaintChildren(canvas, cull_set); |
| 262 } | 262 } |
| 263 | 263 |
| 264 private: | 264 private: |
| 265 // views::CustomButton: | 265 // views::CustomButton: |
| 266 virtual void StateChanged() OVERRIDE { | 266 virtual void StateChanged() override { |
| 267 bool show_overlay = | 267 bool show_overlay = |
| 268 (state() == STATE_PRESSED || state() == STATE_HOVERED || HasFocus()); | 268 (state() == STATE_PRESSED || state() == STATE_HOVERED || HasFocus()); |
| 269 if (photo_overlay_) | 269 if (photo_overlay_) |
| 270 photo_overlay_->SetVisible(show_overlay); | 270 photo_overlay_->SetVisible(show_overlay); |
| 271 } | 271 } |
| 272 | 272 |
| 273 virtual void OnFocus() OVERRIDE { | 273 virtual void OnFocus() override { |
| 274 views::LabelButton::OnFocus(); | 274 views::LabelButton::OnFocus(); |
| 275 if (photo_overlay_) | 275 if (photo_overlay_) |
| 276 photo_overlay_->SetVisible(true); | 276 photo_overlay_->SetVisible(true); |
| 277 } | 277 } |
| 278 | 278 |
| 279 virtual void OnBlur() OVERRIDE { | 279 virtual void OnBlur() override { |
| 280 views::LabelButton::OnBlur(); | 280 views::LabelButton::OnBlur(); |
| 281 // Don't hide the overlay if it's being shown as a result of a mouseover. | 281 // Don't hide the overlay if it's being shown as a result of a mouseover. |
| 282 if (photo_overlay_ && state() != STATE_HOVERED) | 282 if (photo_overlay_ && state() != STATE_HOVERED) |
| 283 photo_overlay_->SetVisible(false); | 283 photo_overlay_->SetVisible(false); |
| 284 } | 284 } |
| 285 | 285 |
| 286 gfx::Path circular_mask_; | 286 gfx::Path circular_mask_; |
| 287 | 287 |
| 288 // Image that is shown when hovering over the image button. Can be NULL if | 288 // Image that is shown when hovering over the image button. Can be NULL if |
| 289 // the photo isn't allowed to be edited (e.g. for guest profiles). | 289 // the photo isn't allowed to be edited (e.g. for guest profiles). |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 | 346 |
| 347 // Hide the editable textfield to show the profile name button instead. | 347 // Hide the editable textfield to show the profile name button instead. |
| 348 void ShowReadOnlyView() { | 348 void ShowReadOnlyView() { |
| 349 if (profile_name_textfield_) | 349 if (profile_name_textfield_) |
| 350 profile_name_textfield_->SetVisible(false); | 350 profile_name_textfield_->SetVisible(false); |
| 351 } | 351 } |
| 352 | 352 |
| 353 private: | 353 private: |
| 354 // views::ButtonListener: | 354 // views::ButtonListener: |
| 355 virtual void ButtonPressed(views::Button* sender, | 355 virtual void ButtonPressed(views::Button* sender, |
| 356 const ui::Event& event) OVERRIDE { | 356 const ui::Event& event) override { |
| 357 if (profile_name_textfield_) { | 357 if (profile_name_textfield_) { |
| 358 profile_name_textfield_->SetVisible(true); | 358 profile_name_textfield_->SetVisible(true); |
| 359 profile_name_textfield_->SetText(GetText()); | 359 profile_name_textfield_->SetText(GetText()); |
| 360 profile_name_textfield_->SelectAll(false); | 360 profile_name_textfield_->SelectAll(false); |
| 361 profile_name_textfield_->RequestFocus(); | 361 profile_name_textfield_->RequestFocus(); |
| 362 } | 362 } |
| 363 } | 363 } |
| 364 | 364 |
| 365 // views::LabelButton: | 365 // views::LabelButton: |
| 366 virtual bool OnKeyReleased(const ui::KeyEvent& event) OVERRIDE { | 366 virtual bool OnKeyReleased(const ui::KeyEvent& event) override { |
| 367 // Override CustomButton's implementation, which presses the button when | 367 // Override CustomButton's implementation, which presses the button when |
| 368 // you press space and clicks it when you release space, as the space can be | 368 // you press space and clicks it when you release space, as the space can be |
| 369 // part of the new profile name typed in the textfield. | 369 // part of the new profile name typed in the textfield. |
| 370 return false; | 370 return false; |
| 371 } | 371 } |
| 372 | 372 |
| 373 virtual void Layout() OVERRIDE { | 373 virtual void Layout() override { |
| 374 if (profile_name_textfield_) | 374 if (profile_name_textfield_) |
| 375 profile_name_textfield_->SetBounds(0, 0, width(), height()); | 375 profile_name_textfield_->SetBounds(0, 0, width(), height()); |
| 376 RightAlignedIconLabelButton::Layout(); | 376 RightAlignedIconLabelButton::Layout(); |
| 377 } | 377 } |
| 378 | 378 |
| 379 virtual void OnFocus() OVERRIDE { | 379 virtual void OnFocus() override { |
| 380 RightAlignedIconLabelButton::OnFocus(); | 380 RightAlignedIconLabelButton::OnFocus(); |
| 381 SetState(STATE_HOVERED); | 381 SetState(STATE_HOVERED); |
| 382 } | 382 } |
| 383 | 383 |
| 384 virtual void OnBlur() OVERRIDE { | 384 virtual void OnBlur() override { |
| 385 RightAlignedIconLabelButton::OnBlur(); | 385 RightAlignedIconLabelButton::OnBlur(); |
| 386 SetState(STATE_NORMAL); | 386 SetState(STATE_NORMAL); |
| 387 } | 387 } |
| 388 | 388 |
| 389 // Textfield that is shown when editing the profile name. Can be NULL if | 389 // Textfield that is shown when editing the profile name. Can be NULL if |
| 390 // the profile name isn't allowed to be edited (e.g. for guest profiles). | 390 // the profile name isn't allowed to be edited (e.g. for guest profiles). |
| 391 views::Textfield* profile_name_textfield_; | 391 views::Textfield* profile_name_textfield_; |
| 392 | 392 |
| 393 DISALLOW_COPY_AND_ASSIGN(EditableProfileName); | 393 DISALLOW_COPY_AND_ASSIGN(EditableProfileName); |
| 394 }; | 394 }; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 layout->StartRowWithPadding(1, 1, 0, kVerticalSpacing); | 449 layout->StartRowWithPadding(1, 1, 0, kVerticalSpacing); |
| 450 layout->AddView(new views::Separator(views::Separator::HORIZONTAL)); | 450 layout->AddView(new views::Separator(views::Separator::HORIZONTAL)); |
| 451 | 451 |
| 452 layout->StartRow(1, 1); | 452 layout->StartRow(1, 1); |
| 453 layout->AddView(view); | 453 layout->AddView(view); |
| 454 | 454 |
| 455 return titled_view; | 455 return titled_view; |
| 456 } | 456 } |
| 457 | 457 |
| 458 private: | 458 private: |
| 459 virtual void Layout() OVERRIDE { | 459 virtual void Layout() override { |
| 460 int back_button_width = back_button_->GetPreferredSize().width(); | 460 int back_button_width = back_button_->GetPreferredSize().width(); |
| 461 back_button_->SetBounds(0, 0, back_button_width, height()); | 461 back_button_->SetBounds(0, 0, back_button_width, height()); |
| 462 int label_padding = back_button_width + views::kButtonHEdgeMarginNew; | 462 int label_padding = back_button_width + views::kButtonHEdgeMarginNew; |
| 463 int label_width = width() - 2 * label_padding; | 463 int label_width = width() - 2 * label_padding; |
| 464 DCHECK_GT(label_width, 0); | 464 DCHECK_GT(label_width, 0); |
| 465 title_label_->SetBounds(label_padding, 0, label_width, height()); | 465 title_label_->SetBounds(label_padding, 0, label_width, height()); |
| 466 } | 466 } |
| 467 | 467 |
| 468 virtual gfx::Size GetPreferredSize() const OVERRIDE { | 468 virtual gfx::Size GetPreferredSize() const override { |
| 469 int height = std::max(title_label_->GetPreferredSize().height(), | 469 int height = std::max(title_label_->GetPreferredSize().height(), |
| 470 back_button_->GetPreferredSize().height()); | 470 back_button_->GetPreferredSize().height()); |
| 471 return gfx::Size(width(), height); | 471 return gfx::Size(width(), height); |
| 472 } | 472 } |
| 473 | 473 |
| 474 views::ImageButton* back_button_; | 474 views::ImageButton* back_button_; |
| 475 views::Label* title_label_; | 475 views::Label* title_label_; |
| 476 | 476 |
| 477 DISALLOW_COPY_AND_ASSIGN(TitleCard); | 477 DISALLOW_COPY_AND_ASSIGN(TitleCard); |
| 478 }; | 478 }; |
| (...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1657 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != | 1657 IncognitoModePrefs::GetAvailability(browser_->profile()->GetPrefs()) != |
| 1658 IncognitoModePrefs::DISABLED; | 1658 IncognitoModePrefs::DISABLED; |
| 1659 return incognito_available && !browser_->profile()->IsGuestSession(); | 1659 return incognito_available && !browser_->profile()->IsGuestSession(); |
| 1660 } | 1660 } |
| 1661 | 1661 |
| 1662 void ProfileChooserView::PostActionPerformed( | 1662 void ProfileChooserView::PostActionPerformed( |
| 1663 ProfileMetrics::ProfileDesktopMenu action_performed) { | 1663 ProfileMetrics::ProfileDesktopMenu action_performed) { |
| 1664 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_); | 1664 ProfileMetrics::LogProfileDesktopMenu(action_performed, gaia_service_type_); |
| 1665 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE; | 1665 gaia_service_type_ = signin::GAIA_SERVICE_TYPE_NONE; |
| 1666 } | 1666 } |
| OLD | NEW |