Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: ash/common/system/tray/tray_details_view.cc

Issue 2300353002: Revert of Make TrayDetailsView a ViewClickListener and ButtonListener (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #include "ash/common/system/tray/tray_details_view.h" 5 #include "ash/common/system/tray/tray_details_view.h"
6 6
7 #include "ash/common/material_design/material_design_controller.h"
8 #include "ash/common/system/tray/fixed_sized_scroll_view.h" 7 #include "ash/common/system/tray/fixed_sized_scroll_view.h"
9 #include "ash/common/system/tray/system_tray.h" 8 #include "ash/common/system/tray/system_tray.h"
10 #include "ash/common/system/tray/system_tray_item.h" 9 #include "ash/common/system/tray/system_tray_item.h"
11 #include "ash/common/system/tray/tray_constants.h" 10 #include "ash/common/system/tray/tray_constants.h"
12 #include "ui/gfx/canvas.h" 11 #include "ui/gfx/canvas.h"
13 #include "ui/views/background.h" 12 #include "ui/views/background.h"
14 #include "ui/views/border.h" 13 #include "ui/views/border.h"
15 #include "ui/views/controls/scroll_view.h" 14 #include "ui/views/controls/scroll_view.h"
16 #include "ui/views/layout/box_layout.h" 15 #include "ui/views/layout/box_layout.h"
17 16
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 54
56 gfx::Size GetMinimumSize() const override { return gfx::Size(0, 1); } 55 gfx::Size GetMinimumSize() const override { return gfx::Size(0, 1); }
57 56
58 bool visible_; 57 bool visible_;
59 58
60 DISALLOW_COPY_AND_ASSIGN(ScrollBorder); 59 DISALLOW_COPY_AND_ASSIGN(ScrollBorder);
61 }; 60 };
62 61
63 TrayDetailsView::TrayDetailsView(SystemTrayItem* owner) 62 TrayDetailsView::TrayDetailsView(SystemTrayItem* owner)
64 : owner_(owner), 63 : owner_(owner),
65 title_row_(nullptr), 64 footer_(NULL),
66 scroller_(nullptr), 65 scroller_(NULL),
67 scroll_content_(nullptr), 66 scroll_content_(NULL),
68 scroll_border_(nullptr) { 67 scroll_border_(NULL) {
69 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); 68 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
70 set_background(views::Background::CreateSolidBackground(kBackgroundColor)); 69 set_background(views::Background::CreateSolidBackground(kBackgroundColor));
71 } 70 }
72 71
73 TrayDetailsView::~TrayDetailsView() {} 72 TrayDetailsView::~TrayDetailsView() {}
74 73
75 void TrayDetailsView::OnViewClicked(views::View* sender) { 74 void TrayDetailsView::CreateSpecialRow(int string_id,
76 if (sender == title_row_->content()) 75 ViewClickListener* listener) {
77 TransitionToDefaultView(); 76 DCHECK(!footer_);
78 else 77 footer_ = new SpecialPopupRow();
79 HandleViewClicked(sender); 78 footer_->SetTextLabel(string_id, listener);
80 } 79 AddChildViewAt(footer_, child_count());
81
82 void TrayDetailsView::ButtonPressed(views::Button* sender,
83 const ui::Event& event) {
84 // TODO(tdanderson): Handle presses for material design buttons common to all
85 // detailed views here (back and Settings). See crbug.com/642136.
86 HandleButtonPressed(sender, event);
87 }
88
89 void TrayDetailsView::CreateTitleRow(int string_id) {
90 DCHECK(!title_row_);
91 const int child_view_position =
92 MaterialDesignController::IsSystemTrayMenuMaterial() ? 0 : child_count();
93 title_row_ = new SpecialPopupRow();
94 title_row_->SetTextLabel(string_id, this);
95 AddChildViewAt(title_row_, child_view_position);
96 CreateExtraTitleRowButtons();
97 } 80 }
98 81
99 void TrayDetailsView::CreateScrollableList() { 82 void TrayDetailsView::CreateScrollableList() {
100 DCHECK(!scroller_); 83 DCHECK(!scroller_);
101 scroll_content_ = new views::View; 84 scroll_content_ = new views::View;
102 scroll_content_->SetLayoutManager( 85 scroll_content_->SetLayoutManager(
103 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); 86 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1));
104 scroller_ = new FixedSizedScrollView; 87 scroller_ = new FixedSizedScrollView;
105 scroller_->SetContentsView(scroll_content_); 88 scroller_->SetContentsView(scroll_content_);
106 89
107 // Note: |scroller_| takes ownership of |scroll_border_|. 90 // Note: |scroller_| takes ownership of |scroll_border_|.
108 scroll_border_ = new ScrollBorder; 91 scroll_border_ = new ScrollBorder;
109 scroller_->SetBorder(std::unique_ptr<views::Border>(scroll_border_)); 92 scroller_->SetBorder(std::unique_ptr<views::Border>(scroll_border_));
110 93
111 AddChildView(scroller_); 94 AddChildView(scroller_);
112 } 95 }
113 96
114 void TrayDetailsView::AddScrollSeparator() { 97 void TrayDetailsView::AddScrollSeparator() {
115 DCHECK(scroll_content_); 98 DCHECK(scroll_content_);
116 // Do not draw the separator if it is the very first item 99 // Do not draw the separator if it is the very first item
117 // in the scrollable list. 100 // in the scrollable list.
118 if (scroll_content_->has_children()) 101 if (scroll_content_->has_children())
119 scroll_content_->AddChildView(new ScrollSeparator); 102 scroll_content_->AddChildView(new ScrollSeparator);
120 } 103 }
121 104
122 void TrayDetailsView::Reset() { 105 void TrayDetailsView::Reset() {
123 RemoveAllChildViews(true); 106 RemoveAllChildViews(true);
124 title_row_ = nullptr; 107 footer_ = NULL;
125 scroller_ = nullptr; 108 scroller_ = NULL;
126 scroll_content_ = nullptr; 109 scroll_content_ = NULL;
127 } 110 }
128 111
129 void TrayDetailsView::HandleViewClicked(views::View* view) {}
130
131 void TrayDetailsView::HandleButtonPressed(views::Button* sender,
132 const ui::Event& event) {}
133
134 void TrayDetailsView::CreateExtraTitleRowButtons() {}
135
136 void TrayDetailsView::TransitionToDefaultView() { 112 void TrayDetailsView::TransitionToDefaultView() {
137 // Cache pointer to owner in this function scope. TrayDetailsView will be 113 // Cache pointer to owner in this function scope. TrayDetailsView will be
138 // deleted after called ShowDefaultView. 114 // deleted after called ShowDefaultView.
139 SystemTrayItem* owner = owner_; 115 SystemTrayItem* owner = owner_;
140 if (title_row_ && title_row_->content() && title_row_->content()->HasFocus()) 116 if (footer_ && footer_->content() && footer_->content()->HasFocus())
141 owner->set_restore_focus(true); 117 owner->set_restore_focus(true);
142 owner->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 118 owner->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING);
143 owner->set_restore_focus(false); 119 owner->set_restore_focus(false);
144 } 120 }
145 121
146 void TrayDetailsView::Layout() { 122 void TrayDetailsView::Layout() {
147 if (bounds().IsEmpty()) { 123 if (bounds().IsEmpty()) {
148 views::View::Layout(); 124 views::View::Layout();
149 return; 125 return;
150 } 126 }
151 127
152 if (scroller_) { 128 if (scroller_) {
153 scroller_->set_fixed_size(gfx::Size()); 129 scroller_->set_fixed_size(gfx::Size());
154 gfx::Size size = GetPreferredSize(); 130 gfx::Size size = GetPreferredSize();
155 131
156 // Set the scroller to fill the space above the bottom row, so that the 132 // Set the scroller to fill the space above the bottom row, so that the
157 // bottom row of the detailed view will always stay just above the title 133 // bottom row of the detailed view will always stay just above the footer.
158 // row.
159 gfx::Size scroller_size = scroll_content_->GetPreferredSize(); 134 gfx::Size scroller_size = scroll_content_->GetPreferredSize();
160 scroller_->set_fixed_size( 135 scroller_->set_fixed_size(
161 gfx::Size(width() + scroller_->GetScrollBarWidth(), 136 gfx::Size(width() + scroller_->GetScrollBarWidth(),
162 scroller_size.height() - (size.height() - height()))); 137 scroller_size.height() - (size.height() - height())));
163 } 138 }
164 139
165 views::View::Layout(); 140 views::View::Layout();
166 141
167 if (title_row_ && !MaterialDesignController::IsSystemTrayMenuMaterial()) { 142 if (footer_) {
168 // Always make sure the title row is bottom-aligned in non-MD. 143 // Always make sure the footer element is bottom aligned.
169 gfx::Rect fbounds = title_row_->bounds(); 144 gfx::Rect fbounds = footer_->bounds();
170 fbounds.set_y(height() - title_row_->height()); 145 fbounds.set_y(height() - footer_->height());
171 title_row_->SetBoundsRect(fbounds); 146 footer_->SetBoundsRect(fbounds);
172 } 147 }
173 } 148 }
174 149
175 void TrayDetailsView::OnPaintBorder(gfx::Canvas* canvas) { 150 void TrayDetailsView::OnPaintBorder(gfx::Canvas* canvas) {
176 if (scroll_border_) { 151 if (scroll_border_) {
177 int index = GetIndexOf(scroller_); 152 int index = GetIndexOf(scroller_);
178 if (index < child_count() - 1 && child_at(index + 1) != title_row_) 153 if (index < child_count() - 1 && child_at(index + 1) != footer_)
179 scroll_border_->set_visible(true); 154 scroll_border_->set_visible(true);
180 else 155 else
181 scroll_border_->set_visible(false); 156 scroll_border_->set_visible(false);
182 } 157 }
183 158
184 views::View::OnPaintBorder(canvas); 159 views::View::OnPaintBorder(canvas);
185 } 160 }
186 161
187 } // namespace ash 162 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/system/tray/tray_details_view.h ('k') | ash/common/system/tray/tray_details_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698