Commit df9eeb20 authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Add builder to ImageView. Update builder/metadata for Label.

More builder macro cleanup.

Bug: 1130078
Change-Id: Idf4127c8ebb3c71b1bc7a9710e58d629899710d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2510738
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Auto-Submit: Allen Bauer <kylixrd@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823324}
parent c55390f2
......@@ -5,9 +5,15 @@
#ifndef UI_VIEWS_CONTROLS_IMAGE_VIEW_H_
#define UI_VIEWS_CONTROLS_IMAGE_VIEW_H_
#include <memory>
#include <utility>
#include "base/macros.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/metadata/view_factory.h"
#include "ui/views/view.h"
#include "ui/views/views_export.h"
namespace gfx {
class Canvas;
......@@ -132,6 +138,36 @@ class VIEWS_EXPORT ImageView : public View {
DISALLOW_COPY_AND_ASSIGN(ImageView);
};
BEGIN_VIEW_BUILDER(VIEWS_EXPORT, ImageView, View)
// Explicitly declare the overloaded SetImage methods in order to properly
// disambiguate between them.
BuilderT& SetImage(const gfx::ImageSkia& value) {
auto setter = std::make_unique<::views::internal::PropertySetter<
ViewClass_, gfx::ImageSkia,
decltype((static_cast<void (ViewClass_::*)(const gfx::ImageSkia&)>(
&ViewClass_::SetImage))),
&ViewClass_::SetImage>>(value);
::views::internal::ViewBuilderCore::AddPropertySetter(std::move(setter));
return *static_cast<BuilderT*>(this);
}
BuilderT& SetImage(const gfx::ImageSkia* value) {
auto setter = std::make_unique<::views::internal::PropertySetter<
ViewClass_, gfx::ImageSkia*,
decltype((static_cast<void (ViewClass_::*)(const gfx::ImageSkia*)>(
&ViewClass_::SetImage))),
&ViewClass_::SetImage>>(value);
::views::internal::ViewBuilderCore::AddPropertySetter(std::move(setter));
return *static_cast<BuilderT*>(this);
}
VIEW_BUILDER_PROPERTY(gfx::Size, ImageSize)
VIEW_BUILDER_PROPERTY(ImageView::Alignment, HorizontalAlignment)
VIEW_BUILDER_PROPERTY(ImageView::Alignment, VerticalAlignment)
VIEW_BUILDER_PROPERTY(base::string16, AccessibleName)
VIEW_BUILDER_PROPERTY(base::string16, TooltipText)
END_VIEW_BUILDER
} // namespace views
DEFINE_VIEW_BUILDER(VIEWS_EXPORT, ImageView)
#endif // UI_VIEWS_CONTROLS_IMAGE_VIEW_H_
......@@ -112,6 +112,14 @@ int Label::GetTextContext() const {
return text_context_;
}
void Label::SetTextContext(int text_context) {
if (text_context == text_context_)
return;
text_context_ = text_context;
UpdateColorsFromTheme();
OnPropertyChanged(&text_context_, views::kPropertyEffectsPaint);
}
int Label::GetTextStyle() const {
return text_style_;
}
......@@ -1159,6 +1167,7 @@ void Label::BuildContextMenuContents() {
BEGIN_METADATA(Label, View)
ADD_PROPERTY_METADATA(base::string16, Text)
ADD_PROPERTY_METADATA(int, TextContext)
ADD_PROPERTY_METADATA(int, TextStyle)
ADD_PROPERTY_METADATA(bool, AutoColorReadabilityEnabled)
ADD_PROPERTY_METADATA(SkColor, EnabledColor)
......@@ -1179,7 +1188,6 @@ ADD_PROPERTY_METADATA(base::string16, TooltipText)
ADD_PROPERTY_METADATA(bool, HandlesTooltips)
ADD_PROPERTY_METADATA(bool, CollapseWhenHidden)
ADD_PROPERTY_METADATA(int, MaximumWidth)
ADD_READONLY_PROPERTY_METADATA(int, TextContext)
END_METADATA
} // namespace views
......@@ -93,6 +93,7 @@ class VIEWS_EXPORT Label : public View,
// Where the label appears in the UI. Passed in from the constructor. This is
// a value from views::style::TextContext or an enum that extends it.
int GetTextContext() const;
void SetTextContext(int text_context);
// The style of the label. This is a value from views::style::TextStyle or an
// enum that extends it.
......@@ -398,7 +399,7 @@ class VIEWS_EXPORT Label : public View,
// Builds |context_menu_contents_|.
void BuildContextMenuContents();
const int text_context_;
int text_context_;
int text_style_;
base::Optional<int> line_height_;
......@@ -453,6 +454,7 @@ BEGIN_VIEW_BUILDER(VIEWS_EXPORT, Label, View)
VIEW_BUILDER_PROPERTY(const gfx::FontList&, FontList)
VIEW_BUILDER_PROPERTY(const base::string16&, Text)
VIEW_BUILDER_PROPERTY(int, TextStyle)
VIEW_BUILDER_PROPERTY(int, TextContext)
VIEW_BUILDER_PROPERTY(bool, AutoColorReadabilityEnabled)
VIEW_BUILDER_PROPERTY(SkColor, EnabledColor)
VIEW_BUILDER_PROPERTY(SkColor, BackgroundColor)
......
......@@ -159,9 +159,10 @@ class BaseViewBuilderT : public internal::ViewBuilderCore {
#define BEGIN_VIEW_BUILDER(export, view_class, ancestor) \
template <typename BuilderT> \
class export view_class##BuilderT : public ancestor##BuilderT<BuilderT> { \
public: \
private: \
using ViewClass_ = view_class; \
\
public: \
view_class##BuilderT() = default; \
explicit view_class##BuilderT( \
typename ::views::internal::ViewClassTrait<BuilderT>::ViewClass_* \
......@@ -236,13 +237,15 @@ namespace views { \
template <> \
class export Builder<view_class> \
: public view_class##BuilderT<Builder<view_class>> { \
private: \
using ViewClass_ = view_class; \
public: \
Builder<view_class>() = default; \
explicit Builder<view_class>(ViewClass_* root_view) \
: view_class##BuilderT<Builder<view_class>>(root_view) {} \
Builder<view_class>(Builder&&) = default; \
Builder<view_class>& operator=(Builder<view_class>&&) = default; \
~Builder<view_class>() = default; \
Builder<ViewClass_>() = default; \
explicit Builder<ViewClass_>(ViewClass_* root_view) \
: view_class##BuilderT<Builder<ViewClass_>>(root_view) {} \
Builder<ViewClass_>(Builder&&) = default; \
Builder<ViewClass_>& operator=(Builder<ViewClass_>&&) = default; \
~Builder<ViewClass_>() = default; \
}; \
} // namespace views
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment