]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/volume.h
added wxFSVolume patch from George Policello (untested, unreferenced from the project...
[wxWidgets.git] / include / wx / volume.h
diff --git a/include/wx/volume.h b/include/wx/volume.h
new file mode 100644 (file)
index 0000000..32d2f9f
--- /dev/null
@@ -0,0 +1,122 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/volume.h
+// Purpose:     wxFSVolume - encapsulates system volume information
+// Author:      George Policello
+// Modified by:
+// Created:     28 Jan 02
+// RCS-ID:      $Id$
+// Copyright:   (c) 2002 George Policello
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// wxFSVolume represents a volume/drive/mount point in a file system
+// ----------------------------------------------------------------------------
+
+#ifndef _WX_FSVOLUME_H_
+#define _WX_FSVOLUME_H_
+
+#ifdef __GNUG__
+    #pragma interface "fsvolume.h"
+#endif
+
+// the volume flags
+enum
+{
+    // is the volume mounted?
+    wxFS_VOL_MOUNTED = 0x0001,
+
+    // is the volume removable (floppy, CD, ...)?
+    wxFS_VOL_REMOVABLE = 0x0002,
+
+    // read only? (otherwise read write)
+    wxFS_VOL_READONLY = 0x0004,
+
+    // network resources
+    wxFS_VOL_REMOTE = 0x0008
+};
+
+// the volume types
+enum wxFSVolumeKind
+{
+    wxFS_VOL_FLOPPY,
+    wxFS_VOL_DISK,
+    wxFS_VOL_CDROM,
+    wxFS_VOL_DVDROM,
+    wxFS_VOL_NETWORK,
+    wxFS_VOL_OTHER,
+    wxFS_VOL_MAX
+};
+
+#if wxUSE_GUI
+enum wxFSIconType
+{
+    wxFS_VOL_ICO_SMALL = 0,
+    wxFS_VOL_ICO_LARGE,
+    wxFS_VOL_ICO_SEL_SMALL,
+    wxFS_VOL_ICO_SEL_LARGE,
+    wxFS_VOL_ICO_MAX
+};
+#endif // wxUSE_GUI
+
+WX_DECLARE_OBJARRAY(wxIcon, wxIconArray);
+
+class WXDLLEXPORT wxFSVolume
+{
+public:
+    // return the array containing the names of the volumes
+    //
+    // only the volumes with the flags such that
+    //  (flags & flagsSet) == flagsSet && !(flags & flagsUnset)
+    // are returned (by default, all mounted ones)
+    static wxArrayString GetVolumes(int flagsSet = wxFS_VOL_MOUNTED,
+                                    int flagsUnset = 0);
+
+    // stop execution of GetVolumes() called previously (should be called from
+    // another thread, of course)
+    static void CancelSearch();
+
+    // create the volume object with this name (should be one of those returned
+    // by GetVolumes()).
+    wxFSVolume();
+    wxFSVolume(const wxString& name);
+    bool Create(const wxString& name);
+
+    // accessors
+    // ---------
+
+    // is this a valid volume?
+    bool IsOk() const;
+
+    // kind of this volume?
+    wxFSVolumeKind GetKind() const;
+
+    // flags of this volume?
+    int GetFlags() const;
+
+    // can we write to this volume?
+    bool IsWritable() const { return !(GetFlags() & wxFS_VOL_READONLY); }
+
+    // get the name of the volume and the name which should be displayed to the
+    // user
+    wxString GetName() const { return m_volName; }
+    wxString GetDisplayName() const { return m_dispName; }
+
+#if wxUSE_GUI
+    wxIcon GetIcon(wxFSIconType type) const;
+#endif
+
+    // TODO: operatios (Mount(), Unmount(), Eject(), ...)?
+
+private:
+    wxString m_volName;
+    wxString m_dispName;
+#if wxUSE_GUI
+    wxIconArray m_icons;
+#endif
+    bool m_isOk;
+
+};
+
+#endif // _WX_FSVOLUME_H_
+