DriveSetup:

- File system is now only displayed when the partition actually has a filesystem.
- Now checks if the DiskSystem supports initializing.
- Updated the *ParamsPanels, as well as, the Disk System add-ons to use the new storage api changes (see below).

Storage Kit:
- Simplified the parameters editor system. Now all parameter editor requests go through a single function, GetParameterEditor, and pass a B_PARAMETER_EDITOR_TYPE to request a particular parameter editor.
- Moved DiskDeviceAddOnManager.h to the headers directory, as it is now required by InitParamsPanel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39115 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Bryce Groff
2010-10-24 03:39:19 +00:00
parent a8fcb885b0
commit 2f3ce2bf7e
21 changed files with 113 additions and 184 deletions
+7
View File
@@ -148,6 +148,13 @@ enum {
B_DISK_DEVICE_JOB_CAN_PAUSE = 0x08,
};
enum B_PARAMETER_EDITOR_TYPE {
B_CREATE_PARAMETER_EDITOR = 0x01,
B_INITIALIZE_PARAMETER_EDITOR = 0x04,
B_DELETE_PARAMETER_EDITOR = 0x08,
B_PROPERTIES_PARAMETER_EDITOR = 0x10
};
// string length constants, all of which include the NULL terminator
#define B_DISK_DEVICE_TYPE_LENGTH B_FILE_NAME_LENGTH
#define B_DISK_DEVICE_NAME_LENGTH B_FILE_NAME_LENGTH
+7 -8
View File
@@ -5,6 +5,7 @@
#ifndef _DISK_SYSTEM_ADD_ON_H
#define _DISK_SYSTEM_ADD_ON_H
#include <DiskDeviceDefs.h>
#include <String.h>
#include <SupportDefs.h>
@@ -31,9 +32,6 @@ public:
virtual bool CanInitialize(
const BMutablePartition* partition);
virtual status_t GetInitializationParameterEditor(
const BMutablePartition* partition,
BPartitionParameterEditor** editor);
virtual status_t ValidateInitialize(
const BMutablePartition* partition,
BString* name, const char* parameters);
@@ -41,6 +39,9 @@ public:
const char* name, const char* parameters,
BPartitionHandle** handle);
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual status_t GetTypeForContentType(const char* contentType,
BString* type);
virtual bool IsSubSystemFor(const BMutablePartition* child);
@@ -108,9 +109,7 @@ public:
virtual status_t GetContentParameterEditor(
BPartitionParameterEditor** editor);
virtual status_t GetParameterEditor(
const BMutablePartition* child,
BPartitionParameterEditor** editor);
virtual status_t ValidateSetContentParameters(
const char* parameters);
virtual status_t ValidateSetParameters(
@@ -120,8 +119,8 @@ public:
virtual status_t SetParameters(BMutablePartition* child,
const char* parameters);
virtual status_t GetChildCreationParameterEditor(
const char* type,
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual status_t ValidateCreateChild(off_t* offset,
off_t* size, const char* type,
+2 -8
View File
@@ -3,6 +3,7 @@
* Copyright 2003, Tyler Akidau, [email protected].
* Distributed under the terms of the MIT License.
*/
#ifndef _PARTITION_H
#define _PARTITION_H
@@ -129,13 +130,12 @@ public:
bool CanEditParameters() const;
status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
status_t SetParameters(const char* parameters);
bool CanEditContentParameters(
bool* whileMounted = NULL) const;
status_t GetContentParameterEditor(
BPartitionParameterEditor** editor);
status_t SetContentParameters(const char* parameters);
status_t GetNextSupportedType(int32 *cookie,
@@ -151,9 +151,6 @@ public:
bool IsSubSystem(const char* diskSystem) const;
bool CanInitialize(const char* diskSystem) const;
status_t GetInitializationParameterEditor(
const char* system,
BPartitionParameterEditor** editor) const;
status_t ValidateInitialize(const char* diskSystem,
BString* name, const char* parameters);
status_t Initialize(const char* diskSystem,
@@ -163,9 +160,6 @@ public:
// Modification of child partitions
bool CanCreateChild() const;
status_t GetChildCreationParameterEditor(
const char* type,
BPartitionParameterEditor** editor) const;
status_t ValidateCreateChild(off_t* start, off_t* size,
const char* type, BString* name,
const char* parameters) const;
+17 -15
View File
@@ -95,21 +95,6 @@ BFSAddOn::CanInitialize(const BMutablePartition* partition)
}
status_t
BFSAddOn::GetInitializationParameterEditor(const BMutablePartition* partition,
BPartitionParameterEditor** editor)
{
*editor = NULL;
try {
*editor = new InitializeBFSEditor();
} catch (std::bad_alloc) {
return B_NO_MEMORY;
}
return B_OK;
}
status_t
BFSAddOn::ValidateInitialize(const BMutablePartition* partition, BString* name,
const char* parameterString)
@@ -173,6 +158,23 @@ BFSAddOn::Initialize(BMutablePartition* partition, const char* name,
}
status_t
BFSAddOn::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
*editor = NULL;
if (type == B_INITIALIZE_PARAMETER_EDITOR) {
try {
*editor = new InitializeBFSEditor();
} catch (std::bad_alloc) {
return B_NO_MEMORY;
}
return B_OK;
}
return B_NOT_SUPPORTED;
}
// #pragma mark - BFSPartitionHandle
+3 -3
View File
@@ -16,12 +16,12 @@ public:
virtual status_t CreatePartitionHandle(
BMutablePartition* partition,
BPartitionHandle** handle);
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual bool CanInitialize(
const BMutablePartition* partition);
virtual status_t GetInitializationParameterEditor(
const BMutablePartition* partition,
BPartitionParameterEditor** editor);
virtual status_t ValidateInitialize(
const BMutablePartition* partition,
BString* name, const char* parameters);
@@ -97,16 +97,6 @@ ExtendedPartitionAddOn::CanInitialize(const BMutablePartition* partition)
}
status_t
ExtendedPartitionAddOn::GetInitializationParameterEditor(
const BMutablePartition* partition, BPartitionParameterEditor** editor)
{
// Nothing to edit, really.
*editor = NULL;
return B_OK;
}
status_t
ExtendedPartitionAddOn::ValidateInitialize(const BMutablePartition* partition,
BString* name, const char* parameters)
@@ -317,11 +307,11 @@ ExtendedPartitionHandle::GetPartitioningInfo(BPartitioningInfo* info)
status_t
ExtendedPartitionHandle::GetChildCreationParameterEditor(const char* type,
ExtendedPartitionHandle::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
*editor = NULL;
return B_OK;
return B_NOT_SUPPORTED;
}
@@ -21,9 +21,6 @@ public:
virtual bool CanInitialize(
const BMutablePartition* partition);
virtual status_t GetInitializationParameterEditor(
const BMutablePartition* partition,
BPartitionParameterEditor** editor);
virtual status_t ValidateInitialize(
const BMutablePartition* partition,
BString* name, const char* parameters);
@@ -52,8 +49,8 @@ public:
virtual status_t GetPartitioningInfo(BPartitioningInfo* info);
virtual status_t GetChildCreationParameterEditor(
const char* type,
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual status_t ValidateCreateChild(off_t* offset,
off_t* size, const char* type,
@@ -302,17 +302,19 @@ PartitionMapHandle::GetPartitioningInfo(BPartitioningInfo* info)
status_t
PartitionMapHandle::GetChildCreationParameterEditor(const char* type,
PartitionMapHandle::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
*editor = NULL;
try {
*editor = new PrimaryPartitionEditor();
} catch (std::bad_alloc) {
return B_NO_MEMORY;
if (type == B_CREATE_PARAMETER_EDITOR) {
try {
*editor = new PrimaryPartitionEditor();
} catch (std::bad_alloc) {
return B_NO_MEMORY;
}
return B_OK;
}
return B_OK;
return B_NOT_SUPPORTED;
}
@@ -52,8 +52,8 @@ public:
virtual status_t GetPartitioningInfo(BPartitioningInfo* info);
virtual status_t GetChildCreationParameterEditor(
const char* type,
virtual status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor);
virtual status_t ValidateCreateChild(off_t* offset,
off_t* size, const char* type,
+5 -2
View File
@@ -265,9 +265,11 @@ CreateParamsPanel::_CreateViewControls(BPartition* parent, off_t offset,
)
);
parent->GetChildCreationParameterEditor(NULL, &fEditor);
if (fEditor)
status_t err = parent->GetParameterEditor(B_CREATE_PARAMETER_EDITOR, &fEditor);
if (err == B_OK && fEditor != NULL)
AddChild(fEditor->View());
else
fEditor = NULL;
BButton* okButton = new BButton(B_TRANSLATE("Create"),
new BMessage(MSG_OK));
@@ -281,3 +283,4 @@ CreateParamsPanel::_CreateViewControls(BPartition* parent, off_t offset,
AddToSubset(fWindow);
layout->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
}
+19 -2
View File
@@ -16,6 +16,8 @@
#include <Button.h>
#include <Catalog.h>
#include <ControlLook.h>
#include <DiskSystemAddOn.h>
#include <DiskSystemAddOnManager.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h>
@@ -96,9 +98,21 @@ InitParamsPanel::InitParamsPanel(BWindow* window, const BString& diskSystem,
fOkButton = new BButton(B_TRANSLATE("Initialize"), new BMessage(MSG_OK));
partition->GetInitializationParameterEditor(diskSystem.String(),
&fEditor);
DiskSystemAddOnManager* manager = DiskSystemAddOnManager::Default();
BDiskSystemAddOn* addOn = manager->GetAddOn(diskSystem);
if (addOn) {
// put the add-on
manager->PutAddOn(addOn);
status_t err = addOn->GetParameterEditor(B_INITIALIZE_PARAMETER_EDITOR, &fEditor);
if (err != B_OK) {
fEditor = NULL;
}
} else {
fEditor = NULL;
}
// TODO: fEditor should be checked for NULL before adding.
SetLayout(new BGroupLayout(B_HORIZONTAL));
const float spacing = be_control_look->DefaultItemSpacing();
AddChild(BGroupLayoutBuilder(B_VERTICAL, spacing)
@@ -198,6 +212,9 @@ InitParamsPanel::Go(BString& name, BString& parameters)
if (!Lock())
return GO_CANCELED;
if (fEditor == NULL)
fReturnValue = B_BAD_VALUE;
if (fReturnValue == GO_SUCCESS) {
if (fEditor->FinishedEditing()) {
status_t err = fEditor->GetParameters(&parameters);
+5 -1
View File
@@ -575,9 +575,13 @@ MainWindow::_UpdateMenus(BDiskDevice* disk,
// Mount items
if (partition) {
BDiskSystem partitionDiskSystem;
partition->GetDiskSystem(&partitionDiskSystem);
fInitMenu->SetEnabled(!partition->IsMounted()
&& !partition->IsReadOnly()
&& partition->Device()->HasMedia());
&& partition->Device()->HasMedia()
// Check if the current disk system allows initialzation.
&& partition->CanInitialize(partitionDiskSystem.PrettyName()));
fDeleteMI->SetEnabled(!partition->IsMounted()
&& !partition->IsDevice());
+4 -1
View File
@@ -221,7 +221,10 @@ PartitionListRow::PartitionListRow(BPartition* partition)
SetField(new BStringField(kUnavailableString), kFilesystemColumn);
SetField(new BStringField(kUnavailableString), kVolumeNameColumn);
} else {
SetField(new BStringField(partition->Type()), kFilesystemColumn);
if (partition->ContainsFileSystem())
SetField(new BStringField(partition->Type()), kFilesystemColumn);
else
SetField(new BStringField(kUnavailableString), kFilesystemColumn);
SetField(new BStringField(kUnavailableString), kVolumeNameColumn);
}
+1 -1
View File
@@ -26,7 +26,7 @@
#include "DiskDeviceJob.h"
#include "DiskDeviceJobGenerator.h"
#include "DiskDeviceJobQueue.h"
#include "DiskSystemAddOnManager.h"
#include <DiskSystemAddOnManager.h>
//#define TRACE_DISK_DEVICE
@@ -5,6 +5,7 @@
#include <DiskSystemAddOn.h>
#include <DiskDeviceDefs.h>
#include <Errors.h>
@@ -51,8 +52,8 @@ BDiskSystemAddOn::CanInitialize(const BMutablePartition* partition)
// GetInitializationParameterEditor
status_t
BDiskSystemAddOn::GetInitializationParameterEditor(
const BMutablePartition* partition, BPartitionParameterEditor** editor)
BDiskSystemAddOn::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
return B_NOT_SUPPORTED;
}
@@ -305,7 +306,7 @@ BPartitionHandle::GetContentParameterEditor(BPartitionParameterEditor** editor)
// GetParameterEditor
status_t
BPartitionHandle::GetParameterEditor(const BMutablePartition* child,
BPartitionHandle::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
return B_NOT_SUPPORTED;
@@ -346,15 +347,6 @@ BPartitionHandle::SetParameters(BMutablePartition* child,
}
// GetChildCreationParameterEditor
status_t
BPartitionHandle::GetChildCreationParameterEditor(const char* type,
BPartitionParameterEditor** editor)
{
return B_NOT_SUPPORTED;
}
// ValidateCreateChild
status_t
BPartitionHandle::ValidateCreateChild(off_t* offset, off_t* size,
@@ -3,7 +3,7 @@
* Distributed under the terms of the MIT License.
*/
#include "DiskSystemAddOnManager.h"
#include <DiskSystemAddOnManager.h>
#include <exception>
#include <new>
+4 -39
View File
@@ -1083,13 +1083,13 @@ BPartition::CanEditParameters() const
// GetParameterEditor
status_t
BPartition::GetParameterEditor(BPartitionParameterEditor** editor)
BPartition::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor)
{
BPartition* parent = Parent();
if (!parent || !fDelegate)
if (!fDelegate)
return B_NO_INIT;
return parent->fDelegate->GetParameterEditor(fDelegate, editor);
return fDelegate->GetParameterEditor(type, editor);
}
@@ -1115,17 +1115,6 @@ BPartition::CanEditContentParameters(bool* whileMounted) const
}
// GetContentParameterEditor
status_t
BPartition::GetContentParameterEditor(BPartitionParameterEditor** editor)
{
if (!fDelegate)
return B_NO_INIT;
return fDelegate->GetContentParameterEditor(editor);
}
// SetContentParameters
status_t
BPartition::SetContentParameters(const char* parameters)
@@ -1190,18 +1179,6 @@ BPartition::CanInitialize(const char* diskSystem) const
}
// GetInitializationParameterEditor
status_t
BPartition::GetInitializationParameterEditor(const char* diskSystem,
BPartitionParameterEditor** editor) const
{
if (!fDelegate)
return B_NO_INIT;
return fDelegate->GetInitializationParameterEditor(diskSystem, editor);
}
// ValidateInitialize
status_t
BPartition::ValidateInitialize(const char* diskSystem, BString* name,
@@ -1243,18 +1220,6 @@ BPartition::CanCreateChild() const
}
// GetChildCreationParameterEditor
status_t
BPartition::GetChildCreationParameterEditor(const char* type,
BPartitionParameterEditor** editor) const
{
if (!fDelegate)
return B_NO_INIT;
return fDelegate->GetChildCreationParameterEditor(type, editor);
}
// ValidateCreateChild
status_t
BPartition::ValidateCreateChild(off_t* offset, off_t* size, const char* type,
@@ -8,9 +8,7 @@
#include <stdio.h>
#include <DiskSystemAddOn.h>
#include "DiskSystemAddOnManager.h"
#include <DiskSystemAddOnManager.h>
//#define TRACE_PARTITION_DELEGATE
#undef TRACE
@@ -336,31 +334,6 @@ BPartition::Delegate::SetType(Delegate* child, const char* type)
}
// GetContentParameterEditor
status_t
BPartition::Delegate::GetContentParameterEditor(
BPartitionParameterEditor** editor) const
{
if (!fPartitionHandle)
return B_NO_INIT;
return fPartitionHandle->GetContentParameterEditor(editor);
}
// GetParameterEditor
status_t
BPartition::Delegate::GetParameterEditor(Delegate* child,
BPartitionParameterEditor** editor) const
{
if (!fPartitionHandle || !child)
return B_NO_INIT;
return fPartitionHandle->GetParameterEditor(&child->fMutablePartition,
editor);
}
// SetContentParameters
status_t
BPartition::Delegate::SetContentParameters(const char* parameters)
@@ -425,6 +398,12 @@ BPartition::Delegate::IsSubSystem(Delegate* child, const char* diskSystem) const
bool
BPartition::Delegate::CanInitialize(const char* diskSystem) const
{
// HACK TO HELP BLANK PARTITION'S BECOME INITIALIZED.
if (diskSystem == NULL)
return true;
if (strlen(diskSystem) < 1)
return true;
// get the disk system add-on
DiskSystemAddOnManager* manager = DiskSystemAddOnManager::Default();
BDiskSystemAddOn* addOn = manager->GetAddOn(diskSystem);
@@ -440,27 +419,6 @@ BPartition::Delegate::CanInitialize(const char* diskSystem) const
}
// GetInitializationParameterEditor
status_t
BPartition::Delegate::GetInitializationParameterEditor(
const char* diskSystem, BPartitionParameterEditor** editor) const
{
// get the disk system add-on
DiskSystemAddOnManager* manager = DiskSystemAddOnManager::Default();
BDiskSystemAddOn* addOn = manager->GetAddOn(diskSystem);
if (!addOn)
return B_ENTRY_NOT_FOUND;
status_t result = addOn->GetInitializationParameterEditor(
&fMutablePartition, editor);
// put the add-on
manager->PutAddOn(addOn);
return result;
}
// ValidateInitialize
status_t
BPartition::Delegate::ValidateInitialize(const char* diskSystem,
@@ -537,15 +495,15 @@ BPartition::Delegate::GetPartitioningInfo(BPartitioningInfo* info)
}
// GetChildCreationParameterEditor
// GetParameterEditor
status_t
BPartition::Delegate::GetChildCreationParameterEditor(const char* type,
BPartition::Delegate::GetParameterEditor(B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor) const
{
if (!fPartitionHandle)
return B_NO_INIT;
return fPartitionHandle->GetChildCreationParameterEditor(type, editor);
return fPartitionHandle->GetParameterEditor(type, editor);
}
@@ -5,6 +5,7 @@
#ifndef _PARTITION_DELEGATE_H
#define _PARTITION_DELEGATE_H
#include <DiskSystemAddOn.h>
#include <MutablePartition.h>
#include <Partition.h>
@@ -66,23 +67,19 @@ public:
const char* type) const;
status_t SetType(Delegate* child, const char* type);
status_t GetContentParameterEditor(
BPartitionParameterEditor** editor) const;
status_t GetParameterEditor(Delegate* child,
BPartitionParameterEditor** editor) const;
status_t SetContentParameters(const char* parameters);
status_t SetParameters(Delegate* child,
const char* parameters);
status_t GetParameterEditor(
B_PARAMETER_EDITOR_TYPE type,
BPartitionParameterEditor** editor) const;
status_t GetNextSupportedChildType(Delegate* child,
int32 *cookie, BString* type) const;
bool IsSubSystem(Delegate* child,
const char* diskSystem) const;
bool CanInitialize(const char* diskSystem) const;
status_t GetInitializationParameterEditor(
const char* system,
BPartitionParameterEditor** editor) const;
status_t ValidateInitialize(const char* diskSystem,
BString* name, const char* parameters);
status_t Initialize(const char* diskSystem,
@@ -94,9 +91,6 @@ public:
status_t GetPartitioningInfo(BPartitioningInfo* info);
status_t GetChildCreationParameterEditor(
const char* system,
BPartitionParameterEditor** editor) const;
status_t ValidateCreateChild(off_t* start, off_t* size,
const char* type, BString* name,
const char* parameters) const;
@@ -118,3 +112,4 @@ private:
#endif // _PARTITION_DELEGATE_H
@@ -54,7 +54,7 @@ BPartitionParameterEditor::View()
bool
BPartitionParameterEditor::FinishedEditing()
{
return true;
return false;
}
@@ -89,7 +89,7 @@ BPartitionParameterEditor::GetParameters(BString* parameters)
status_t
BPartitionParameterEditor::PartitionTypeChanged(const char* type)
{
return B_OK;
return B_NOT_SUPPORTED;
}
@@ -105,5 +105,6 @@ BPartitionParameterEditor::PartitionTypeChanged(const char* type)
status_t
BPartitionParameterEditor::PartitionNameChanged(const char* name)
{
return B_OK;
return B_NOT_SUPPORTED;
}