• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_ICON_LABEL_BUBBLE_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_ICON_LABEL_BUBBLE_VIEW_H_
7 #pragma once
8 
9 #include <string>
10 
11 #include "ui/gfx/size.h"
12 #include "views/painter.h"
13 #include "views/view.h"
14 
15 namespace gfx {
16 class Canvas;
17 class Font;
18 }
19 namespace views {
20 class ImageView;
21 class Label;
22 }
23 
24 class SkBitmap;
25 
26 // View used to draw a bubble to the left of the address, containing an icon and
27 // a label.  We use this as a base for the classes that handle the EV bubble and
28 // tab-to-search UI.
29 class IconLabelBubbleView : public views::View {
30  public:
31   IconLabelBubbleView(const int background_images[],
32                       int contained_image,
33                       const SkColor& color);
34   virtual ~IconLabelBubbleView();
35 
36   void SetFont(const gfx::Font& font);
37   void SetLabel(const std::wstring& label);
38   void SetImage(const SkBitmap& bitmap);
set_is_extension_icon(bool is_extension_icon)39   void set_is_extension_icon(bool is_extension_icon) {
40     is_extension_icon_ = is_extension_icon;
41   }
42 
43   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
44   virtual gfx::Size GetPreferredSize() OVERRIDE;
45   virtual void Layout() OVERRIDE;
46 
47  protected:
48   void SetElideInMiddle(bool elide_in_middle);
49   gfx::Size GetNonLabelSize() const;
50 
51  private:
52   int GetPreLabelWidth() const;
53   int GetNonLabelWidth() const;
54 
55   // For painting the background.
56   views::HorizontalPainter background_painter_;
57 
58   // The contents of the bubble.
59   views::ImageView* image_;
60   views::Label* label_;
61 
62   bool is_extension_icon_;
63 
64   DISALLOW_IMPLICIT_CONSTRUCTORS(IconLabelBubbleView);
65 };
66 
67 #endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_ICON_LABEL_BUBBLE_VIEW_H_
68