Author: bgroff Date: 2010-10-24 05:39:19 +0200 (Sun, 24 Oct 2010) New Revision: 39115 Changeset: http://dev.haiku-os.org/changeset/39115 Added: haiku/trunk/headers/private/storage/DiskSystemAddOnManager.h Removed: haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.h Modified: haiku/trunk/headers/os/storage/DiskDeviceDefs.h haiku/trunk/headers/private/storage/DiskSystemAddOn.h haiku/trunk/headers/private/storage/Partition.h haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.cpp haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.h haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.cpp haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.h haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.cpp haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.h haiku/trunk/src/apps/drivesetup/CreateParamsPanel.cpp haiku/trunk/src/apps/drivesetup/InitParamsPanel.cpp haiku/trunk/src/apps/drivesetup/MainWindow.cpp haiku/trunk/src/apps/drivesetup/PartitionList.cpp haiku/trunk/src/kits/storage/disk_device/DiskDevice.cpp haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOn.cpp haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp haiku/trunk/src/kits/storage/disk_device/Partition.cpp haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.cpp haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.h haiku/trunk/src/kits/storage/disk_device/PartitionParameterEditor.cpp Log: 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. Modified: haiku/trunk/headers/os/storage/DiskDeviceDefs.h =================================================================== --- haiku/trunk/headers/os/storage/DiskDeviceDefs.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/headers/os/storage/DiskDeviceDefs.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -148,6 +148,13 @@ 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 Modified: haiku/trunk/headers/private/storage/DiskSystemAddOn.h =================================================================== --- haiku/trunk/headers/private/storage/DiskSystemAddOn.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/headers/private/storage/DiskSystemAddOn.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -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 @@ 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 @@ 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 @@ 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 @@ 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, Copied: haiku/trunk/headers/private/storage/DiskSystemAddOnManager.h (from rev 39079, haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.h) =================================================================== --- haiku/trunk/headers/private/storage/DiskSystemAddOnManager.h (rev 0) +++ haiku/trunk/headers/private/storage/DiskSystemAddOnManager.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -0,0 +1,67 @@ +/* + * Copyright 2007, Ingo Weinhold, bonefish@xxxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef _DISK_SYSTEM_ADD_ON_MANAGER_H +#define _DISK_SYSTEM_ADD_ON_MANAGER_H + +#include <FindDirectory.h> +#include <List.h> +#include <Locker.h> + + +class BDiskSystemAddOn; + + +namespace BPrivate { + + +class DiskSystemAddOnManager { +public: + static DiskSystemAddOnManager* Default(); + + bool Lock(); + void Unlock(); + + // load/unload all disk system add-ons + status_t LoadDiskSystems(); + void UnloadDiskSystems(); + + // manager must be locked + int32 CountAddOns() const; + BDiskSystemAddOn* AddOnAt(int32 index) const; + + // manager will be locked + BDiskSystemAddOn* GetAddOn(const char* name); + void PutAddOn(BDiskSystemAddOn* addOn); + +private: + struct AddOnImage; + struct AddOn; + struct StringSet; + + DiskSystemAddOnManager(); + + static void _InitSingleton(); + + AddOn* _AddOnAt(int32 index) const; + void _PutAddOn(int32 index); + + status_t _LoadAddOns(StringSet& alreadyLoaded, + directory_which directory); + +private: + mutable BLocker fLock; + BList fAddOns; + BList fAddOnsToBeUnloaded; + int32 fLoadCount; + + static DiskSystemAddOnManager* sManager; +}; + + +} // namespace BPrivate + +using BPrivate::DiskSystemAddOnManager; + +#endif // _DISK_SYSTEM_ADD_ON_MANAGER_H Modified: haiku/trunk/headers/private/storage/Partition.h =================================================================== --- haiku/trunk/headers/private/storage/Partition.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/headers/private/storage/Partition.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -3,6 +3,7 @@ * Copyright 2003, Tyler Akidau, haiku@xxxxxxxxxxx * Distributed under the terms of the MIT License. */ + #ifndef _PARTITION_H #define _PARTITION_H @@ -129,13 +130,12 @@ 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 @@ 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 @@ // 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; Modified: haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.cpp =================================================================== --- haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -96,21 +96,6 @@ 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 @@ } +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 Modified: haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.h =================================================================== --- haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/bfs/BFSAddOn.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -16,12 +16,12 @@ 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); Modified: haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.cpp =================================================================== --- haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -98,16 +98,6 @@ 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 @@ 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; } Modified: haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.h =================================================================== --- haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/intel/ExtendedPartitionAddOn.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -21,9 +21,6 @@ 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 @@ 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, Modified: haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.cpp =================================================================== --- haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -302,17 +302,19 @@ 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; } Modified: haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.h =================================================================== --- haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/add-ons/disk_systems/intel/PartitionMapAddOn.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -52,8 +52,8 @@ 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, Modified: haiku/trunk/src/apps/drivesetup/CreateParamsPanel.cpp =================================================================== --- haiku/trunk/src/apps/drivesetup/CreateParamsPanel.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/apps/drivesetup/CreateParamsPanel.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -265,9 +265,11 @@ ) ); - 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 @@ AddToSubset(fWindow); layout->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } + Modified: haiku/trunk/src/apps/drivesetup/InitParamsPanel.cpp =================================================================== --- haiku/trunk/src/apps/drivesetup/InitParamsPanel.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/apps/drivesetup/InitParamsPanel.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -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 @@ 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 @@ if (!Lock()) return GO_CANCELED; + if (fEditor == NULL) + fReturnValue = B_BAD_VALUE; + if (fReturnValue == GO_SUCCESS) { if (fEditor->FinishedEditing()) { status_t err = fEditor->GetParameters(¶meters); Modified: haiku/trunk/src/apps/drivesetup/MainWindow.cpp =================================================================== --- haiku/trunk/src/apps/drivesetup/MainWindow.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/apps/drivesetup/MainWindow.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -575,9 +575,13 @@ // 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()); Modified: haiku/trunk/src/apps/drivesetup/PartitionList.cpp =================================================================== --- haiku/trunk/src/apps/drivesetup/PartitionList.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/apps/drivesetup/PartitionList.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -221,7 +221,10 @@ 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); } Modified: haiku/trunk/src/kits/storage/disk_device/DiskDevice.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/DiskDevice.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/DiskDevice.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -26,7 +26,7 @@ #include "DiskDeviceJob.h" #include "DiskDeviceJobGenerator.h" #include "DiskDeviceJobQueue.h" -#include "DiskSystemAddOnManager.h" +#include <DiskSystemAddOnManager.h> //#define TRACE_DISK_DEVICE Modified: haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOn.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOn.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOn.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -5,6 +5,7 @@ #include <DiskSystemAddOn.h> +#include <DiskDeviceDefs.h> #include <Errors.h> @@ -51,8 +52,8 @@ // 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 @@ // 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 @@ } -// 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, Modified: haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -3,7 +3,7 @@ * Distributed under the terms of the MIT License. */ -#include "DiskSystemAddOnManager.h" +#include <DiskSystemAddOnManager.h> #include <exception> #include <new> Modified: haiku/trunk/src/kits/storage/disk_device/Partition.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/Partition.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/Partition.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -1083,13 +1083,13 @@ // 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 @@ } -// 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 @@ } -// 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 @@ } -// 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, Modified: haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -8,10 +8,8 @@ #include <stdio.h> #include <DiskSystemAddOn.h> +#include <DiskSystemAddOnManager.h> -#include "DiskSystemAddOnManager.h" - - //#define TRACE_PARTITION_DELEGATE #undef TRACE #ifdef TRACE_PARTITION_DELEGATE @@ -336,31 +334,6 @@ } -// 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 @@ 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 @@ } -// 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 @@ } -// 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); } Modified: haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.h =================================================================== --- haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.h 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/PartitionDelegate.h 2010-10-24 03:39:19 UTC (rev 39115) @@ -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 @@ 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 @@ 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 @@ #endif // _PARTITION_DELEGATE_H + Modified: haiku/trunk/src/kits/storage/disk_device/PartitionParameterEditor.cpp =================================================================== --- haiku/trunk/src/kits/storage/disk_device/PartitionParameterEditor.cpp 2010-10-24 03:31:34 UTC (rev 39114) +++ haiku/trunk/src/kits/storage/disk_device/PartitionParameterEditor.cpp 2010-10-24 03:39:19 UTC (rev 39115) @@ -54,7 +54,7 @@ bool BPartitionParameterEditor::FinishedEditing() { - return true; + return false; } @@ -89,7 +89,7 @@ status_t BPartitionParameterEditor::PartitionTypeChanged(const char* type) { - return B_OK; + return B_NOT_SUPPORTED; } @@ -105,5 +105,6 @@ status_t BPartitionParameterEditor::PartitionNameChanged(const char* name) { - return B_OK; + return B_NOT_SUPPORTED; } +