| Index: chrome/browser/ui/views/profiles/themed_avatar_button.cc
|
| diff --git a/chrome/browser/ui/views/profiles/themed_avatar_button.cc b/chrome/browser/ui/views/profiles/themed_avatar_button.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ef2094875454cc56a1918d62c0290b0c57e416c3
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/views/profiles/themed_avatar_button.cc
|
| @@ -0,0 +1,81 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/views/profiles/themed_avatar_button.h"
|
| +
|
| +#include "chrome/grit/theme_resources.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/views/controls/button/label_button_border.h"
|
| +
|
| +#if defined(OS_WIN)
|
| +#include "base/win/windows_version.h"
|
| +#endif
|
| +
|
| +const int kButtonHeight = 20;
|
| +
|
| +ThemedAvatarButton::ThemedAvatarButton(views::MenuButtonListener* listener,
|
| + AvatarButtonStyle button_style,
|
| + Profile* profile)
|
| + : AvatarButton(listener, profile) {
|
| + if (button_style == AvatarButtonStyle::THEMED) {
|
| + const int kNormalImageSet[] = IMAGE_GRID(IDR_AVATAR_THEMED_BUTTON_NORMAL);
|
| + const int kHoverImageSet[] = IMAGE_GRID(IDR_AVATAR_THEMED_BUTTON_HOVER);
|
| + const int kPressedImageSet[] = IMAGE_GRID(IDR_AVATAR_THEMED_BUTTON_PRESSED);
|
| + SetButtonAvatar(IDR_AVATAR_THEMED_BUTTON_AVATAR);
|
| + SetBorder(CreateBorder(kNormalImageSet, kHoverImageSet, kPressedImageSet));
|
| +#if defined(OS_WIN)
|
| + } else if (base::win::GetVersion() < base::win::VERSION_WIN8) {
|
| + const int kNormalImageSet[] = IMAGE_GRID(IDR_AVATAR_GLASS_BUTTON_NORMAL);
|
| + const int kHoverImageSet[] = IMAGE_GRID(IDR_AVATAR_GLASS_BUTTON_HOVER);
|
| + const int kPressedImageSet[] = IMAGE_GRID(IDR_AVATAR_GLASS_BUTTON_PRESSED);
|
| + SetButtonAvatar(IDR_AVATAR_GLASS_BUTTON_AVATAR);
|
| + SetBorder(CreateBorder(kNormalImageSet, kHoverImageSet, kPressedImageSet));
|
| +#endif
|
| + } else {
|
| + const int kNormalImageSet[] = IMAGE_GRID(IDR_AVATAR_NATIVE_BUTTON_NORMAL);
|
| + const int kHoverImageSet[] = IMAGE_GRID(IDR_AVATAR_NATIVE_BUTTON_HOVER);
|
| + const int kPressedImageSet[] = IMAGE_GRID(IDR_AVATAR_NATIVE_BUTTON_PRESSED);
|
| + SetButtonAvatar(IDR_AVATAR_NATIVE_BUTTON_AVATAR);
|
| + SetBorder(CreateBorder(kNormalImageSet, kHoverImageSet, kPressedImageSet));
|
| + }
|
| +
|
| + Update();
|
| + SchedulePaint();
|
| +}
|
| +
|
| +ThemedAvatarButton::~ThemedAvatarButton() {}
|
| +
|
| +gfx::Size ThemedAvatarButton::GetPreferredSize() const {
|
| + gfx::Size size = views::MenuButton::GetPreferredSize();
|
| + size.set_height(kButtonHeight);
|
| + return size;
|
| +}
|
| +
|
| +std::unique_ptr<views::Border> ThemedAvatarButton::CreateBorder(
|
| + const int normal_image_set[],
|
| + const int hot_image_set[],
|
| + const int pushed_image_set[]) const {
|
| + std::unique_ptr<views::LabelButtonAssetBorder> border(
|
| + new views::LabelButtonAssetBorder(views::Button::STYLE_TEXTBUTTON));
|
| +
|
| + border->SetPainter(false, views::Button::STATE_NORMAL,
|
| + views::Painter::CreateImageGridPainter(normal_image_set));
|
| + border->SetPainter(false, views::Button::STATE_HOVERED,
|
| + views::Painter::CreateImageGridPainter(hot_image_set));
|
| + border->SetPainter(false, views::Button::STATE_PRESSED,
|
| + views::Painter::CreateImageGridPainter(pushed_image_set));
|
| +
|
| + const int kLeftRightInset = 8;
|
| + const int kTopInset = 2;
|
| + const int kBottomInset = 4;
|
| + border->set_insets(
|
| + gfx::Insets(kTopInset, kLeftRightInset, kBottomInset, kLeftRightInset));
|
| +
|
| + return std::move(border);
|
| +}
|
| +
|
| +void ThemedAvatarButton::SetButtonAvatar(int avatar_idr) {
|
| + ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
|
| + set_generic_avatar(*rb->GetImageNamed(avatar_idr).ToImageSkia());
|
| +}
|
|
|