Ticket #190: diff.txt

File diff.txt, 11.5 KB (added by jalopeura, 11 years ago)

Patch

Line 
1Index: ../../../src/kits/media/DefaultMediaTheme.cpp
2===================================================================
3--- ../../../src/kits/media/DefaultMediaTheme.cpp (revision 29867)
4+++ ../../../src/kits/media/DefaultMediaTheme.cpp (working copy)
5@@ -22,6 +22,9 @@
6 #include <MenuField.h>
7 #include <MessageFilter.h>
8 #include <Window.h>
9+#include <GroupView.h>
10+#include <LayoutUtils.h>
11+#include <SpaceLayoutItem.h>
12
13
14 using namespace BPrivate;
15@@ -51,24 +54,10 @@
16 bool fIsDocumentScroller;
17 };
18
19-class GroupView : public BView {
20+class GroupView : public BGroupView {
21 public:
22- GroupView(BRect frame, const char *name);
23+ GroupView(const char *name, enum orientation orientation, float spacing);
24 virtual ~GroupView();
25-
26- virtual void AttachedToWindow();
27- virtual void AllAttached();
28- virtual void GetPreferredSize(float *_width, float *_height);
29-
30- virtual BSize MinSize();
31- virtual BSize MaxSize();
32- virtual BSize PreferredSize();
33-
34- void SetContentBounds(BRect bounds);
35- BRect ContentBounds() const { return fContentBounds; }
36-
37- private:
38- BRect fContentBounds;
39 };
40
41 class TabView : public BTabView {
42@@ -87,6 +76,8 @@
43 virtual ~SeparatorView();
44
45 virtual void Draw(BRect updateRect);
46+ virtual void GetPreferredSize(float *width, float *height);
47+ virtual BSize MaxSize();
48
49 private:
50 bool fVertical;
51@@ -94,11 +85,12 @@
52
53 class TitleView : public BView {
54 public:
55- TitleView(BRect frame, const char *title);
56+ TitleView(const char *title);
57 virtual ~TitleView();
58
59 virtual void Draw(BRect updateRect);
60 virtual void GetPreferredSize(float *width, float *height);
61+ virtual BSize MaxSize();
62
63 private:
64 const char *fTitle;
65@@ -350,10 +342,10 @@
66
67 // #pragma mark -
68
69-
70-GroupView::GroupView(BRect frame, const char *name)
71- : BView(frame, name, B_FOLLOW_NONE, B_WILL_DRAW)
72+GroupView::GroupView(const char *name, enum orientation orientation, float spacing)
73+ : BGroupView(orientation, spacing)
74 {
75+ SetName(name);
76 SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
77 }
78
79@@ -363,66 +355,6 @@
80 }
81
82
83-void
84-GroupView::AttachedToWindow()
85-{
86- for (int32 i = CountChildren(); i-- > 0;) {
87- BControl *control = dynamic_cast<BControl *>(ChildAt(i));
88- if (control == NULL)
89- continue;
90-
91- control->SetTarget(control);
92- }
93-}
94-
95-
96-void
97-GroupView::AllAttached()
98-{
99-}
100-
101-
102-void
103-GroupView::GetPreferredSize(float *_width, float *_height)
104-{
105- if (_width)
106- *_width = fContentBounds.Width();
107-
108- if (_height)
109- *_height = fContentBounds.Height();
110-}
111-
112-
113-BSize
114-GroupView::MinSize()
115-{
116- return BSize(100, 100);
117-}
118-
119-
120-BSize
121-GroupView::PreferredSize()
122-{
123- return MinSize();
124-}
125-
126-
127-BSize
128-GroupView::MaxSize()
129-{
130- BSize max;
131- GetPreferredSize(&max.width, &max.height);
132- return max;
133-}
134-
135-
136-void
137-GroupView::SetContentBounds(BRect bounds)
138-{
139- fContentBounds = bounds;
140-}
141-
142-
143 // #pragma mark -
144
145
146@@ -501,11 +433,33 @@
147 }
148
149
150+void
151+SeparatorView::GetPreferredSize(float *_width, float *_height)
152+{
153+ if (_width)
154+ *_width = 0;
155+
156+ if (_height)
157+ *_height = fVertical;
158+}
159+
160+
161+BSize
162+SeparatorView::MaxSize()
163+{
164+ float width, height;
165+ GetPreferredSize(&width, &height);
166+
167+ return BLayoutUtils::ComposeSize(BSize(width, height),
168+ BSize(width, height));
169+}
170+
171+
172 // #pragma mark -
173
174
175-TitleView::TitleView(BRect frame, const char *title)
176- : BView(frame, title, B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW)
177+TitleView::TitleView(const char *title)
178+ : BView(title, B_WILL_DRAW)
179 {
180 fTitle = strdup(title);
181 SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
182@@ -550,6 +504,17 @@
183 }
184
185
186+BSize
187+TitleView::MaxSize()
188+{
189+ float height;
190+ GetPreferredSize(NULL, &height);
191+
192+ return BLayoutUtils::ComposeSize(BSize(B_SIZE_UNLIMITED, height),
193+ BSize(B_SIZE_UNLIMITED, height));
194+}
195+
196+
197 // #pragma mark -
198
199
200@@ -774,7 +739,7 @@
201 if (groupView == NULL)
202 continue;
203
204- if (GroupView *view = dynamic_cast<GroupView *>(groupView)) {
205+ if (BGroupView *view = dynamic_cast<BGroupView *>(groupView)) {
206 // the top-level group views must not be larger than their hintRect,
207 // but unlike their children, they should follow all sides when
208 // their parent is resized
209@@ -826,25 +791,20 @@
210 if (group.Flags() & B_HIDDEN_PARAMETER)
211 return NULL;
212
213- BRect rect;
214- if (hintRect != NULL)
215- rect = *hintRect;
216+ BGroupView *view = new GroupView(group.Name(), B_VERTICAL, 5);
217+
218+ BGroupLayout* viewLayout = view->GroupLayout();
219+ viewLayout->SetInsets(5,5,5,5);
220
221- GroupView *view = new GroupView(rect, group.Name());
222-
223 // Create the parameter views - but don't add them yet
224
225- rect.OffsetTo(B_ORIGIN);
226- rect.InsetBySelf(5, 5);
227-
228 BList views;
229 for (int32 i = 0; i < group.CountParameters(); i++) {
230 BParameter *parameter = group.ParameterAt(i);
231 if (parameter == NULL)
232 continue;
233
234- BView *parameterView = MakeSelfHostingViewFor(*parameter,
235- hintRect ? &rect : NULL);
236+ BView *parameterView = MakeSelfHostingViewFor(*parameter);
237 if (parameterView == NULL)
238 continue;
239
240@@ -859,22 +819,17 @@
241
242 TitleView *titleView = dynamic_cast<TitleView *>((BView *)views.ItemAt(0));
243 if (titleView != NULL) {
244- view->AddChild(titleView);
245- rect.OffsetBy(0, titleView->Bounds().Height());
246+ viewLayout->AddView(titleView);
247 }
248
249 // Add the sub-group views
250
251- rect.right = rect.left + 20;
252- rect.bottom = rect.top + 20;
253- float lastHeight = 0;
254-
255 for (int32 i = 0; i < group.CountGroups(); i++) {
256 BParameterGroup *subGroup = group.GroupAt(i);
257 if (subGroup == NULL)
258 continue;
259
260- BView *groupView = MakeViewFor(*subGroup, &rect);
261+ BView *groupView = MakeViewFor(*subGroup);
262 if (groupView == NULL)
263 continue;
264
265@@ -883,42 +838,23 @@
266 BRect separatorRect(groupView->Frame());
267 separatorRect.left -= 3;
268 separatorRect.right = separatorRect.left + 1;
269- if (lastHeight > separatorRect.Height())
270- separatorRect.bottom = separatorRect.top + lastHeight;
271
272- view->AddChild(new SeparatorView(separatorRect));
273+ viewLayout->AddView(new SeparatorView(separatorRect));
274 }
275
276- view->AddChild(groupView);
277-
278- rect.OffsetBy(groupView->Bounds().Width() + 5, 0);
279-
280- lastHeight = groupView->Bounds().Height();
281- if (lastHeight > rect.Height())
282- rect.bottom = rect.top + lastHeight - 1;
283+ viewLayout->AddView(groupView);
284 }
285
286- view->ResizeTo(rect.left + 10, rect.bottom + 5);
287- view->SetContentBounds(view->Bounds());
288-
289 if (group.CountParameters() == 0)
290 return view;
291
292 // add the parameter views part of the group
293
294- if (group.CountGroups() > 0) {
295- rect.top = rect.bottom + 10;
296- rect.bottom = rect.top + 20;
297- }
298-
299 bool center = false;
300
301 for (int32 i = 0; i < views.CountItems(); i++) {
302 BView *parameterView = static_cast<BView *>(views.ItemAt(i));
303
304- if (parameterView->Bounds().Width() + 5 > rect.Width())
305- rect.right = parameterView->Bounds().Width() + rect.left + 5;
306-
307 // we don't need to add the title view again
308 if (parameterView == titleView)
309 continue;
310@@ -928,33 +864,10 @@
311 if (dynamic_cast<BChannelSlider *>(parameterView) != NULL)
312 center = true;
313
314- parameterView->MoveTo(parameterView->Frame().left, rect.top);
315- view->AddChild(parameterView);
316-
317- rect.OffsetBy(0, parameterView->Bounds().Height() + 5);
318+ viewLayout->AddView(parameterView);
319 }
320
321- if (views.CountItems() > (titleView != NULL ? 1 : 0))
322- view->ResizeTo(rect.right + 5, rect.top + 5);
323-
324- // center the parameter views if needed, and tweak some views
325-
326- float width = view->Bounds().Width();
327-
328- for (int32 i = 0; i < views.CountItems(); i++) {
329- BView *subView = static_cast<BView *>(views.ItemAt(i));
330- BRect frame = subView->Frame();
331-
332- if (center)
333- subView->MoveTo((width - frame.Width()) / 2, frame.top);
334- else {
335- // tweak the PopUp views to look better
336- if (dynamic_cast<BOptionPopUp *>(subView) != NULL)
337- subView->ResizeTo(width, frame.Height());
338- }
339- }
340-
341- view->SetContentBounds(view->Bounds());
342+ viewLayout->AddItem(BSpaceLayoutItem::CreateGlue());
343 return view;
344 }
345
346@@ -970,7 +883,7 @@
347 || parameter_should_be_hidden(parameter))
348 return NULL;
349
350- BView *view = MakeViewFor(&parameter, hintRect);
351+ BView *view = MakeViewFor(&parameter);
352 if (view == NULL) {
353 // The MakeViewFor() method above returns a BControl - which we
354 // don't need for a null parameter; that's why it returns NULL.
355@@ -981,15 +894,13 @@
356 // this is the first parameter in this group, so
357 // let's use a nice title view
358
359- TitleView *titleView = new TitleView(BRect(0, 0, 10, 10), parameter.Name());
360- titleView->ResizeToPreferred();
361+ TitleView *titleView = new TitleView(parameter.Name());
362
363 return titleView;
364 }
365- BStringView *stringView = new BStringView(BRect(0, 0, 10, 10),
366- parameter.Name(), parameter.Name());
367+ BStringView *stringView = new BStringView(parameter.Name(),
368+ parameter.Name());
369 stringView->SetAlignment(B_ALIGN_CENTER);
370- stringView->ResizeToPreferred();
371
372 return stringView;
373 }
374@@ -1009,10 +920,7 @@
375 DefaultMediaTheme::MakeViewFor(BParameter *parameter, const BRect *hintRect)
376 {
377 BRect rect;
378- if (hintRect)
379- rect = *hintRect;
380- else
381- rect.Set(0, 0, 50, 100);
382+ rect.Set(0, 0, 50, 100);
383
384 switch (parameter->Type()) {
385 case BParameter::B_NULL_PARAMETER:
386@@ -1028,9 +936,8 @@
387 || discrete.CountItems() == 0) {
388 // create a checkbox item
389
390- BCheckBox *checkBox = new BCheckBox(rect, discrete.Name(),
391+ BCheckBox *checkBox = new BCheckBox(discrete.Name(),
392 discrete.Name(), NULL);
393- checkBox->ResizeToPreferred();
394
395 return checkBox;
396 } else {
397@@ -1051,14 +958,13 @@
398 rect.right = rect.left + width;
399
400 BOptionPopUp *popUp = new BOptionPopUp(rect, discrete.Name(),
401+ //BOptionPopUp *popUp = new BOptionPopUp(discrete.Name(),
402 discrete.Name(), NULL);
403
404 for (int32 i = 0; i < discrete.CountItems(); i++) {
405 popUp->AddOption(discrete.ItemNameAt(i), discrete.ItemValueAt(i));
406 }
407
408- popUp->ResizeToPreferred();
409-
410 return popUp;
411 }
412 }
413@@ -1069,7 +975,8 @@
414
415 if (!strcmp(continuous.Kind(), B_MASTER_GAIN)
416 || !strcmp(continuous.Kind(), B_GAIN)) {
417- BChannelSlider *slider = new BChannelSlider(rect, continuous.Name(),
418+ //BChannelSlider *slider = new BChannelSlider(rect, continuous.Name(),
419+ BChannelSlider *slider = new BChannelSlider(continuous.Name(),
420 continuous.Name(), NULL, B_VERTICAL, continuous.CountChannels());
421
422 char minLabel[64], maxLabel[64];
423@@ -1085,10 +992,6 @@
424 }
425 slider->SetLimitLabels(minLabel, maxLabel);
426
427- float width, height;
428- slider->GetPreferredSize(&width, &height);
429- slider->ResizeTo(width, 190);
430-
431 // ToDo: take BContinuousParameter::GetResponse() & ValueStep() into account!
432
433 for (int32 i = 0; i < continuous.CountChannels(); i++) {
434@@ -1100,12 +1003,9 @@
435 }
436
437 BSlider *slider = new BSlider(rect, parameter->Name(), parameter->Name(),
438+ //BSlider *slider = new BSlider(parameter->Name(), parameter->Name(),
439 NULL, 0, 100);
440
441- float width, height;
442- slider->GetPreferredSize(&width, &height);
443- slider->ResizeTo(100, height);
444-
445 return slider;
446 }
447
448Index: ../../../headers/private/media/DefaultMediaTheme.h
449===================================================================
450--- ../../../headers/private/media/DefaultMediaTheme.h (revision 29867)
451+++ ../../../headers/private/media/DefaultMediaTheme.h (working copy)
452@@ -27,8 +27,8 @@
453 virtual BView* MakeViewFor(BParameterWeb* web, const BRect* hintRect = NULL);
454
455 private:
456- BView* MakeViewFor(BParameterGroup& group, const BRect* hintRect);
457- BView* MakeSelfHostingViewFor(BParameter& parameter, const BRect* hintRect);
458+ BView* MakeViewFor(BParameterGroup& group, const BRect* hintRect = NULL);
459+ BView* MakeSelfHostingViewFor(BParameter& parameter, const BRect* hintRect = NULL);
460 };
461
462 } // namespace BPrivate