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
3 // found in the LICENSE file.
5 #include "ash/system/tray/tray_utils.h"
7 #include "ash/system/tray/tray_constants.h"
8 #include "ash/system/tray/tray_item_view.h"
9 #include "ui/accessibility/ax_view_state.h"
10 #include "ui/gfx/font_list.h"
11 #include "ui/gfx/geometry/vector2d.h"
12 #include "ui/views/border.h"
13 #include "ui/views/controls/label.h"
17 void SetupLabelForTray(views::Label
* label
) {
18 label
->SetFontList(gfx::FontList().Derive(1, gfx::Font::BOLD
));
19 label
->SetAutoColorReadabilityEnabled(false);
20 label
->SetEnabledColor(SK_ColorWHITE
);
21 label
->SetBackgroundColor(SkColorSetARGB(0, 255, 255, 255));
22 label
->SetShadows(gfx::ShadowValues(
24 gfx::ShadowValue(gfx::Vector2d(0, 1), 0, SkColorSetARGB(64, 0, 0, 0))));
27 void SetTrayImageItemBorder(views::View
* tray_view
,
28 ShelfAlignment alignment
) {
29 if (alignment
== SHELF_ALIGNMENT_BOTTOM
||
30 alignment
== SHELF_ALIGNMENT_TOP
) {
31 tray_view
->SetBorder(views::Border::CreateEmptyBorder(
33 kTrayImageItemHorizontalPaddingBottomAlignment
,
35 kTrayImageItemHorizontalPaddingBottomAlignment
));
37 tray_view
->SetBorder(views::Border::CreateEmptyBorder(
38 kTrayImageItemVerticalPaddingVerticalAlignment
,
39 kTrayImageItemHorizontalPaddingVerticalAlignment
,
40 kTrayImageItemVerticalPaddingVerticalAlignment
,
41 kTrayImageItemHorizontalPaddingVerticalAlignment
));
45 void SetTrayLabelItemBorder(TrayItemView
* tray_view
,
46 ShelfAlignment alignment
) {
47 if (alignment
== SHELF_ALIGNMENT_BOTTOM
||
48 alignment
== SHELF_ALIGNMENT_TOP
) {
49 tray_view
->SetBorder(views::Border::CreateEmptyBorder(
51 kTrayLabelItemHorizontalPaddingBottomAlignment
,
53 kTrayLabelItemHorizontalPaddingBottomAlignment
));
55 // Center the label for vertical launcher alignment.
56 int horizontal_padding
= std::max(0,
57 (tray_view
->GetPreferredSize().width() -
58 tray_view
->label()->GetPreferredSize().width()) / 2);
59 tray_view
->SetBorder(views::Border::CreateEmptyBorder(
60 kTrayLabelItemVerticalPaddingVerticalAlignment
,
62 kTrayLabelItemVerticalPaddingVerticalAlignment
,
67 void GetAccessibleLabelFromDescendantViews(
69 std::vector
<base::string16
>& out_labels
) {
70 ui::AXViewState temp_state
;
71 view
->GetAccessibleState(&temp_state
);
72 if (!temp_state
.name
.empty())
73 out_labels
.push_back(temp_state
.name
);
75 // Do not descend into static text labels which may compute their own labels
77 if (temp_state
.role
== ui::AX_ROLE_STATIC_TEXT
)
80 for (int i
= 0; i
< view
->child_count(); ++i
)
81 GetAccessibleLabelFromDescendantViews(view
->child_at(i
), out_labels
);