1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/volume.h 3 // Purpose: wxFSVolume - encapsulates system volume information 4 // Author: George Policello 5 // Modified by: 6 // Created: 28 Jan 02 7 // RCS-ID: $Id: volume.h 39399 2006-05-28 23:08:31Z ABX $ 8 // Copyright: (c) 2002 George Policello 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 // ---------------------------------------------------------------------------- 13 // wxFSVolume represents a volume/drive/mount point in a file system 14 // ---------------------------------------------------------------------------- 15 16 #ifndef _WX_FSVOLUME_H_ 17 #define _WX_FSVOLUME_H_ 18 19 #include "wx/defs.h" 20 21 #if wxUSE_FSVOLUME 22 23 #include "wx/arrstr.h" 24 25 // the volume flags 26 enum 27 { 28 // is the volume mounted? 29 wxFS_VOL_MOUNTED = 0x0001, 30 31 // is the volume removable (floppy, CD, ...)? 32 wxFS_VOL_REMOVABLE = 0x0002, 33 34 // read only? (otherwise read write) 35 wxFS_VOL_READONLY = 0x0004, 36 37 // network resources 38 wxFS_VOL_REMOTE = 0x0008 39 }; 40 41 // the volume types 42 enum wxFSVolumeKind 43 { 44 wxFS_VOL_FLOPPY, 45 wxFS_VOL_DISK, 46 wxFS_VOL_CDROM, 47 wxFS_VOL_DVDROM, 48 wxFS_VOL_NETWORK, 49 wxFS_VOL_OTHER, 50 wxFS_VOL_MAX 51 }; 52 53 class WXDLLIMPEXP_BASE wxFSVolumeBase 54 { 55 public: 56 // return the array containing the names of the volumes 57 // 58 // only the volumes with the flags such that 59 // (flags & flagsSet) == flagsSet && !(flags & flagsUnset) 60 // are returned (by default, all mounted ones) 61 static wxArrayString GetVolumes(int flagsSet = wxFS_VOL_MOUNTED, 62 int flagsUnset = 0); 63 64 // stop execution of GetVolumes() called previously (should be called from 65 // another thread, of course) 66 static void CancelSearch(); 67 68 // create the volume object with this name (should be one of those returned 69 // by GetVolumes()). 70 wxFSVolumeBase(); 71 wxFSVolumeBase(const wxString& name); 72 bool Create(const wxString& name); 73 74 // accessors 75 // --------- 76 77 // is this a valid volume? 78 bool IsOk() const; 79 80 // kind of this volume? 81 wxFSVolumeKind GetKind() const; 82 83 // flags of this volume? 84 int GetFlags() const; 85 86 // can we write to this volume? IsWritable()87 bool IsWritable() const { return !(GetFlags() & wxFS_VOL_READONLY); } 88 89 // get the name of the volume and the name which should be displayed to the 90 // user GetName()91 wxString GetName() const { return m_volName; } GetDisplayName()92 wxString GetDisplayName() const { return m_dispName; } 93 94 // TODO: operatios (Mount(), Unmount(), Eject(), ...)? 95 96 protected: 97 // the internal volume name 98 wxString m_volName; 99 100 // the volume name as it is displayed to the user 101 wxString m_dispName; 102 103 // have we been initialized correctly? 104 bool m_isOk; 105 }; 106 107 #if wxUSE_GUI 108 109 #include "wx/icon.h" 110 #include "wx/iconbndl.h" // only for wxIconArray 111 112 enum wxFSIconType 113 { 114 wxFS_VOL_ICO_SMALL = 0, 115 wxFS_VOL_ICO_LARGE, 116 wxFS_VOL_ICO_SEL_SMALL, 117 wxFS_VOL_ICO_SEL_LARGE, 118 wxFS_VOL_ICO_MAX 119 }; 120 121 // wxFSVolume adds GetIcon() to wxFSVolumeBase 122 class WXDLLIMPEXP_CORE wxFSVolume : public wxFSVolumeBase 123 { 124 public: wxFSVolume()125 wxFSVolume() : wxFSVolumeBase() { InitIcons(); } wxFSVolume(const wxString & name)126 wxFSVolume(const wxString& name) : wxFSVolumeBase(name) { InitIcons(); } 127 128 wxIcon GetIcon(wxFSIconType type) const; 129 130 private: 131 void InitIcons(); 132 133 // the different icons for this volume (created on demand) 134 wxIconArray m_icons; 135 }; 136 137 #else // !wxUSE_GUI 138 139 // wxFSVolume is the same thing as wxFSVolume in wxBase 140 typedef wxFSVolumeBase wxFSVolume; 141 142 #endif // wxUSE_GUI/!wxUSE_GUI 143 144 #endif // wxUSE_FSVOLUME 145 146 #endif // _WX_FSVOLUME_H_ 147