OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_popup_view_views.h" | 5 #include "chrome/browser/ui/views/autofill/autofill_popup_view_views.h" |
6 | 6 |
7 #include "chrome/browser/ui/autofill/autofill_popup_controller.h" | 7 #include "chrome/browser/ui/autofill/autofill_popup_controller.h" |
8 #include "chrome/browser/ui/autofill/autofill_popup_layout_model.h" | 8 #include "chrome/browser/ui/autofill/autofill_popup_layout_model.h" |
| 9 #include "chrome/browser/ui/autofill/popup_constants.h" |
9 #include "components/autofill/core/browser/popup_item_ids.h" | 10 #include "components/autofill/core/browser/popup_item_ids.h" |
10 #include "components/autofill/core/browser/suggestion.h" | 11 #include "components/autofill/core/browser/suggestion.h" |
11 #include "ui/base/resource/resource_bundle.h" | 12 #include "ui/base/resource/resource_bundle.h" |
12 #include "ui/events/keycodes/keyboard_codes.h" | 13 #include "ui/events/keycodes/keyboard_codes.h" |
13 #include "ui/gfx/canvas.h" | 14 #include "ui/gfx/canvas.h" |
14 #include "ui/gfx/geometry/point.h" | 15 #include "ui/gfx/geometry/point.h" |
15 #include "ui/gfx/geometry/rect.h" | 16 #include "ui/gfx/geometry/rect.h" |
16 #include "ui/gfx/image/image.h" | 17 #include "ui/gfx/image/image.h" |
17 #include "ui/gfx/native_widget_types.h" | 18 #include "ui/gfx/native_widget_types.h" |
18 #include "ui/gfx/text_utils.h" | 19 #include "ui/gfx/text_utils.h" |
(...skipping 30 matching lines...) Expand all Loading... |
49 return; | 50 return; |
50 | 51 |
51 canvas->DrawColor(kPopupBackground); | 52 canvas->DrawColor(kPopupBackground); |
52 OnPaintBorder(canvas); | 53 OnPaintBorder(canvas); |
53 | 54 |
54 for (size_t i = 0; i < controller_->GetLineCount(); ++i) { | 55 for (size_t i = 0; i < controller_->GetLineCount(); ++i) { |
55 gfx::Rect line_rect = controller_->layout_model().GetRowBounds(i); | 56 gfx::Rect line_rect = controller_->layout_model().GetRowBounds(i); |
56 | 57 |
57 if (controller_->GetSuggestionAt(i).frontend_id == | 58 if (controller_->GetSuggestionAt(i).frontend_id == |
58 POPUP_ITEM_ID_SEPARATOR) { | 59 POPUP_ITEM_ID_SEPARATOR) { |
59 canvas->FillRect(line_rect, kItemTextColor); | 60 canvas->FillRect(line_rect, kLabelTextColor); |
60 } else { | 61 } else { |
61 DrawAutofillEntry(canvas, i, line_rect); | 62 DrawAutofillEntry(canvas, i, line_rect); |
62 } | 63 } |
63 } | 64 } |
64 } | 65 } |
65 | 66 |
66 void AutofillPopupViewViews::InvalidateRow(size_t row) { | 67 void AutofillPopupViewViews::InvalidateRow(size_t row) { |
67 SchedulePaintInRect(controller_->layout_model().GetRowBounds(row)); | 68 SchedulePaintInRect(controller_->layout_model().GetRowBounds(row)); |
68 } | 69 } |
69 | 70 |
70 void AutofillPopupViewViews::DrawAutofillEntry(gfx::Canvas* canvas, | 71 void AutofillPopupViewViews::DrawAutofillEntry(gfx::Canvas* canvas, |
71 int index, | 72 int index, |
72 const gfx::Rect& entry_rect) { | 73 const gfx::Rect& entry_rect) { |
73 if (controller_->selected_line() == index) | 74 canvas->FillRect(entry_rect, controller_->GetBackgroundColorForRow(index)); |
74 canvas->FillRect(entry_rect, kHoveredBackgroundColor); | |
75 | 75 |
76 const bool is_rtl = controller_->IsRTL(); | 76 const bool is_rtl = controller_->IsRTL(); |
77 const int text_align = | 77 const int text_align = |
78 is_rtl ? gfx::Canvas::TEXT_ALIGN_RIGHT : gfx::Canvas::TEXT_ALIGN_LEFT; | 78 is_rtl ? gfx::Canvas::TEXT_ALIGN_RIGHT : gfx::Canvas::TEXT_ALIGN_LEFT; |
79 gfx::Rect value_rect = entry_rect; | 79 gfx::Rect value_rect = entry_rect; |
80 value_rect.Inset(AutofillPopupLayoutModel::kEndPadding, 0); | 80 value_rect.Inset(AutofillPopupLayoutModel::kEndPadding, 0); |
81 canvas->DrawStringRectWithFlags( | 81 canvas->DrawStringRectWithFlags( |
82 controller_->GetElidedValueAt(index), | 82 controller_->GetElidedValueAt(index), |
83 controller_->GetValueFontListForRow(index), | 83 controller_->GetValueFontListForRow(index), |
84 controller_->IsWarning(index) ? kWarningTextColor : kValueTextColor, | 84 controller_->IsWarning(index) ? kWarningTextColor : kValueTextColor, |
(...skipping 25 matching lines...) Expand all Loading... |
110 | 110 |
111 // Draw the label text. | 111 // Draw the label text. |
112 const int label_width = | 112 const int label_width = |
113 gfx::GetStringWidth(controller_->GetElidedLabelAt(index), | 113 gfx::GetStringWidth(controller_->GetElidedLabelAt(index), |
114 controller_->GetLabelFontList()); | 114 controller_->GetLabelFontList()); |
115 if (!is_rtl) | 115 if (!is_rtl) |
116 x_align_left -= label_width; | 116 x_align_left -= label_width; |
117 | 117 |
118 canvas->DrawStringRectWithFlags( | 118 canvas->DrawStringRectWithFlags( |
119 controller_->GetElidedLabelAt(index), controller_->GetLabelFontList(), | 119 controller_->GetElidedLabelAt(index), controller_->GetLabelFontList(), |
120 kItemTextColor, | 120 kLabelTextColor, |
121 gfx::Rect(x_align_left, entry_rect.y(), label_width, entry_rect.height()), | 121 gfx::Rect(x_align_left, entry_rect.y(), label_width, entry_rect.height()), |
122 text_align); | 122 text_align); |
123 } | 123 } |
124 | 124 |
125 AutofillPopupView* AutofillPopupView::Create( | 125 AutofillPopupView* AutofillPopupView::Create( |
126 AutofillPopupController* controller) { | 126 AutofillPopupController* controller) { |
127 views::Widget* observing_widget = | 127 views::Widget* observing_widget = |
128 views::Widget::GetTopLevelWidgetForNativeView( | 128 views::Widget::GetTopLevelWidgetForNativeView( |
129 controller->container_view()); | 129 controller->container_view()); |
130 | 130 |
131 // If the top level widget can't be found, cancel the popup since we can't | 131 // If the top level widget can't be found, cancel the popup since we can't |
132 // fully set it up. | 132 // fully set it up. |
133 if (!observing_widget) | 133 if (!observing_widget) |
134 return NULL; | 134 return NULL; |
135 | 135 |
136 return new AutofillPopupViewViews(controller, observing_widget); | 136 return new AutofillPopupViewViews(controller, observing_widget); |
137 } | 137 } |
138 | 138 |
139 } // namespace autofill | 139 } // namespace autofill |
OLD | NEW |