intel: enable the active checkbox, if it's the first primary partition
* also set the active checkbox on edit * part of #7930 Change-Id: Ia91e5f7295e7868647cf940aa1f281bd8dab1918 Reviewed-on: https://review.haiku-os.org/c/haiku/+/8323 Haiku-Format: Haiku-format Bot <[email protected]> Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
afa8cd9c31
commit
c936122410
@@ -340,7 +340,7 @@ PartitionMapHandle::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
|
||||
if (type == B_CREATE_PARAMETER_EDITOR
|
||||
|| type == B_PROPERTIES_PARAMETER_EDITOR) {
|
||||
try {
|
||||
*editor = new PrimaryPartitionEditor();
|
||||
*editor = new PrimaryPartitionEditor(type == B_CREATE_PARAMETER_EDITOR);
|
||||
} catch (std::bad_alloc&) {
|
||||
return B_NO_MEMORY;
|
||||
}
|
||||
|
||||
@@ -10,16 +10,20 @@
|
||||
#include <Catalog.h>
|
||||
#include <DiskDeviceTypes.h>
|
||||
#include <GroupView.h>
|
||||
#include <Partition.h>
|
||||
#include <PartitionParameterEditor.h>
|
||||
#include <Variant.h>
|
||||
#include <View.h>
|
||||
#include <driver_settings.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "PrimaryPartitionEditor"
|
||||
|
||||
|
||||
PrimaryPartitionEditor::PrimaryPartitionEditor()
|
||||
PrimaryPartitionEditor::PrimaryPartitionEditor(bool create)
|
||||
:
|
||||
fCreate(create)
|
||||
{
|
||||
fActiveCheckBox = new BCheckBox("active", B_TRANSLATE("Active partition"),
|
||||
NULL);
|
||||
@@ -33,6 +37,21 @@ PrimaryPartitionEditor::~PrimaryPartitionEditor()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PrimaryPartitionEditor::SetTo(BPartition* partition)
|
||||
{
|
||||
bool active = false;
|
||||
if (fCreate) {
|
||||
active = partition->CountChildren() == 0;
|
||||
} else {
|
||||
void* handle = parse_driver_settings_string(partition->Parameters());
|
||||
active = get_driver_boolean_parameter(handle, "active", false, true);
|
||||
unload_driver_settings(handle);
|
||||
}
|
||||
fActiveCheckBox->SetValue(active ? B_CONTROL_ON : B_CONTROL_OFF);
|
||||
}
|
||||
|
||||
|
||||
BView*
|
||||
PrimaryPartitionEditor::View()
|
||||
{
|
||||
|
||||
@@ -16,9 +16,11 @@
|
||||
|
||||
class PrimaryPartitionEditor : public BPartitionParameterEditor {
|
||||
public:
|
||||
PrimaryPartitionEditor();
|
||||
PrimaryPartitionEditor(bool create);
|
||||
virtual ~PrimaryPartitionEditor();
|
||||
|
||||
virtual void SetTo(BPartition* partition);
|
||||
|
||||
virtual BView* View();
|
||||
|
||||
virtual status_t ParameterChanged(const char* name,
|
||||
@@ -27,6 +29,7 @@ public:
|
||||
virtual status_t GetParameters(BString& parameters);
|
||||
|
||||
private:
|
||||
bool fCreate;
|
||||
BView* fView;
|
||||
BCheckBox* fActiveCheckBox;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user