blob: c1389b93632fb72d28df2e8ea3dc700dc571fde3 [file] [log] [blame]
// Copyright (c) 2011 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.
#ifndef CHROME_BROWSER_UI_VIEWS_PROFILE_MENU_BUTTON_H_
#define CHROME_BROWSER_UI_VIEWS_PROFILE_MENU_BUTTON_H_
#pragma once
#include <string>
#include "base/compiler_specific.h"
#include "ui/base/models/simple_menu_model.h"
#include "views/controls/button/menu_button.h"
#include "views/controls/menu/view_menu_delegate.h"
class Profile;
class ProfileMenuModel;
namespace gfx {
class Canvas;
}
namespace ui {
class Accelerator;
}
// ProfileMenuButton
//
// Shows the button for the multiprofile menu with an image layered
// underneath that displays the profile tag.
class ProfileMenuButton : public views::MenuButton,
public views::ViewMenuDelegate {
public:
// DefaultActiveTextShadow is a darkened blue color that works with Windows
// default theme background coloring.
static const SkColor kDefaultActiveTextShadow = 0xFF708DB3;
// InactiveTextShadow is a light gray for inactive default themed buttons.
static const SkColor kDefaultInactiveTextShadow = SK_ColorLTGRAY;
// DarkTextShadow is used to shadow names on themed browser frames.
static const SkColor kDarkTextShadow = SK_ColorGRAY;
// Space between window controls and end of profile tag.
static const int kProfileTagHorizontalSpacing = 5;
ProfileMenuButton(const std::wstring& text, Profile* profile);
virtual ~ProfileMenuButton();
// Override MenuButton to clamp text at kMaxTextWidth.
virtual void SetText(const std::wstring& text) OVERRIDE;
private:
// Overridden from views::ViewMenuDelegate:
virtual void RunMenu(views::View* source, const gfx::Point& pt) OVERRIDE;
scoped_ptr<ProfileMenuModel> profile_menu_model_;
DISALLOW_COPY_AND_ASSIGN(ProfileMenuButton);
};
#endif // CHROME_BROWSER_UI_VIEWS_PROFILE_MENU_BUTTON_H_