git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56910 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// 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 licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// wxFSVolume represents a volume/drive in a file system
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
#ifndef _WX_FSVOLUME_H_
 | 
						|
#define _WX_FSVOLUME_H_
 | 
						|
 | 
						|
#include "wx/defs.h"
 | 
						|
 | 
						|
#if wxUSE_FSVOLUME
 | 
						|
 | 
						|
#include "wx/arrstr.h"
 | 
						|
 | 
						|
// the volume flags
 | 
						|
enum wxFSVolumeFlags
 | 
						|
{
 | 
						|
    // 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
 | 
						|
};
 | 
						|
 | 
						|
class WXDLLIMPEXP_BASE wxFSVolumeBase
 | 
						|
{
 | 
						|
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()).
 | 
						|
    wxFSVolumeBase();
 | 
						|
    wxFSVolumeBase(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; }
 | 
						|
 | 
						|
    // TODO: operatios (Mount(), Unmount(), Eject(), ...)?
 | 
						|
 | 
						|
protected:
 | 
						|
    // the internal volume name
 | 
						|
    wxString m_volName;
 | 
						|
 | 
						|
    // the volume name as it is displayed to the user
 | 
						|
    wxString m_dispName;
 | 
						|
 | 
						|
    // 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_
 |