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

Side by Side Diff: ui/message_center/views/notification_view.cc

Issue 273223002: views: Make view::Views::GetPreferredSize() const. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More compile fix for ToT Created 6 years, 7 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 | Annotate | Revision Log
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 "ui/message_center/views/notification_view.h" 5 #include "ui/message_center/views/notification_view.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "grit/ui_resources.h" 10 #include "grit/ui_resources.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 190
191 // NotificationProgressBar ///////////////////////////////////////////////////// 191 // NotificationProgressBar /////////////////////////////////////////////////////
192 192
193 class NotificationProgressBar : public views::ProgressBar { 193 class NotificationProgressBar : public views::ProgressBar {
194 public: 194 public:
195 NotificationProgressBar(); 195 NotificationProgressBar();
196 virtual ~NotificationProgressBar(); 196 virtual ~NotificationProgressBar();
197 197
198 private: 198 private:
199 // Overriden from View 199 // Overriden from View
200 virtual gfx::Size GetPreferredSize() OVERRIDE; 200 virtual gfx::Size GetPreferredSize() const OVERRIDE;
201 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 201 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
202 202
203 DISALLOW_COPY_AND_ASSIGN(NotificationProgressBar); 203 DISALLOW_COPY_AND_ASSIGN(NotificationProgressBar);
204 }; 204 };
205 205
206 NotificationProgressBar::NotificationProgressBar() { 206 NotificationProgressBar::NotificationProgressBar() {
207 } 207 }
208 208
209 NotificationProgressBar::~NotificationProgressBar() { 209 NotificationProgressBar::~NotificationProgressBar() {
210 } 210 }
211 211
212 gfx::Size NotificationProgressBar::GetPreferredSize() { 212 gfx::Size NotificationProgressBar::GetPreferredSize() const {
213 gfx::Size pref_size(kProgressBarWidth, message_center::kProgressBarThickness); 213 gfx::Size pref_size(kProgressBarWidth, message_center::kProgressBarThickness);
214 gfx::Insets insets = GetInsets(); 214 gfx::Insets insets = GetInsets();
215 pref_size.Enlarge(insets.width(), insets.height()); 215 pref_size.Enlarge(insets.width(), insets.height());
216 return pref_size; 216 return pref_size;
217 } 217 }
218 218
219 void NotificationProgressBar::OnPaint(gfx::Canvas* canvas) { 219 void NotificationProgressBar::OnPaint(gfx::Canvas* canvas) {
220 gfx::Rect content_bounds = GetContentsBounds(); 220 gfx::Rect content_bounds = GetContentsBounds();
221 221
222 // Draw background. 222 // Draw background.
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 // image to overlap the content as needed to provide large enough click and 355 // image to overlap the content as needed to provide large enough click and
356 // touch areas (<http://crbug.com/168822> and <http://crbug.com/168856>). 356 // touch areas (<http://crbug.com/168822> and <http://crbug.com/168856>).
357 AddChildView(small_image()); 357 AddChildView(small_image());
358 AddChildView(close_button()); 358 AddChildView(close_button());
359 SetAccessibleName(notification); 359 SetAccessibleName(notification);
360 } 360 }
361 361
362 NotificationView::~NotificationView() { 362 NotificationView::~NotificationView() {
363 } 363 }
364 364
365 gfx::Size NotificationView::GetPreferredSize() { 365 gfx::Size NotificationView::GetPreferredSize() const {
366 int top_width = top_view_->GetPreferredSize().width() + 366 int top_width = top_view_->GetPreferredSize().width() +
367 icon_view_->GetPreferredSize().width(); 367 icon_view_->GetPreferredSize().width();
368 int bottom_width = bottom_view_->GetPreferredSize().width(); 368 int bottom_width = bottom_view_->GetPreferredSize().width();
369 int preferred_width = std::max(top_width, bottom_width) + GetInsets().width(); 369 int preferred_width = std::max(top_width, bottom_width) + GetInsets().width();
370 return gfx::Size(preferred_width, GetHeightForWidth(preferred_width)); 370 return gfx::Size(preferred_width, GetHeightForWidth(preferred_width));
371 } 371 }
372 372
373 int NotificationView::GetHeightForWidth(int width) { 373 int NotificationView::GetHeightForWidth(int width) const {
374 // Get the height assuming no line limit changes. 374 // Get the height assuming no line limit changes.
375 int content_width = width - GetInsets().width(); 375 int content_width = width - GetInsets().width();
376 int top_height = top_view_->GetHeightForWidth(content_width); 376 int top_height = top_view_->GetHeightForWidth(content_width);
377 int bottom_height = bottom_view_->GetHeightForWidth(content_width); 377 int bottom_height = bottom_view_->GetHeightForWidth(content_width);
378 378
379 // <http://crbug.com/230448> Fix: Adjust the height when the message_view's 379 // <http://crbug.com/230448> Fix: Adjust the height when the message_view's
380 // line limit would be different for the specified width than it currently is. 380 // line limit would be different for the specified width than it currently is.
381 // TODO(dharcourt): Avoid BoxLayout and directly compute the correct height. 381 // TODO(dharcourt): Avoid BoxLayout and directly compute the correct height.
382 if (message_view_) { 382 if (message_view_) {
383 int title_lines = 0; 383 int title_lines = 0;
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 bottom_view_->AddChildView(separator); 721 bottom_view_->AddChildView(separator);
722 NotificationButton* button = new NotificationButton(this); 722 NotificationButton* button = new NotificationButton(this);
723 ButtonInfo button_info = buttons[i]; 723 ButtonInfo button_info = buttons[i];
724 button->SetTitle(button_info.title); 724 button->SetTitle(button_info.title);
725 button->SetIcon(button_info.icon.AsImageSkia()); 725 button->SetIcon(button_info.icon.AsImageSkia());
726 action_buttons_.push_back(button); 726 action_buttons_.push_back(button);
727 bottom_view_->AddChildView(button); 727 bottom_view_->AddChildView(button);
728 } 728 }
729 } 729 }
730 730
731 int NotificationView::GetMessageLineLimit(int title_lines, int width) { 731 int NotificationView::GetMessageLineLimit(int title_lines, int width) const {
732 // Image notifications require that the image must be kept flush against 732 // Image notifications require that the image must be kept flush against
733 // their icons, but we can allow more text if no image. 733 // their icons, but we can allow more text if no image.
734 int effective_title_lines = std::max(0, title_lines - 1); 734 int effective_title_lines = std::max(0, title_lines - 1);
735 int line_reduction_from_title = (image_view_ ? 1 : 2) * effective_title_lines; 735 int line_reduction_from_title = (image_view_ ? 1 : 2) * effective_title_lines;
736 if (!image_view_) { 736 if (!image_view_) {
737 // Title lines are counted as twice as big as message lines for the purpose 737 // Title lines are counted as twice as big as message lines for the purpose
738 // of this calculation. 738 // of this calculation.
739 // The effect from the title reduction here should be: 739 // The effect from the title reduction here should be:
740 // * 0 title lines: 5 max lines message. 740 // * 0 title lines: 5 max lines message.
741 // * 1 title line: 5 max lines message. 741 // * 1 title line: 5 max lines message.
(...skipping 15 matching lines...) Expand all
757 // The effect from the title reduction here should be: 757 // The effect from the title reduction here should be:
758 // * 0 title lines: 2 max lines message + context message. 758 // * 0 title lines: 2 max lines message + context message.
759 // * 1 title line: 2 max lines message + context message. 759 // * 1 title line: 2 max lines message + context message.
760 // * 2 title lines: 1 max lines message + context message. 760 // * 2 title lines: 1 max lines message + context message.
761 message_line_limit = 761 message_line_limit =
762 std::max(0, message_line_limit - line_reduction_from_title); 762 std::max(0, message_line_limit - line_reduction_from_title);
763 763
764 return message_line_limit; 764 return message_line_limit;
765 } 765 }
766 766
767 int NotificationView::GetMessageHeight(int width, int limit) { 767 int NotificationView::GetMessageHeight(int width, int limit) const {
768 return message_view_ ? 768 return message_view_ ?
769 message_view_->GetSizeForWidthAndLines(width, limit).height() : 0; 769 message_view_->GetSizeForWidthAndLines(width, limit).height() : 0;
770 } 770 }
771 771
772 } // namespace message_center 772 } // namespace message_center
OLDNEW
« no previous file with comments | « ui/message_center/views/notification_view.h ('k') | ui/message_center/views/notifier_settings_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698