volume.h

来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C头文件 代码 · 共 150 行

H
150
字号
/////////////////////////////////////////////////////////////////////////////
// Name:        wx/volume.h
// Purpose:     wxFSVolume - encapsulates system volume information
// Author:      George Policello
// Modified by:
// Created:     28 Jan 02
// RCS-ID:      $Id: volume.h,v 1.14.4.1 2005/12/23 00:59:49 VZ Exp $
// Copyright:   (c) 2002 George Policello
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

// ----------------------------------------------------------------------------
// wxFSVolume represents a volume/drive/mount point in a file system
// ----------------------------------------------------------------------------

#ifndef _WX_FSVOLUME_H_
#define _WX_FSVOLUME_H_

#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
    #pragma interface "fsvolume.h"
#endif

#include "wx/defs.h"

#if wxUSE_FSVOLUME

// 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
};

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_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?