blob: 58603d5ee52a5bf7339ee383a16edb8caded913b [file] [log] [blame]
// Copyright (c) 2018 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_OMNIBOX_OMNIBOX_MATCH_CELL_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_MATCH_CELL_VIEW_H_
#include "ui/views/view.h"
namespace views {
class ImageView;
}
struct AutocompleteMatch;
class OmniboxResultView;
class OmniboxTextView;
class OmniboxMatchCellView : public views::View {
public:
explicit OmniboxMatchCellView(OmniboxResultView* result_view);
~OmniboxMatchCellView() override;
views::ImageView* icon() { return icon_view_; }
views::ImageView* image() { return image_view_; }
OmniboxTextView* content() { return content_view_; }
OmniboxTextView* description() { return description_view_; }
OmniboxTextView* separator() { return separator_view_; }
// Used to define the amount the keyword view overlaps with the suggestion
// view in non-keyword mode.
int IconWidthAndPadding() const;
void OnMatchUpdate(const OmniboxResultView* result_view,
const AutocompleteMatch& match);
// views::View:
gfx::Size CalculatePreferredSize() const override;
bool CanProcessEventsWithinSubtree() const override;
// The right-hand margin used for rows with the refresh UI.
static constexpr int kRefreshMarginRight = 8;
protected:
// views::View:
void Layout() override;
const char* GetClassName() const override;
void LayoutOldStyleAnswer(int icon_view_width, int text_indent);
void LayoutNewStyleTwoLineSuggestion();
void LayoutOneLineSuggestion(int icon_view_width, int text_indent);
bool is_old_style_answer_;
bool is_rich_suggestion_;
bool is_search_type_;
bool has_tab_match_ = false;
// Weak pointers for easy reference.
views::ImageView* icon_view_; // An icon representing the type or content.
views::ImageView* image_view_; // For rich suggestions.
OmniboxTextView* content_view_;
OmniboxTextView* description_view_;
OmniboxTextView* separator_view_;
private:
DISALLOW_COPY_AND_ASSIGN(OmniboxMatchCellView);
};
#endif // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_MATCH_CELL_VIEW_H_