133b9016dSAxel Dörfler /*
233b9016dSAxel Dörfler * Copyright 2013, Axel Dörfler, axeld@pinc-software.de.
333b9016dSAxel Dörfler * Copyright 2009, Bryce Groff, brycegroff@gmail.com.
433b9016dSAxel Dörfler * Distributed under the terms of the MIT License.
533b9016dSAxel Dörfler */
633b9016dSAxel Dörfler
733b9016dSAxel Dörfler
833b9016dSAxel Dörfler #include "PrimaryParameterEditor.h"
933b9016dSAxel Dörfler
1033b9016dSAxel Dörfler #include <Catalog.h>
1133b9016dSAxel Dörfler #include <DiskDeviceTypes.h>
1233b9016dSAxel Dörfler #include <GroupView.h>
13*c9361224SJérôme Duval #include <Partition.h>
1433b9016dSAxel Dörfler #include <PartitionParameterEditor.h>
1533b9016dSAxel Dörfler #include <Variant.h>
1633b9016dSAxel Dörfler #include <View.h>
17*c9361224SJérôme Duval #include <driver_settings.h>
1833b9016dSAxel Dörfler
1933b9016dSAxel Dörfler
2033b9016dSAxel Dörfler #undef B_TRANSLATION_CONTEXT
2133b9016dSAxel Dörfler #define B_TRANSLATION_CONTEXT "PrimaryPartitionEditor"
2233b9016dSAxel Dörfler
2333b9016dSAxel Dörfler
PrimaryPartitionEditor(bool create)24*c9361224SJérôme Duval PrimaryPartitionEditor::PrimaryPartitionEditor(bool create)
25*c9361224SJérôme Duval :
26*c9361224SJérôme Duval fCreate(create)
2733b9016dSAxel Dörfler {
2833b9016dSAxel Dörfler fActiveCheckBox = new BCheckBox("active", B_TRANSLATE("Active partition"),
2933b9016dSAxel Dörfler NULL);
3033b9016dSAxel Dörfler fView = new BGroupView(B_VERTICAL);
3133b9016dSAxel Dörfler fView->AddChild(fActiveCheckBox);
3233b9016dSAxel Dörfler }
3333b9016dSAxel Dörfler
3433b9016dSAxel Dörfler
~PrimaryPartitionEditor()3533b9016dSAxel Dörfler PrimaryPartitionEditor::~PrimaryPartitionEditor()
3633b9016dSAxel Dörfler {
3733b9016dSAxel Dörfler }
3833b9016dSAxel Dörfler
3933b9016dSAxel Dörfler
40*c9361224SJérôme Duval void
SetTo(BPartition * partition)41*c9361224SJérôme Duval PrimaryPartitionEditor::SetTo(BPartition* partition)
42*c9361224SJérôme Duval {
43*c9361224SJérôme Duval bool active = false;
44*c9361224SJérôme Duval if (fCreate) {
45*c9361224SJérôme Duval active = partition->CountChildren() == 0;
46*c9361224SJérôme Duval } else {
47*c9361224SJérôme Duval void* handle = parse_driver_settings_string(partition->Parameters());
48*c9361224SJérôme Duval active = get_driver_boolean_parameter(handle, "active", false, true);
49*c9361224SJérôme Duval unload_driver_settings(handle);
50*c9361224SJérôme Duval }
51*c9361224SJérôme Duval fActiveCheckBox->SetValue(active ? B_CONTROL_ON : B_CONTROL_OFF);
52*c9361224SJérôme Duval }
53*c9361224SJérôme Duval
54*c9361224SJérôme Duval
5533b9016dSAxel Dörfler BView*
View()5633b9016dSAxel Dörfler PrimaryPartitionEditor::View()
5733b9016dSAxel Dörfler {
5833b9016dSAxel Dörfler return fView;
5933b9016dSAxel Dörfler }
6033b9016dSAxel Dörfler
6133b9016dSAxel Dörfler
6233b9016dSAxel Dörfler status_t
ParameterChanged(const char * name,const BVariant & variant)6333b9016dSAxel Dörfler PrimaryPartitionEditor::ParameterChanged(const char* name,
6433b9016dSAxel Dörfler const BVariant& variant)
6533b9016dSAxel Dörfler {
669274ca84SAdrien Destugues if (strcmp(name, "type") == 0) {
6733b9016dSAxel Dörfler fActiveCheckBox->SetEnabled(strcmp(variant.ToString(),
6833b9016dSAxel Dörfler kPartitionTypeIntelExtended) != 0);
699274ca84SAdrien Destugues fActiveCheckBox->SetValue(false);
7033b9016dSAxel Dörfler }
719274ca84SAdrien Destugues
729274ca84SAdrien Destugues if (strcmp(name, "active") == 0)
739274ca84SAdrien Destugues fActiveCheckBox->SetValue(variant.ToBool());
749274ca84SAdrien Destugues
7533b9016dSAxel Dörfler return B_OK;
7633b9016dSAxel Dörfler }
7733b9016dSAxel Dörfler
7833b9016dSAxel Dörfler
7933b9016dSAxel Dörfler status_t
GetParameters(BString & parameters)8033b9016dSAxel Dörfler PrimaryPartitionEditor::GetParameters(BString& parameters)
8133b9016dSAxel Dörfler {
8233b9016dSAxel Dörfler if (fActiveCheckBox->IsEnabled()) {
8333b9016dSAxel Dörfler if (fActiveCheckBox->Value() == B_CONTROL_ON)
8433b9016dSAxel Dörfler parameters.SetTo("active true ;");
8533b9016dSAxel Dörfler else
8633b9016dSAxel Dörfler parameters.SetTo("active false ;");
8733b9016dSAxel Dörfler } else
8833b9016dSAxel Dörfler parameters.SetTo("");
8933b9016dSAxel Dörfler
9033b9016dSAxel Dörfler return B_OK;
9133b9016dSAxel Dörfler }
92