Patch by Bryce Groff: Allow the disk system add-ons to return a NULL parameter

editor, when they don't have any additional parameters to edit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32096 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-08-03 19:05:38 +00:00
parent 4199b36807
commit fe05e6c359
+52 -25
View File
@@ -125,9 +125,11 @@ CreateParamsPanel::MessageReceived(BMessage* message)
break; break;
case MSG_PARTITION_TYPE: case MSG_PARTITION_TYPE:
const char* type; if (fEditor != NULL) {
message->FindString("type", &type); const char* type;
fEditor->PartitionTypeChanged(type); message->FindString("type", &type);
fEditor->PartitionTypeChanged(type);
}
break; break;
default: default:
@@ -185,10 +187,12 @@ CreateParamsPanel::Go(off_t& offset, off_t& size, BString& name,
} }
// get editors parameters // get editors parameters
if (fEditor->FinishedEditing()) { if (fEditor != NULL) {
status_t status = fEditor->GetParameters(&parameters); if (fEditor->FinishedEditing()) {
if (status != B_OK) status_t status = fEditor->GetParameters(&parameters);
fReturnValue = status; if (status != B_OK)
fReturnValue = status;
}
} }
} }
@@ -249,32 +253,55 @@ CreateParamsPanel::_CreateViewControls(BPartition* parent, off_t offset,
.Add(fTypeMenuField) .Add(fTypeMenuField)
; ;
BBox* infoBox = new BBox(B_FANCY_BORDER, infoView); BBox* infoBox = new BBox(B_FANCY_BORDER, infoView);
BView* rootView;
parent->GetChildCreationParameterEditor(NULL, &fEditor); parent->GetChildCreationParameterEditor(NULL, &fEditor);
BBox* parameterBox = new BBox(B_FANCY_BORDER, fEditor->View()); if (fEditor != NULL) {
BBox* parameterBox = new BBox(B_FANCY_BORDER, fEditor->View());
BView* rootView = BGroupLayoutBuilder(B_VERTICAL, 4) rootView = BGroupLayoutBuilder(B_VERTICAL, 4)
.Add(BSpaceLayoutItem::CreateVerticalStrut(5)) .Add(BSpaceLayoutItem::CreateVerticalStrut(5))
// slider and types // slider and types
.Add(infoBox) .Add(infoBox)
.Add(BSpaceLayoutItem::CreateVerticalStrut(10)) .Add(BSpaceLayoutItem::CreateVerticalStrut(10))
// editor's view // editor's view
.Add(parameterBox) .Add(parameterBox)
// controls // controls
.AddGroup(B_HORIZONTAL, 10) .AddGroup(B_HORIZONTAL, 10)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(5)) .Add(BSpaceLayoutItem::CreateHorizontalStrut(5))
.AddGlue() .AddGlue()
.Add(fCancelButton) .Add(fCancelButton)
.Add(fOKButton) .Add(fOKButton)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(5)) .Add(BSpaceLayoutItem::CreateHorizontalStrut(5))
.End() .End()
.Add(BSpaceLayoutItem::CreateVerticalStrut(5)) .Add(BSpaceLayoutItem::CreateVerticalStrut(5))
; ;
} else {
rootView = BGroupLayoutBuilder(B_VERTICAL, 4)
.Add(BSpaceLayoutItem::CreateVerticalStrut(5))
// slider and types
.Add(infoBox)
.Add(BSpaceLayoutItem::CreateVerticalStrut(10))
// controls
.AddGroup(B_HORIZONTAL, 10)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(5))
.AddGlue()
.Add(fCancelButton)
.Add(fOKButton)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(5))
.End()
.Add(BSpaceLayoutItem::CreateVerticalStrut(5))
;
}
SetLayout(new BGroupLayout(B_HORIZONTAL)); SetLayout(new BGroupLayout(B_HORIZONTAL));
AddChild(rootView); AddChild(rootView);