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

Side by Side Diff: chrome/views/decision.cc

Issue 7344: Convert GetPreferredSize from:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 2 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <string> 5 #include <string>
6 6
7 #include "chrome/views/decision.h" 7 #include "chrome/views/decision.h"
8 8
9 #include "chrome/common/resource_bundle.h" 9 #include "chrome/common/resource_bundle.h"
10 #include "chrome/views/label.h" 10 #include "chrome/views/label.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 void Decision::Layout() { 74 void Decision::Layout() {
75 CRect lb; 75 CRect lb;
76 GetLocalBounds(&lb, false); 76 GetLocalBounds(&lb, false);
77 77
78 // Resize for padding. 78 // Resize for padding.
79 lb.DeflateRect(kPaddingEdge, kPaddingEdge); 79 lb.DeflateRect(kPaddingEdge, kPaddingEdge);
80 int width = lb.Width(); 80 int width = lb.Width();
81 81
82 CPoint position(lb.TopLeft()); 82 CPoint position(lb.TopLeft());
83 CSize size; 83 gfx::Size size = title_label_->GetPreferredSize();
84 title_label_->GetPreferredSize(&size); 84 title_label_->SetBounds(position.x, position.y, width, size.height());
85 title_label_->SetBounds(position.x, position.y, width, size.cy); 85 position.y += size.height() + kSpacingInfoBottom;
86 position.y += size.cy + kSpacingInfoBottom;
87 86
88 size.cy = details_label_->GetHeightForWidth(width); 87 size.set_height(details_label_->GetHeightForWidth(width));
89 details_label_->SetBounds(position.x, position.y, width, size.cy); 88 details_label_->SetBounds(position.x, position.y, width, size.height());
90 position.y += size.cy + kSpacingInfoBottom; 89 position.y += size.height() + kSpacingInfoBottom;
91 90
92 for (std::vector<Option*>::const_iterator iter = options_.begin(); 91 for (std::vector<Option*>::const_iterator iter = options_.begin();
93 iter != options_.end(); ++iter) { 92 iter != options_.end(); ++iter) {
94 Option* option = *iter; 93 Option* option = *iter;
95 option->GetPreferredSize(&size); 94 size = option->GetPreferredSize();
96 option->SetBounds(position.x, position.y, width, size.cy); 95 option->SetBounds(position.x, position.y, width, size.height());
97 option->Layout(); 96 option->Layout();
98 position.y += size.cy + kSpacingInfoBottom; 97 position.y += size.height() + kSpacingInfoBottom;
99 } 98 }
100 } 99 }
101 100
102 void Decision::GetPreferredSize(CSize *out) { 101 gfx::Size Decision::GetPreferredSize() {
103 int width = 0; 102 int width = 0;
104 int height = 0; 103 int height = 0;
105 104
106 // We need to find the largest width from the title and the options, as the 105 // We need to find the largest width from the title and the options, as the
107 // details label is multi-line and we need to known its width in order to 106 // details label is multi-line and we need to known its width in order to
108 // compute its height. 107 // compute its height.
109 CSize size; 108 gfx::Size size = title_label_->GetPreferredSize();
110 title_label_->GetPreferredSize(&size); 109 width = size.width();
111 width = size.cx; 110 height = size.height() + kSpacingInfoBottom;
112 height = size.cy + kSpacingInfoBottom;
113 111
114 for (std::vector<Option*>::const_iterator iter = options_.begin(); 112 for (std::vector<Option*>::const_iterator iter = options_.begin();
115 iter != options_.end(); ++iter) { 113 iter != options_.end(); ++iter) {
116 (*iter)->GetPreferredSize(&size); 114 size = (*iter)->GetPreferredSize();
117 if (size.cx > width) 115 if (size.width() > width)
118 width = size.cx; 116 width = size.width();
119 height += size.cy + kSpacingInfoBottom; 117 height += size.height() + kSpacingInfoBottom;
120 } 118 }
121 119
122 // Now we can compute the details label height. 120 // Now we can compute the details label height.
123 height += details_label_->GetHeightForWidth(width) + kSpacingInfoBottom; 121 height += details_label_->GetHeightForWidth(width) + kSpacingInfoBottom;
124 122
125 out->cx = width + 2 * kPaddingEdge; 123 return gfx::Size(width + 2 * kPaddingEdge, height + 2 * kPaddingEdge);
126 out->cy = height + 2 * kPaddingEdge;
127 } 124 }
128 125
129 Option::Option(int command_id, 126 Option::Option(int command_id,
130 const std::wstring& description, 127 const std::wstring& description,
131 const std::wstring& action, 128 const std::wstring& action,
132 Controller* controller) 129 Controller* controller)
133 : command_id_(command_id), 130 : command_id_(command_id),
134 controller_(controller) { 131 controller_(controller) {
135 132
136 GridLayout* layout = new GridLayout(this); 133 GridLayout* layout = new GridLayout(this);
(...skipping 16 matching lines...) Expand all
153 button->SetListener(this); 150 button->SetListener(this);
154 layout->AddView(button); 151 layout->AddView(button);
155 } 152 }
156 153
157 void Option::ButtonPressed(ChromeViews::NativeButton* sender) { 154 void Option::ButtonPressed(ChromeViews::NativeButton* sender) {
158 controller_->ExecuteCommand(command_id_); 155 controller_->ExecuteCommand(command_id_);
159 } 156 }
160 157
161 } // namespace ChromeViews 158 } // namespace ChromeViews
162 159
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698