[Haiku-commits] r31038 - haiku/trunk/src/preferences/media
anevilyak at BerliOS
anevilyak at mail.berlios.de
Sun Jun 14 02:37:09 CEST 2009
Author: anevilyak
Date: 2009-06-14 02:37:07 +0200 (Sun, 14 Jun 2009)
New Revision: 31038
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=31038&view=rev
Modified:
haiku/trunk/src/preferences/media/MediaViews.cpp
haiku/trunk/src/preferences/media/MediaViews.h
haiku/trunk/src/preferences/media/MediaWindow.cpp
Log:
The Media preflet was using a mix of old and layout style primitives to set itself up. As a consequence resizing basically didn't work correctly at all. Fixes ticket #3427.
Modified: haiku/trunk/src/preferences/media/MediaViews.cpp
===================================================================
--- haiku/trunk/src/preferences/media/MediaViews.cpp 2009-06-13 22:07:31 UTC (rev 31037)
+++ haiku/trunk/src/preferences/media/MediaViews.cpp 2009-06-14 00:37:07 UTC (rev 31038)
@@ -31,8 +31,8 @@
#include "MediaViews.h"
-BarView::BarView(BRect frame)
- : BView (frame, "barView", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW ),
+BarView::BarView()
+ : BView ("barView", B_WILL_DRAW ),
fDisplay(true)
{
}
@@ -56,24 +56,18 @@
}
-SettingsView::SettingsView (BRect frame, bool isVideo)
- : BView (frame, "SettingsView", B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW ),
+SettingsView::SettingsView (bool isVideo)
+ : BView ("SettingsView", B_WILL_DRAW | B_SUPPORTS_LAYOUT),
fIsVideo(isVideo)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- BRect rect(frame);
- rect.left += 10;
- rect.top += 12;
- rect.right -=21;
- rect.bottom = rect.top + 104;
- BBox *defaultsBox = new BBox(rect, "defaults");
+ BBox *defaultsBox = new BBox("defaults");
defaultsBox->SetLabel(fIsVideo ? "Default Nodes" : "Defaults");
// create the default box
BGroupLayout* defaultBoxLayout = new BGroupLayout(B_VERTICAL, 5);
- float inset = defaultsBox->Frame().left - defaultsBox->InnerFrame().left;
- defaultBoxLayout->SetInsets(inset, defaultsBox->TopBorderOffset() * 2, inset, inset);
+ defaultBoxLayout->SetInsets(10,10,10,10);
defaultsBox->SetLayout(defaultBoxLayout);
defaultBoxLayout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(5));
@@ -82,19 +76,17 @@
defaultsBox->GetLayout()->AddView(inputField);
defaultsBox->GetLayout()->AddView(outputField);
- BRect defaultRect(20, 22, 250, 40);
float divider = StringWidth(fIsVideo ? "Video Output:" : "Audio Output:") + 5;
fMenu1 = new BPopUpMenu("<none>");
fMenu1->SetLabelFromMarked(true);
- BMenuField *menuField1 = new BMenuField(defaultRect, "menuField1",
- fIsVideo ? "Video Input:" : "Audio Input:", fMenu1);
+ BMenuField *menuField1 = new BMenuField("menuField1",
+ fIsVideo ? "Video Input:" : "Audio Input:", fMenu1, NULL);
menuField1->SetDivider(divider);
- defaultRect.OffsetBy(0, 26);
fMenu2 = new BPopUpMenu("<none>");
fMenu2->SetLabelFromMarked(true);
- BMenuField *menuField2 = new BMenuField(defaultRect, "menuField2",
- fIsVideo ? "Video Output:" : "Audio Output:", fMenu2);
+ BMenuField *menuField2 = new BMenuField("menuField2",
+ fIsVideo ? "Video Output:" : "Audio Output:", fMenu2, NULL);
menuField2->SetDivider(divider);
inputField->GroupLayout()->AddView(menuField1);
@@ -102,48 +94,37 @@
BMenuField *menuField3 = NULL;
if (!fIsVideo) {
- defaultRect.OffsetBy(186, 0);
- defaultRect.right -= 30;
fMenu3 = new BPopUpMenu("<none>");
fMenu3->SetLabelFromMarked(true);
- menuField3 = new BMenuField(defaultRect, "menuField3",
- "Channel:", fMenu3);
+ menuField3 = new BMenuField("menuField3",
+ "Channel:", fMenu3, NULL);
outputField->GroupLayout()->AddView(menuField3);
menuField3->SetDivider(StringWidth("Channel:")+5);
- defaultRect.right += 30;
- defaultRect.OffsetBy(-186, 0);
}
- defaultRect.OffsetBy(0, 32);
- defaultRect.right += 100;
rgb_color red_color = {222, 32, 33};
- fRestartView = new BStringView(defaultRect, "restartStringView", "Restart the Media Server to apply changes.",
- B_FOLLOW_ALL, B_WILL_DRAW);
+ fRestartView = new BStringView("restartStringView",
+ "Restart the Media Server to apply changes.");
fRestartView->SetHighColor(red_color);
defaultsBox->AddChild(fRestartView);
fRestartView->Hide();
// create the realtime box
- rect.top = rect.bottom + 10;
- rect.bottom = rect.top + 162;
- BBox *realtimeBox = new BBox(rect, "realtime");
+ BBox *realtimeBox = new BBox("realtime");
realtimeBox->SetLabel("Real-Time");
BMessage *message = new BMessage(ML_ENABLE_REAL_TIME);
message->AddBool("isVideo", fIsVideo);
- BRect rect2(22,20, frame.Width() - 22, 40);
- fRealtimeCheckBox = new BCheckBox(rect2, "realtimeCheckBox",
- fIsVideo ? "Enable Real-Time Video" : "Enable Real-Time Audio", message);
+ fRealtimeCheckBox = new BCheckBox("realtimeCheckBox",
+ fIsVideo ? "Enable Real-Time Video" : "Enable Real-Time Audio",
+ message);
uint32 flags;
BMediaRoster::Roster()->GetRealtimeFlags(&flags);
if (flags & (fIsVideo ? B_MEDIA_REALTIME_VIDEO : B_MEDIA_REALTIME_AUDIO))
fRealtimeCheckBox->SetValue(B_CONTROL_ON);
- rect2.top += 26;
- rect2.bottom = rect.Height() - 5;
- BRect textRect(3, 3, rect2.Width() - 3, rect2.Height() - 3);
- BTextView *textView = new BTextView(rect2, "stringView", textRect, B_FOLLOW_ALL, B_WILL_DRAW);
+ BTextView *textView = new BTextView("stringView");
textView->Insert(fIsVideo ? "Enabling Real-Time Video allows system to perform video operations as fast and smoothly as possible. It achieves optimum performance by using more RAM."
"\n\nOnly enable this feature if you need the lowest latency possible."
: "Enabling Real-time Audio allows system to record and play audio as fast as possible. It achieves this performance by using more CPU and RAM."
@@ -153,8 +134,7 @@
textView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
BGroupLayout* realtimeBoxLayout = new BGroupLayout(B_VERTICAL, 5);
- inset = realtimeBox->Frame().left - realtimeBox->InnerFrame().left;
- realtimeBoxLayout->SetInsets(inset, defaultsBox->TopBorderOffset() * 2, inset, inset);
+ realtimeBoxLayout->SetInsets(10,10,10,10);
realtimeBox->SetLayout(realtimeBoxLayout);
realtimeBoxLayout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(5));
@@ -163,19 +143,11 @@
// create the bottom line: volumen in deskbar checkbox and restart button
BGroupView* bottomView = new BGroupView(B_HORIZONTAL);
- rect.top = rect.bottom + 11;
- rect.bottom = rect.top + 20;
- rect.left = rect.right - StringWidth("Restart Media Services") - 20;
- BButton *restartButton = new BButton(rect, "restartButton",
+ BButton *restartButton = new BButton("restartButton",
"Restart Media Services", new BMessage(ML_RESTART_MEDIA_SERVER));
if (!fIsVideo) {
- rect.right = rect.left - 10;
- rect.top += 4;
- rect.left = frame.left + 33;
- if (StringWidth("Show Volume Control on Deskbar") > rect.Width() - 30)
- rect.left -= 10;
- fVolumeCheckBox = new BCheckBox(rect, "volumeCheckBox",
+ fVolumeCheckBox = new BCheckBox("volumeCheckBox",
"Show Volume Control on Deskbar", new BMessage(ML_SHOW_VOLUME_CONTROL));
bottomView->GroupLayout()->AddView(fVolumeCheckBox);
if (BDeskbar().HasItem("MediaReplicant"))
Modified: haiku/trunk/src/preferences/media/MediaViews.h
===================================================================
--- haiku/trunk/src/preferences/media/MediaViews.h 2009-06-13 22:07:31 UTC (rev 31037)
+++ haiku/trunk/src/preferences/media/MediaViews.h 2009-06-14 00:37:07 UTC (rev 31038)
@@ -30,7 +30,7 @@
class BarView : public BView
{
public:
- BarView(BRect frame);
+ BarView();
virtual void Draw(BRect updateRect);
bool fDisplay;
};
@@ -58,7 +58,7 @@
class SettingsView : public BView
{
public:
- SettingsView(BRect frame, bool isVideo);
+ SettingsView(bool isVideo);
void AddNodes(BList &list, bool isInput);
void SetDefault(dormant_node_info &info, bool isInput, int32 outputID = -1);
BCheckBox *fRealtimeCheckBox;
Modified: haiku/trunk/src/preferences/media/MediaWindow.cpp
===================================================================
--- haiku/trunk/src/preferences/media/MediaWindow.cpp 2009-06-13 22:07:31 UTC (rev 31037)
+++ haiku/trunk/src/preferences/media/MediaWindow.cpp 2009-06-14 00:37:07 UTC (rev 31038)
@@ -35,7 +35,7 @@
// MediaWindow - Constructor
MediaWindow::MediaWindow(BRect frame)
-: BWindow (frame, "Media", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS),
+: BWindow (frame, "Media", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
fCurrentNode(NULL),
fParamWeb(NULL),
fAlert(NULL),
@@ -172,59 +172,36 @@
fIcons.AddItem(icon);
const float scrollWidth = 9 * be_plain_font->Size() + 30;
- const float contentWidth = 34 * be_plain_font->Size();
- float totalWidthFont = scrollWidth + contentWidth + 14 * 3;
- const float totalWidth = (605.0 > totalWidthFont) ?
- 605.0 : totalWidthFont;
- BRect bounds = Bounds(); // the whole view
- // Create the OutlineView
- font_height titleHeightStruct;
- be_bold_font->GetHeight(&titleHeightStruct);
- float titleHeight = titleHeightStruct.ascent + titleHeightStruct.descent
- + titleHeightStruct.leading + 1;
-
- BRect menuRect(bounds.left + 14, bounds.top + 14, scrollWidth,
- bounds.bottom - 14);
- BRect titleRect(menuRect.right + 14, menuRect.top,
- totalWidth - 10, menuRect.top + titleHeight);
- BRect availableRect(menuRect.right + 15, titleRect.bottom + 12,
- totalWidth - 14, bounds.bottom - 16);
- BRect barRect(titleRect.left, titleRect.bottom + 10,
- titleRect.right - 2, titleRect.bottom + 11);
-
- fListView = new BListView(menuRect, "media_list_view",
- B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES);
+ fListView = new BListView("media_list_view");
fListView->SetSelectionMessage(new BMessage(ML_SELECTED_NODE));
// Add ScrollView to Media Menu
BScrollView *scrollView = new BScrollView("listscroller",
- fListView, B_FOLLOW_LEFT|B_FOLLOW_TOP_BOTTOM, 0, false, false,
- B_FANCY_BORDER);
+ fListView, 0, false, false, B_FANCY_BORDER);
scrollView->SetExplicitMinSize(BSize(scrollWidth, B_SIZE_UNSET));
scrollView->SetExplicitMaxSize(BSize(scrollWidth, B_SIZE_UNSET));
// Create the Views
- fBox = new BBox(bounds, "background", B_FOLLOW_ALL_SIDES,
- B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER);
+ fBox = new BBox("background", B_WILL_DRAW | B_FRAME_EVENTS,
+ B_PLAIN_BORDER);
SetLayout(new BGroupLayout(B_HORIZONTAL));
GetLayout()->AddView(fBox);
// StringViews
rgb_color titleFontColor = { 0,0,0,0 };
- fTitleView = new BStringView(titleRect, "AudioSettings",
- "Audio Settings", B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
+ fTitleView = new BStringView("AudioSettings",
+ "Audio Settings", B_WILL_DRAW);
fTitleView->SetFont(be_bold_font);
fTitleView->SetHighColor(titleFontColor);
- fContentView = new BBox(availableRect, "contentView",
- B_FOLLOW_ALL_SIDES, B_WILL_DRAW | B_FRAME_EVENTS, B_NO_BORDER);
+ fContentView = new BBox("contentView", B_WILL_DRAW | B_FRAME_EVENTS,
+ B_NO_BORDER);
- BRect settingsRect(0, 0, availableRect.Width(), availableRect.Height());
- fAudioView = new SettingsView(settingsRect, false);
- fVideoView = new SettingsView(settingsRect, true);
+ fAudioView = new SettingsView(false);
+ fVideoView = new SettingsView(true);
- fBar = new BarView(barRect);
+ fBar = new BarView();
BGroupView* titleGroupView = new BGroupView(B_HORIZONTAL);
titleGroupView->GroupLayout()->AddView(fTitleView);
titleGroupView->GroupLayout()->AddItem(BSpaceLayoutItem::CreateGlue());
@@ -252,11 +229,6 @@
if (IsHidden())
Show();
}
-
- // Set window limits
- ResizeTo(totalWidth + 14, bounds.Height());
- SetZoomLimits(totalWidth + 14, bounds.Height());
- SetSizeLimits(totalWidth + 14, 100000, bounds.Height(), 100000);
}
@@ -705,7 +677,7 @@
{
MediaAlert *alert = static_cast<MediaAlert*>(cookie);
PRINT(("stage : %i\n", stage));
- char *string = "Unknown stage";
+ const char *string = "Unknown stage";
switch (stage) {
case 10:
string = "Stopping Media Server" B_UTF8_ELLIPSIS;
More information about the Haiku-commits
mailing list