| 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 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ |
| 6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
| 11 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" | 11 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" |
| 12 #include "components/omnibox/autocomplete_match.h" | 12 #include "components/omnibox/autocomplete_match.h" |
| 13 #include "components/omnibox/suggestion_answer.h" |
| 13 #include "third_party/skia/include/core/SkColor.h" | 14 #include "third_party/skia/include/core/SkColor.h" |
| 14 #include "ui/gfx/animation/animation_delegate.h" | 15 #include "ui/gfx/animation/animation_delegate.h" |
| 15 #include "ui/gfx/animation/slide_animation.h" | 16 #include "ui/gfx/animation/slide_animation.h" |
| 16 #include "ui/gfx/font_list.h" | 17 #include "ui/gfx/font_list.h" |
| 17 #include "ui/gfx/geometry/rect.h" | 18 #include "ui/gfx/geometry/rect.h" |
| 18 #include "ui/views/controls/image_view.h" | 19 #include "ui/views/controls/image_view.h" |
| 19 #include "ui/views/view.h" | 20 #include "ui/views/view.h" |
| 20 | 21 |
| 21 class LocationBarView; | 22 class LocationBarView; |
| 22 class OmniboxPopupContentsView; | 23 class OmniboxPopupContentsView; |
| 24 struct TextStyle; |
| 23 | 25 |
| 24 namespace gfx { | 26 namespace gfx { |
| 25 class Canvas; | 27 class Canvas; |
| 26 class RenderText; | 28 class RenderText; |
| 27 } | 29 } |
| 28 | 30 |
| 29 class OmniboxResultView : public views::View, | 31 class OmniboxResultView : public views::View, |
| 30 private gfx::AnimationDelegate { | 32 private gfx::AnimationDelegate { |
| 31 public: | 33 public: |
| 32 // Keep these ordered from least dominant (normal) to most dominant | 34 // Keep these ordered from least dominant (normal) to most dominant |
| 33 // (selected). | 35 // (selected). |
| 34 enum ResultViewState { | 36 enum ResultViewState { |
| 35 NORMAL = 0, | 37 NORMAL = 0, |
| 36 HOVERED, | 38 HOVERED, |
| 37 SELECTED, | 39 SELECTED, |
| 38 NUM_STATES | 40 NUM_STATES |
| 39 }; | 41 }; |
| 40 | 42 |
| 41 enum ColorKind { | 43 enum ColorKind { |
| 42 BACKGROUND = 0, | 44 BACKGROUND = 0, |
| 43 TEXT, | 45 TEXT, |
| 44 DIMMED_TEXT, | 46 DIMMED_TEXT, |
| 45 URL, | 47 URL, |
| 46 DIVIDER, | 48 DIVIDER, |
| 47 NUM_KINDS | 49 NUM_KINDS |
| 48 }; | 50 }; |
| 49 | 51 |
| 52 // The minimum distance between the top and bottom of the text and the |
| 53 // top or bottom of the row. |
| 54 static const int kMinimumTextVerticalPadding = 3; |
| 55 |
| 50 OmniboxResultView(OmniboxPopupContentsView* model, | 56 OmniboxResultView(OmniboxPopupContentsView* model, |
| 51 int model_index, | 57 int model_index, |
| 52 LocationBarView* location_bar_view, | 58 LocationBarView* location_bar_view, |
| 53 const gfx::FontList& font_list); | 59 const gfx::FontList& font_list); |
| 54 ~OmniboxResultView() override; | 60 ~OmniboxResultView() override; |
| 55 | 61 |
| 56 SkColor GetColor(ResultViewState state, ColorKind kind) const; | 62 SkColor GetColor(ResultViewState state, ColorKind kind) const; |
| 57 | 63 |
| 58 // Updates the match used to paint the contents of this result view. We copy | 64 // Updates the match used to paint the contents of this result view. We copy |
| 59 // the match so that we can continue to paint the last result even after the | 65 // the match so that we can continue to paint the last result even after the |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 // |classifications| and |force_dim| are used to style the text. | 116 // |classifications| and |force_dim| are used to style the text. |
| 111 scoped_ptr<gfx::RenderText> CreateClassifiedRenderText( | 117 scoped_ptr<gfx::RenderText> CreateClassifiedRenderText( |
| 112 const base::string16& text, | 118 const base::string16& text, |
| 113 const ACMatchClassifications& classifications, | 119 const ACMatchClassifications& classifications, |
| 114 bool force_dim) const; | 120 bool force_dim) const; |
| 115 | 121 |
| 116 const gfx::Rect& text_bounds() const { return text_bounds_; } | 122 const gfx::Rect& text_bounds() const { return text_bounds_; } |
| 117 | 123 |
| 118 void set_edge_item_padding(int value) { edge_item_padding_ = value; } | 124 void set_edge_item_padding(int value) { edge_item_padding_ = value; } |
| 119 void set_item_padding(int value) { item_padding_ = value; } | 125 void set_item_padding(int value) { item_padding_ = value; } |
| 120 void set_minimum_text_vertical_padding(int value) { | |
| 121 minimum_text_vertical_padding_ = value; | |
| 122 } | |
| 123 | 126 |
| 124 private: | 127 private: |
| 125 // views::View: | 128 // views::View: |
| 126 const char* GetClassName() const override; | 129 const char* GetClassName() const override; |
| 127 | 130 |
| 128 gfx::ImageSkia GetIcon() const; | 131 gfx::ImageSkia GetIcon() const; |
| 129 const gfx::ImageSkia* GetKeywordIcon() const; | 132 const gfx::ImageSkia* GetKeywordIcon() const; |
| 130 | 133 |
| 131 // Whether to render only the keyword match. Returns true if |match_| has an | 134 // Whether to render only the keyword match. Returns true if |match_| has an |
| 132 // associated keyword match that has been animated so close to the start that | 135 // associated keyword match that has been animated so close to the start that |
| (...skipping 15 matching lines...) Expand all Loading... |
| 148 // gfx::AnimationDelegate: | 151 // gfx::AnimationDelegate: |
| 149 void AnimationProgressed(const gfx::Animation* animation) override; | 152 void AnimationProgressed(const gfx::Animation* animation) override; |
| 150 | 153 |
| 151 // Returns the offset at which the contents of the |match| should be displayed | 154 // Returns the offset at which the contents of the |match| should be displayed |
| 152 // within the text bounds. The directionality of UI and match contents is used | 155 // within the text bounds. The directionality of UI and match contents is used |
| 153 // to determine the offset relative to the correct edge. | 156 // to determine the offset relative to the correct edge. |
| 154 int GetDisplayOffset(const AutocompleteMatch& match, | 157 int GetDisplayOffset(const AutocompleteMatch& match, |
| 155 bool is_ui_rtl, | 158 bool is_ui_rtl, |
| 156 bool is_match_contents_rtl) const; | 159 bool is_match_contents_rtl) const; |
| 157 | 160 |
| 161 int StyleAnswerText(gfx::RenderText* render_text, |
| 162 int offset, |
| 163 const SuggestionAnswer::TextField& text_field) const; |
| 164 |
| 165 int GetAnswerLineHeight() const; |
| 166 int GetContentLineHeight() const; |
| 167 SkColor GetStateColor(const TextStyle& text_style) const; |
| 168 void AppendAnswerText(gfx::RenderText* render_text, |
| 169 const SuggestionAnswer::TextField& text_field); |
| 170 |
| 158 static int default_icon_size_; | 171 static int default_icon_size_; |
| 159 | 172 |
| 160 // Default values cached here, may be overridden using the setters above. | 173 // Default values cached here, may be overridden using the setters above. |
| 161 int edge_item_padding_; | 174 int edge_item_padding_; |
| 162 int item_padding_; | 175 int item_padding_; |
| 163 int minimum_text_vertical_padding_; | |
| 164 | 176 |
| 165 // This row's model and model index. | 177 // This row's model and model index. |
| 166 OmniboxPopupContentsView* model_; | 178 OmniboxPopupContentsView* model_; |
| 167 size_t model_index_; | 179 size_t model_index_; |
| 168 | 180 |
| 169 LocationBarView* location_bar_view_; | 181 LocationBarView* location_bar_view_; |
| 170 // Note: image_service_ may be null in some unit tests. | 182 // Note: image_service_ may be null in some unit tests. |
| 171 BitmapFetcherService* image_service_; | 183 BitmapFetcherService* image_service_; |
| 172 | 184 |
| 173 const gfx::FontList font_list_; | 185 const gfx::FontList font_list_; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 201 mutable scoped_ptr<gfx::RenderText> keyword_description_rendertext_; | 213 mutable scoped_ptr<gfx::RenderText> keyword_description_rendertext_; |
| 202 | 214 |
| 203 mutable int separator_width_; | 215 mutable int separator_width_; |
| 204 | 216 |
| 205 base::WeakPtrFactory<OmniboxResultView> weak_ptr_factory_; | 217 base::WeakPtrFactory<OmniboxResultView> weak_ptr_factory_; |
| 206 | 218 |
| 207 DISALLOW_COPY_AND_ASSIGN(OmniboxResultView); | 219 DISALLOW_COPY_AND_ASSIGN(OmniboxResultView); |
| 208 }; | 220 }; |
| 209 | 221 |
| 210 #endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 222 #endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ |
| OLD | NEW |