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

Side by Side Diff: chrome/browser/ui/views/autofill/autofill_credit_card_bubble_views.cc

Issue 21668003: Implement newly saved card bubble for realz and update generated card bubble to (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 4 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 | Annotate | Revision Log
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 "chrome/browser/ui/views/autofill/autofill_credit_card_bubble_views.h" 5 #include "chrome/browser/ui/views/autofill/autofill_credit_card_bubble_views.h"
6 6
7 #include "chrome/browser/ui/autofill/autofill_credit_card_bubble_controller.h" 7 #include "chrome/browser/ui/autofill/autofill_credit_card_bubble_controller.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_finder.h" 9 #include "chrome/browser/ui/browser_finder.h"
10 #include "chrome/browser/ui/views/frame/browser_view.h" 10 #include "chrome/browser/ui/views/frame/browser_view.h"
11 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" 11 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
12 #include "chrome/browser/ui/views/toolbar_view.h"
12 #include "ui/gfx/font.h" 13 #include "ui/gfx/font.h"
13 #include "ui/gfx/insets.h" 14 #include "ui/gfx/insets.h"
14 #include "ui/gfx/size.h" 15 #include "ui/gfx/size.h"
15 #include "ui/views/bubble/bubble_frame_view.h" 16 #include "ui/views/bubble/bubble_frame_view.h"
17 #include "ui/views/controls/image_view.h"
16 #include "ui/views/controls/link.h" 18 #include "ui/views/controls/link.h"
17 #include "ui/views/controls/styled_label.h" 19 #include "ui/views/controls/styled_label.h"
18 #include "ui/views/layout/box_layout.h" 20 #include "ui/views/layout/box_layout.h"
19 #include "ui/views/layout/layout_constants.h" 21 #include "ui/views/layout/layout_constants.h"
20 #include "ui/views/view.h" 22 #include "ui/views/view.h"
21 #include "ui/views/widget/widget.h" 23 #include "ui/views/widget/widget.h"
22 24
23 namespace autofill { 25 namespace autofill {
24 26
25 AutofillCreditCardBubbleViews::~AutofillCreditCardBubbleViews() {} 27 namespace {
28
29 views::View* GetAnchor(
30 const base::WeakPtr<AutofillCreditCardBubbleController>& controller) {
31 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(
32 chrome::FindBrowserWithWebContents(controller->web_contents()));
33 return controller->AnchorToSettingsMenu() ?
34 browser_view->GetToolbarView()->app_menu() :
35 browser_view->GetLocationBarView()->autofill_credit_card_view();
36 }
37
38 } // namespace
39
40 AutofillCreditCardBubbleViews::~AutofillCreditCardBubbleViews() {
41 if (controller_)
42 controller_->OnBubbleDestroyed();
43 }
26 44
27 void AutofillCreditCardBubbleViews::Show() { 45 void AutofillCreditCardBubbleViews::Show() {
28 // TODO(dbeam): investigate why this steals focus from the web contents. 46 // TODO(dbeam): investigate why this steals focus from the web contents.
29 views::BubbleDelegateView::CreateBubble(this); 47 views::BubbleDelegateView::CreateBubble(this);
30
31 GetWidget()->Show(); 48 GetWidget()->Show();
32 SizeToContents(); 49 SizeToContents();
33 } 50 }
34 51
35 void AutofillCreditCardBubbleViews::Hide() { 52 void AutofillCreditCardBubbleViews::Hide() {
36 GetWidget()->Close(); 53 GetWidget()->Close();
37 } 54 }
38 55
39 bool AutofillCreditCardBubbleViews::IsHiding() const { 56 bool AutofillCreditCardBubbleViews::IsHiding() const {
40 return GetWidget() && GetWidget()->IsClosed(); 57 return GetWidget() && GetWidget()->IsClosed();
41 } 58 }
42 59
43 string16 AutofillCreditCardBubbleViews::GetWindowTitle() const { 60 base::string16 AutofillCreditCardBubbleViews::GetWindowTitle() const {
44 return controller_->BubbleTitle(); 61 return controller_->TitleText();
45 } 62 }
46 63
47 void AutofillCreditCardBubbleViews::Init() { 64 void AutofillCreditCardBubbleViews::Init() {
48 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 65 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0,
49 views::kRelatedControlVerticalSpacing)); 66 views::kRelatedControlVerticalSpacing));
50 67
51 views::StyledLabel::RangeStyleInfo bold; 68 const base::string16& header_text = controller_->HeaderText();
52 bold.font_style = gfx::Font::BOLD; 69 if (!header_text.empty()) {
53 const std::vector<ui::Range>& ranges = controller_->BubbleTextRanges(); 70 views::StyledLabel* header = new views::StyledLabel(header_text, this);
71 const std::vector<TextRange>& text_ranges = controller_->HeaderTextRanges();
72 for (size_t i = 0; i < text_ranges.size(); ++i) {
73 views::StyledLabel::RangeStyleInfo range_style;
74 if (text_ranges[i].is_link)
75 range_style = views::StyledLabel::RangeStyleInfo::CreateForLink();
76 else
77 range_style.font_style = gfx::Font::BOLD;
78 header->AddStyleRange(text_ranges[i].range, range_style);
79 }
80 AddChildView(header);
81 }
54 82
55 views::StyledLabel* contents = 83 const CreditCardDescription* card_desc = controller_->Description();
56 new views::StyledLabel(controller_->BubbleText(), NULL); 84 if (card_desc) {
57 for (size_t i = 0; i < ranges.size(); ++i) { 85 views::View* card_container = new views::View();
58 contents->AddStyleRange(ranges[i], bold); 86 card_container->SetLayoutManager(
87 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 10));
88
89 views::View* title_row = new views::View();
Evan Stade 2013/08/02 16:29:45 not really a title... the title is blank. Calling
Dan Beam 2013/08/06 02:41:35 Done.
90 title_row->SetLayoutManager(
91 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 10));
92
93 views::ImageView* card_icon = new views::ImageView();
94 card_icon->SetImage(card_desc->icon.AsImageSkia());
95 title_row->AddChildView(card_icon);
96
97 views::Label* title = new views::Label(card_desc->title);
Evan Stade 2013/08/02 16:29:45 ditto on CardDescription::title
Dan Beam 2013/08/06 02:41:35 Done.
98 title->SetHorizontalAlignment(gfx::ALIGN_LEFT);
99 title_row->AddChildView(title);
100 card_container->AddChildView(title_row);
101
102 views::Label* desc = new views::Label(card_desc->description);
103 desc->SetHorizontalAlignment(gfx::ALIGN_LEFT);
104 desc->SetMultiLine(true);
105 card_container->AddChildView(desc);
106
107 AddChildView(card_container);
59 } 108 }
60 AddChildView(contents);
61 109
62 views::Link* link = new views::Link(); 110 const base::string16& link_text = controller_->LinkText();
63 link->SetHorizontalAlignment(gfx::ALIGN_LEFT); 111 if (!link_text.empty()) {
64 link->SetText(controller_->LinkText()); 112 views::Link* link = new views::Link(link_text);
65 link->set_listener(this); 113 link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
66 AddChildView(link); 114 link->set_listener(this);
115 AddChildView(link);
116 }
67 } 117 }
68 118
69 gfx::Size AutofillCreditCardBubbleViews::GetPreferredSize() { 119 gfx::Size AutofillCreditCardBubbleViews::GetPreferredSize() {
70 return gfx::Size( 120 return gfx::Size(
71 AutofillCreditCardBubbleViews::kContentWidth, 121 AutofillCreditCardBubbleViews::kContentWidth,
72 GetHeightForWidth(AutofillCreditCardBubble::kContentWidth)); 122 GetHeightForWidth(AutofillCreditCardBubble::kContentWidth));
73 } 123 }
74 124
75 void AutofillCreditCardBubbleViews::LinkClicked(views::Link* source, 125 void AutofillCreditCardBubbleViews::LinkClicked(views::Link* source,
76 int event_flags) { 126 int event_flags) {
77 if (controller_) 127 if (controller_)
78 controller_->OnLinkClicked(); 128 controller_->OnLinkClicked();
79 } 129 }
80 130
131 void AutofillCreditCardBubbleViews::StyledLabelLinkClicked(const ui::Range& r,
132 int event_flags) {
133 if (controller_)
134 controller_->OnLinkClicked();
135 }
136
81 // static 137 // static
82 base::WeakPtr<AutofillCreditCardBubble> AutofillCreditCardBubble::Create( 138 base::WeakPtr<AutofillCreditCardBubble> AutofillCreditCardBubble::Create(
83 const base::WeakPtr<AutofillCreditCardBubbleController>& controller) { 139 const base::WeakPtr<AutofillCreditCardBubbleController>& controller) {
84 AutofillCreditCardBubbleViews* bubble = 140 AutofillCreditCardBubbleViews* bubble =
85 new AutofillCreditCardBubbleViews(controller); 141 new AutofillCreditCardBubbleViews(controller);
86 return bubble->weak_ptr_factory_.GetWeakPtr(); 142 return bubble->weak_ptr_factory_.GetWeakPtr();
87 } 143 }
88 144
89 AutofillCreditCardBubbleViews::AutofillCreditCardBubbleViews( 145 AutofillCreditCardBubbleViews::AutofillCreditCardBubbleViews(
90 const base::WeakPtr<AutofillCreditCardBubbleController>& controller) 146 const base::WeakPtr<AutofillCreditCardBubbleController>& controller)
91 : BubbleDelegateView(BrowserView::GetBrowserViewForBrowser( 147 : BubbleDelegateView(GetAnchor(controller), views::BubbleBorder::TOP_RIGHT),
92 chrome::FindBrowserWithWebContents(controller->web_contents()))->
93 GetLocationBarView()->autofill_credit_card_view(),
94 views::BubbleBorder::TOP_RIGHT),
95 controller_(controller), 148 controller_(controller),
96 weak_ptr_factory_(this) { 149 weak_ptr_factory_(this) {
97 // Match bookmarks bubble view's anchor view insets and margins. 150 // Match bookmarks bubble view's margins.
98 set_anchor_view_insets(gfx::Insets(7, 0, 7, 0)); 151 bool title_empty = controller_->TitleText().empty();
Evan Stade 2013/08/02 16:29:45 yea, controller_->TitleText() vs. controller_->Des
Dan Beam 2013/08/06 02:41:35 Done.
99 set_margins(gfx::Insets(0, 19, 18, 18)); 152 set_margins(gfx::Insets(title_empty ? 18 : 0, 19, 18, 18));
100 set_move_with_anchor(true);
101 } 153 }
102 154
103 } // namespace autofill 155 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698