Commit 65e86bc8 authored by Tetsui Ohkubo's avatar Tetsui Ohkubo Committed by Commit Bot

Unified: Change sub header separator color.

This CL changes sub header separator color of detailed views in
UnifiedSystemTray.

Screenshot: http://screen/t36mz755DuP

TEST=manual
BUG=854146

Change-Id: I77b37bc6e352f427453c5da635c9d6d9dd649f0f
Reviewed-on: https://chromium-review.googlesource.com/1107428Reviewed-by: default avatarYoshiki Iguchi <yoshiki@chromium.org>
Commit-Queue: Tetsui Ohkubo <tetsui@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568753}
parent 2e5de0eb
...@@ -139,8 +139,7 @@ void AudioDetailedView::UpdateScrollableList() { ...@@ -139,8 +139,7 @@ void AudioDetailedView::UpdateScrollableList() {
} }
if (has_output_devices) { if (has_output_devices) {
scroll_content()->AddChildView( scroll_content()->AddChildView(CreateListSubHeaderSeparator());
TrayPopupUtils::CreateListSubHeaderSeparator());
} }
// Add audio input devices. // Add audio input devices.
......
...@@ -271,6 +271,9 @@ class ImeMenuListView : public ImeListView, public DetailedViewDelegate { ...@@ -271,6 +271,9 @@ class ImeMenuListView : public ImeListView, public DetailedViewDelegate {
bool IsOverflowIndicatorEnabled() const override { return true; } bool IsOverflowIndicatorEnabled() const override { return true; }
TriView* CreateTitleRow(int string_id) override { return nullptr; } TriView* CreateTitleRow(int string_id) override { return nullptr; }
views::View* CreateTitleSeparator() override { return nullptr; } views::View* CreateTitleSeparator() override { return nullptr; }
void ShowStickyHeaderSeparator(views::View* view,
bool show_separator) override {}
views::Separator* CreateListSubHeaderSeparator() override { return nullptr; }
HoverHighlightView* CreateScrollListItem( HoverHighlightView* CreateScrollListItem(
ViewClickListener* listener, ViewClickListener* listener,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
......
...@@ -925,7 +925,7 @@ int NetworkListView::UpdateSectionHeaderRow(NetworkTypePattern pattern, ...@@ -925,7 +925,7 @@ int NetworkListView::UpdateSectionHeaderRow(NetworkTypePattern pattern,
// visible when the header row is not at the top of the list. // visible when the header row is not at the top of the list.
if (child_index > 0) { if (child_index > 0) {
if (!*separator_view) if (!*separator_view)
*separator_view = TrayPopupUtils::CreateListSubHeaderSeparator(); *separator_view = CreateListSubHeaderSeparator();
PlaceViewAtIndex(*separator_view, child_index++); PlaceViewAtIndex(*separator_view, child_index++);
} else { } else {
if (*separator_view) if (*separator_view)
......
...@@ -324,8 +324,7 @@ void VPNListView::AddProviderAndNetworks( ...@@ -324,8 +324,7 @@ void VPNListView::AddProviderAndNetworks(
const chromeos::NetworkStateHandler::NetworkStateList& networks) { const chromeos::NetworkStateHandler::NetworkStateList& networks) {
// Add a visual separator, unless this is the topmost entry in the list. // Add a visual separator, unless this is the topmost entry in the list.
if (!list_empty_) { if (!list_empty_) {
scroll_content()->AddChildView( scroll_content()->AddChildView(CreateListSubHeaderSeparator());
TrayPopupUtils::CreateListSubHeaderSeparator());
} }
std::string vpn_name = std::string vpn_name =
vpn_provider.provider_type == VPNProvider::BUILT_IN_VPN vpn_provider.provider_type == VPNProvider::BUILT_IN_VPN
......
...@@ -19,6 +19,7 @@ class NativeTheme; ...@@ -19,6 +19,7 @@ class NativeTheme;
namespace views { namespace views {
class Button; class Button;
class ButtonListener; class ButtonListener;
class Separator;
class View; class View;
} // namespace views } // namespace views
...@@ -57,6 +58,15 @@ class DetailedViewDelegate { ...@@ -57,6 +58,15 @@ class DetailedViewDelegate {
// takes ownership of the returned view. // takes ownership of the returned view.
virtual views::View* CreateTitleSeparator() = 0; virtual views::View* CreateTitleSeparator() = 0;
// Configure a |view| to have a visible separator below.
virtual void ShowStickyHeaderSeparator(views::View* view,
bool show_separator) = 0;
// Create a horizontal separator line to be drawn between rows in a detailed
// view above the sub-header rows. Caller takes ownership of the returned
// view.
virtual views::Separator* CreateListSubHeaderSeparator() = 0;
// Return a targetable row containing |icon| and |text|. Caller takes // Return a targetable row containing |icon| and |text|. Caller takes
// ownership of the returned view. // ownership of the returned view.
virtual HoverHighlightView* CreateScrollListItem( virtual HoverHighlightView* CreateScrollListItem(
......
...@@ -86,6 +86,17 @@ views::View* SystemTrayItemDetailedViewDelegate::CreateTitleSeparator() { ...@@ -86,6 +86,17 @@ views::View* SystemTrayItemDetailedViewDelegate::CreateTitleSeparator() {
return separator; return separator;
} }
void SystemTrayItemDetailedViewDelegate::ShowStickyHeaderSeparator(
views::View* view,
bool show_separator) {
TrayPopupUtils::ShowStickyHeaderSeparator(view, show_separator);
}
views::Separator*
SystemTrayItemDetailedViewDelegate::CreateListSubHeaderSeparator() {
return TrayPopupUtils::CreateListSubHeaderSeparator();
}
HoverHighlightView* SystemTrayItemDetailedViewDelegate::CreateScrollListItem( HoverHighlightView* SystemTrayItemDetailedViewDelegate::CreateScrollListItem(
ViewClickListener* listener, ViewClickListener* listener,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
......
...@@ -28,6 +28,9 @@ class ASH_EXPORT SystemTrayItemDetailedViewDelegate ...@@ -28,6 +28,9 @@ class ASH_EXPORT SystemTrayItemDetailedViewDelegate
bool IsOverflowIndicatorEnabled() const override; bool IsOverflowIndicatorEnabled() const override;
TriView* CreateTitleRow(int string_id) override; TriView* CreateTitleRow(int string_id) override;
views::View* CreateTitleSeparator() override; views::View* CreateTitleSeparator() override;
void ShowStickyHeaderSeparator(views::View* view,
bool show_separator) override;
views::Separator* CreateListSubHeaderSeparator() override;
HoverHighlightView* CreateScrollListItem(ViewClickListener* listener, HoverHighlightView* CreateScrollListItem(ViewClickListener* listener,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
const base::string16& text) override; const base::string16& text) override;
......
...@@ -54,7 +54,8 @@ const int kTitleRowSeparatorIndex = 1; ...@@ -54,7 +54,8 @@ const int kTitleRowSeparatorIndex = 1;
// row use set_id(VIEW_ID_STICKY_HEADER). // row use set_id(VIEW_ID_STICKY_HEADER).
class ScrollContentsView : public views::View { class ScrollContentsView : public views::View {
public: public:
ScrollContentsView() { explicit ScrollContentsView(DetailedViewDelegate* delegate)
: delegate_(delegate) {
box_layout_ = SetLayoutManager( box_layout_ = SetLayoutManager(
std::make_unique<views::BoxLayout>(views::BoxLayout::kVertical)); std::make_unique<views::BoxLayout>(views::BoxLayout::kVertical));
} }
...@@ -212,8 +213,7 @@ class ScrollContentsView : public views::View { ...@@ -212,8 +213,7 @@ class ScrollContentsView : public views::View {
} }
if (header.draw_separator_below != draw_separator_below) { if (header.draw_separator_below != draw_separator_below) {
header.draw_separator_below = draw_separator_below; header.draw_separator_below = draw_separator_below;
TrayPopupUtils::ShowStickyHeaderSeparator(header_view, delegate_->ShowStickyHeaderSeparator(header_view, draw_separator_below);
draw_separator_below);
} }
if (header.natural_offset < scroll_offset) if (header.natural_offset < scroll_offset)
break; break;
...@@ -253,6 +253,8 @@ class ScrollContentsView : public views::View { ...@@ -253,6 +253,8 @@ class ScrollContentsView : public views::View {
canvas->DrawRect(shadowed_area, flags); canvas->DrawRect(shadowed_area, flags);
} }
DetailedViewDelegate* const delegate_;
views::BoxLayout* box_layout_ = nullptr; views::BoxLayout* box_layout_ = nullptr;
// Header child views that stick to the top of visible viewport when scrolled. // Header child views that stick to the top of visible viewport when scrolled.
...@@ -313,7 +315,7 @@ void TrayDetailedView::CreateTitleRow(int string_id) { ...@@ -313,7 +315,7 @@ void TrayDetailedView::CreateTitleRow(int string_id) {
void TrayDetailedView::CreateScrollableList() { void TrayDetailedView::CreateScrollableList() {
DCHECK(!scroller_); DCHECK(!scroller_);
scroll_content_ = new ScrollContentsView(); scroll_content_ = new ScrollContentsView(delegate_);
scroller_ = new views::ScrollView; scroller_ = new views::ScrollView;
scroller_->set_draw_overflow_indicator( scroller_->set_draw_overflow_indicator(
delegate_->IsOverflowIndicatorEnabled()); delegate_->IsOverflowIndicatorEnabled());
...@@ -428,6 +430,10 @@ views::Button* TrayDetailedView::CreateHelpButton() { ...@@ -428,6 +430,10 @@ views::Button* TrayDetailedView::CreateHelpButton() {
return delegate_->CreateHelpButton(this); return delegate_->CreateHelpButton(this);
} }
views::Separator* TrayDetailedView::CreateListSubHeaderSeparator() {
return delegate_->CreateListSubHeaderSeparator();
}
void TrayDetailedView::HandleViewClicked(views::View* view) { void TrayDetailedView::HandleViewClicked(views::View* view) {
NOTREACHED(); NOTREACHED();
} }
......
...@@ -23,6 +23,7 @@ class BoxLayout; ...@@ -23,6 +23,7 @@ class BoxLayout;
class Button; class Button;
class ProgressBar; class ProgressBar;
class ScrollView; class ScrollView;
class Separator;
} // namespace views } // namespace views
namespace ash { namespace ash {
...@@ -108,6 +109,11 @@ class ASH_EXPORT TrayDetailedView : public views::View, ...@@ -108,6 +109,11 @@ class ASH_EXPORT TrayDetailedView : public views::View,
views::Button* CreateSettingsButton(int setting_accessible_name_id); views::Button* CreateSettingsButton(int setting_accessible_name_id);
views::Button* CreateHelpButton(); views::Button* CreateHelpButton();
// Create a horizontal separator line to be drawn between rows in a detailed
// view above the sub-header rows. Caller takes ownership of the returned
// view.
views::Separator* CreateListSubHeaderSeparator();
// Closes the bubble that contains the detailed view. // Closes the bubble that contains the detailed view.
void CloseBubble(); void CloseBubble();
......
...@@ -276,8 +276,7 @@ void AccessibilityDetailedView::AppendAccessibilityList() { ...@@ -276,8 +276,7 @@ void AccessibilityDetailedView::AppendAccessibilityList() {
IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD), IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD),
virtual_keyboard_enabled_); virtual_keyboard_enabled_);
scroll_content()->AddChildView( scroll_content()->AddChildView(CreateListSubHeaderSeparator());
TrayPopupUtils::CreateListSubHeaderSeparator());
AddScrollListSubHeader(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS); AddScrollListSubHeader(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS);
......
...@@ -146,6 +146,30 @@ views::View* UnifiedDetailedViewDelegate::CreateTitleSeparator() { ...@@ -146,6 +146,30 @@ views::View* UnifiedDetailedViewDelegate::CreateTitleSeparator() {
return separator; return separator;
} }
void UnifiedDetailedViewDelegate::ShowStickyHeaderSeparator(
views::View* view,
bool show_separator) {
if (show_separator) {
view->SetBorder(views::CreatePaddedBorder(
views::CreateSolidSidedBorder(0, 0, kSeparatorWidth, 0,
kUnifiedMenuSeparatorColor),
gfx::Insets(kMenuSeparatorVerticalPadding, 0,
kMenuSeparatorVerticalPadding - kSeparatorWidth, 0)));
} else {
view->SetBorder(views::CreateEmptyBorder(
gfx::Insets(kMenuSeparatorVerticalPadding, 0)));
}
view->SchedulePaint();
}
views::Separator* UnifiedDetailedViewDelegate::CreateListSubHeaderSeparator() {
views::Separator* separator = new views::Separator();
separator->SetColor(kUnifiedMenuSeparatorColor);
separator->SetBorder(views::CreateEmptyBorder(
kMenuSeparatorVerticalPadding - views::Separator::kThickness, 0, 0, 0));
return separator;
}
HoverHighlightView* UnifiedDetailedViewDelegate::CreateScrollListItem( HoverHighlightView* UnifiedDetailedViewDelegate::CreateScrollListItem(
ViewClickListener* listener, ViewClickListener* listener,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
......
...@@ -26,6 +26,9 @@ class UnifiedDetailedViewDelegate : public DetailedViewDelegate { ...@@ -26,6 +26,9 @@ class UnifiedDetailedViewDelegate : public DetailedViewDelegate {
bool IsOverflowIndicatorEnabled() const override; bool IsOverflowIndicatorEnabled() const override;
TriView* CreateTitleRow(int string_id) override; TriView* CreateTitleRow(int string_id) override;
views::View* CreateTitleSeparator() override; views::View* CreateTitleSeparator() override;
void ShowStickyHeaderSeparator(views::View* view,
bool show_separator) override;
views::Separator* CreateListSubHeaderSeparator() override;
HoverHighlightView* CreateScrollListItem(ViewClickListener* listener, HoverHighlightView* CreateScrollListItem(ViewClickListener* listener,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
const base::string16& text) override; const base::string16& text) override;
......
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