OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_HARMONY_CHROME_LAYOUT_PROVIDER_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_HARMONY_CHROME_LAYOUT_PROVIDER_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_HARMONY_CHROME_LAYOUT_PROVIDER_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_HARMONY_CHROME_LAYOUT_PROVIDER_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "ui/gfx/geometry/insets.h" | 11 #include "ui/gfx/geometry/insets.h" |
12 #include "ui/views/layout/grid_layout.h" | 12 #include "ui/views/layout/grid_layout.h" |
13 #include "ui/views/layout/layout_provider.h" | 13 #include "ui/views/layout/layout_provider.h" |
14 | 14 |
| 15 enum ChromeInsetsMetric { |
| 16 // Margins used by toasts. |
| 17 INSETS_TOAST = views::VIEWS_INSETS_END, |
| 18 }; |
| 19 |
15 enum ChromeDistanceMetric { | 20 enum ChromeDistanceMetric { |
16 // Default minimum width of a button. | 21 // Default minimum width of a button. |
17 DISTANCE_BUTTON_MINIMUM_WIDTH = views::VIEWS_DISTANCE_END, | 22 DISTANCE_BUTTON_MINIMUM_WIDTH = views::VIEWS_DISTANCE_END, |
18 // Vertical spacing between a list of multiple controls in one column. | 23 // Vertical spacing between a list of multiple controls in one column. |
19 DISTANCE_CONTROL_LIST_VERTICAL, | 24 DISTANCE_CONTROL_LIST_VERTICAL, |
20 // The combined vertical padding applied to text in a control. | 25 // The combined vertical padding applied to text in a control. |
21 DISTANCE_CONTROL_TOTAL_VERTICAL_TEXT_PADDING, | 26 DISTANCE_CONTROL_TOTAL_VERTICAL_TEXT_PADDING, |
22 // Smaller horizontal spacing between other controls that are logically | 27 // Smaller horizontal spacing between other controls that are logically |
23 // related. | 28 // related. |
24 DISTANCE_RELATED_CONTROL_HORIZONTAL_SMALL, | 29 DISTANCE_RELATED_CONTROL_HORIZONTAL_SMALL, |
25 // Smaller vertical spacing between controls that are logically related. | 30 // Smaller vertical spacing between controls that are logically related. |
26 DISTANCE_RELATED_CONTROL_VERTICAL_SMALL, | 31 DISTANCE_RELATED_CONTROL_VERTICAL_SMALL, |
27 // Horizontal spacing between an item such as an icon or checkbox and a | 32 // Horizontal spacing between an item such as an icon or checkbox and a |
28 // label related to it. | 33 // label related to it. |
29 DISTANCE_RELATED_LABEL_HORIZONTAL, | 34 DISTANCE_RELATED_LABEL_HORIZONTAL, |
30 // Horizontal spacing between an item and the related label, in the context of | 35 // Horizontal spacing between an item and the related label, in the context of |
31 // a row of such items. E.g. the bookmarks bar. | 36 // a row of such items. E.g. the bookmarks bar. |
32 DISTANCE_RELATED_LABEL_HORIZONTAL_LIST, | 37 DISTANCE_RELATED_LABEL_HORIZONTAL_LIST, |
33 // Horizontal indent of a subsection relative to related items above, e.g. | 38 // Horizontal indent of a subsection relative to related items above, e.g. |
34 // checkboxes below explanatory text/headings. | 39 // checkboxes below explanatory text/headings. |
35 DISTANCE_SUBSECTION_HORIZONTAL_INDENT, | 40 DISTANCE_SUBSECTION_HORIZONTAL_INDENT, |
| 41 // Vertical margin for controls in a toast. |
| 42 DISTANCE_TOAST_CONTROL_VERTICAL, |
| 43 // Vertical margin for labels in a toast. |
| 44 DISTANCE_TOAST_LABEL_VERTICAL, |
36 // Horizontal spacing between controls that are logically unrelated. | 45 // Horizontal spacing between controls that are logically unrelated. |
37 DISTANCE_UNRELATED_CONTROL_HORIZONTAL, | 46 DISTANCE_UNRELATED_CONTROL_HORIZONTAL, |
38 // Larger horizontal spacing between unrelated controls. | 47 // Larger horizontal spacing between unrelated controls. |
39 DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE, | 48 DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE, |
40 // Larger vertical spacing between unrelated controls. | 49 // Larger vertical spacing between unrelated controls. |
41 DISTANCE_UNRELATED_CONTROL_VERTICAL_LARGE, | 50 DISTANCE_UNRELATED_CONTROL_VERTICAL_LARGE, |
42 }; | 51 }; |
43 | 52 |
44 class ChromeLayoutProvider : public views::LayoutProvider { | 53 class ChromeLayoutProvider : public views::LayoutProvider { |
45 public: | 54 public: |
46 ChromeLayoutProvider() {} | 55 ChromeLayoutProvider() {} |
47 ~ChromeLayoutProvider() override {} | 56 ~ChromeLayoutProvider() override {} |
48 | 57 |
49 static ChromeLayoutProvider* Get(); | 58 static ChromeLayoutProvider* Get(); |
50 static std::unique_ptr<views::LayoutProvider> CreateLayoutProvider(); | 59 static std::unique_ptr<views::LayoutProvider> CreateLayoutProvider(); |
51 | 60 |
52 // Calculates the control height based on the |font|'s reported glyph height, | 61 // Calculates the control height based on the |font|'s reported glyph height, |
53 // the default line spacing and DISTANCE_CONTROL_TOTAL_VERTICAL_TEXT_PADDING. | 62 // the default line spacing and DISTANCE_CONTROL_TOTAL_VERTICAL_TEXT_PADDING. |
54 static int GetControlHeightForFont(const gfx::FontList& font); | 63 static int GetControlHeightForFont(const gfx::FontList& font); |
55 | 64 |
56 // views::LayoutProvider: | 65 // views::LayoutProvider: |
| 66 gfx::Insets GetInsetsMetric(int metric) const override; |
57 int GetDistanceMetric(int metric) const override; | 67 int GetDistanceMetric(int metric) const override; |
58 const views::TypographyProvider& GetTypographyProvider() const override; | 68 const views::TypographyProvider& GetTypographyProvider() const override; |
59 | 69 |
60 // Returns the alignment used for control labels in a GridLayout; for example, | 70 // Returns the alignment used for control labels in a GridLayout; for example, |
61 // in this GridLayout: | 71 // in this GridLayout: |
62 // --------------------------- | 72 // --------------------------- |
63 // | Label 1 Checkbox 1 | | 73 // | Label 1 Checkbox 1 | |
64 // | Label 2 Checkbox 2 | | 74 // | Label 2 Checkbox 2 | |
65 // --------------------------- | 75 // --------------------------- |
66 // This value controls the alignment used for "Label 1" and "Label 2". | 76 // This value controls the alignment used for "Label 1" and "Label 2". |
(...skipping 12 matching lines...) Expand all Loading... |
79 // types, e.g. by adding a new LayoutDistance value that means what you need. | 89 // types, e.g. by adding a new LayoutDistance value that means what you need. |
80 // | 90 // |
81 // TODO(pkasting): Fix callers and remove this. | 91 // TODO(pkasting): Fix callers and remove this. |
82 virtual bool IsHarmonyMode() const; | 92 virtual bool IsHarmonyMode() const; |
83 | 93 |
84 private: | 94 private: |
85 DISALLOW_COPY_AND_ASSIGN(ChromeLayoutProvider); | 95 DISALLOW_COPY_AND_ASSIGN(ChromeLayoutProvider); |
86 }; | 96 }; |
87 | 97 |
88 #endif // CHROME_BROWSER_UI_VIEWS_HARMONY_CHROME_LAYOUT_PROVIDER_H_ | 98 #endif // CHROME_BROWSER_UI_VIEWS_HARMONY_CHROME_LAYOUT_PROVIDER_H_ |
OLD | NEW |