]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/volume.h
addind nonowned window implementation
[wxWidgets.git] / include / wx / volume.h
index 6d095f09f7cb0bae434f334881af3d2a381ed101..7ecdb38e30f87b9357c183e9d9ddcf0c7ddcad07 100644 (file)
 #ifndef _WX_FSVOLUME_H_
 #define _WX_FSVOLUME_H_
 
-#if defined(__GNUG__) && !defined(__APPLE__)
-    #pragma interface "fsvolume.h"
-#endif
-
 #include "wx/defs.h"
 
 #if wxUSE_FSVOLUME
 
-#if wxUSE_GUI
-    #include "wx/iconbndl.h" // for wxIconArray
-#endif // wxUSE_GUI
+#include "wx/arrstr.h"
 
 // the volume flags
 enum
@@ -56,22 +50,7 @@ enum wxFSVolumeKind
     wxFS_VOL_MAX
 };
 
-#if wxUSE_GUI
-
-#include "wx/icon.h"
-
-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
-
-class WXDLLEXPORT wxFSVolume
+class WXDLLIMPEXP_BASE wxFSVolumeBase
 {
 public:
     // return the array containing the names of the volumes
@@ -88,8 +67,8 @@ public:
 
     // create the volume object with this name (should be one of those returned
     // by GetVolumes()).
-    wxFSVolume();
-    wxFSVolume(const wxString& name);
+    wxFSVolumeBase();
+    wxFSVolumeBase(const wxString& name);
     bool Create(const wxString& name);
 
     // accessors
@@ -112,23 +91,56 @@ public:
     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:
+protected:
+    // the internal volume name
     wxString m_volName;
+
+    // the volume name as it is displayed to the user
     wxString m_dispName;
-#if wxUSE_GUI
-    wxIconArray m_icons;
-#endif
+
+    // have we been initialized correctly?
     bool m_isOk;
+};
 
+#if wxUSE_GUI
+
+#include "wx/icon.h"
+#include "wx/iconbndl.h" // only for wxIconArray
+
+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
 };
 
+// wxFSVolume adds GetIcon() to wxFSVolumeBase
+class WXDLLIMPEXP_CORE wxFSVolume : public wxFSVolumeBase
+{
+public:
+    wxFSVolume() : wxFSVolumeBase() { InitIcons(); }
+    wxFSVolume(const wxString& name) : wxFSVolumeBase(name) { InitIcons(); }
+
+    wxIcon GetIcon(wxFSIconType type) const;
+
+private:
+    void InitIcons();
+
+    // the different icons for this volume (created on demand)
+    wxIconArray m_icons;
+};
+
+#else // !wxUSE_GUI
+
+// wxFSVolume is the same thing as wxFSVolume in wxBase
+typedef wxFSVolumeBase wxFSVolume;
+
+#endif // wxUSE_GUI/!wxUSE_GUI
+
 #endif // wxUSE_FSVOLUME
 
 #endif // _WX_FSVOLUME_H_
-