/* * Copyright 2002-2013 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT license. * * Authors: * Ithamar R. Adema * Stephan Aßmus */ #ifndef MAIN_WINDOW_H #define MAIN_WINDOW_H #include #include #include #include #include #include "Support.h" class BColumnListView; class BDiskDevice; class BMenu; class BMenuBar; class BMenuItem; class BPartition; class BRow; class DiskView; class PartitionListView; enum { MSG_SELECTED_PARTITION_ID = 'spid', MSG_UPDATE_ZOOM_LIMITS = 'uzls' }; class MainWindow : public BWindow { public: MainWindow(); virtual ~MainWindow(); // BWindow interface virtual bool QuitRequested(); virtual void MessageReceived(BMessage* message); // MainWindow status_t StoreSettings(BMessage* archive) const; status_t RestoreSettings(BMessage* archive); void ApplyDefaultSettings(); status_t RegisterFileDiskDevice(const char* fileName); status_t UnRegisterFileDiskDevice(const char* fileName); static int32 SaveDiskImage(void* data); static int32 WriteDiskImage(void* data); private: static void _WriteDiskImage(BMessenger messenger, BFile source, BFile target, const char* targetpath, BString title, BString status); void _ScanDrives(); void _AdaptToSelectedPartition(); void _SetToDiskAndPartition(partition_id diskID, partition_id partitionID, partition_id parentID); void _UpdateMenus(BDiskDevice* disk, partition_id selectedPartition, partition_id parentID); void _DisplayPartitionError(BString message, const BPartition* partition = NULL, status_t error = B_OK) const; void _Mount(BDiskDevice* disk, partition_id selectedPartition); void _Unmount(BDiskDevice* disk, partition_id selectedPartition); void _MountAll(); void _Initialize(BDiskDevice* disk, partition_id selectedPartition, const BString& diskSystemName); void _Create(BDiskDevice* disk, partition_id selectedPartition); void _Delete(BDiskDevice* disk, partition_id selectedPartition); void _ChangeParameters(BDiskDevice* disk, partition_id selectedPartition); float _ColumnListViewHeight(BColumnListView* list, BRow* currentRow); void _UpdateWindowZoomLimits(); private: BDiskDeviceRoster fDiskDeviceRoster; BDiskDevice* fCurrentDisk; partition_id fCurrentPartitionID; PartitionListView* fListView; DiskView* fDiskView; SpaceIDMap fSpaceIDMap; BMenu* fDiskMenu; BMenu* fDiskInitMenu; BMenu* fPartitionMenu; BMenu* fFormatMenu; BMenu* fDiskImageMenu; BMenuBar* fMenuBar; BMenuItem* fWipeMenuItem; BMenuItem* fEjectMenuItem; BMenuItem* fSurfaceTestMenuItem; BMenuItem* fRescanMenuItem; BMenuItem* fCreateMenuItem; BMenuItem* fChangeMenuItem; BMenuItem* fDeleteMenuItem; BMenuItem* fMountMenuItem; BMenuItem* fUnmountMenuItem; BMenuItem* fMountAllMenuItem; BMenuItem* fOpenDiskProbeMenuItem; BMenu* fFormatContextMenuItem; BMenuItem* fCreateContextMenuItem; BMenuItem* fChangeContextMenuItem; BMenuItem* fDeleteContextMenuItem; BMenuItem* fMountContextMenuItem; BMenuItem* fUnmountContextMenuItem; BMenuItem* fOpenDiskProbeContextMenuItem; BPopUpMenu* fContextMenu; BMenuItem* fRegisterMenuItem; BMenuItem* fUnRegisterMenuItem; BMenuItem* fSaveMenuItem; BMenuItem* fWriteMenuItem; BFilePanel* fRegisterFilePanel; BFilePanel* fWriteImageFilePanel; BFilePanel* fReadImageFilePanel; BNotification* fNotification; }; #endif // MAIN_WINDOW_H