[haiku-commits] r39115 - in haiku/trunk: headers/os/storage headers/private/storage src/add-ons/disk_systems/bfs src/add-ons/disk_systems/intel src/apps/drivesetup ...

  • From: bgroff@xxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 24 Oct 2010 05:39:19 +0200 (CEST)

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(&parameters);

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;
 }
+


Other related posts: