]> git.saurik.com Git - wxWidgets.git/blame - src/palmos/volume.cpp
64 bit compilation fix (pointer can't be cast to int); code simplification (don't...
[wxWidgets.git] / src / palmos / volume.cpp
CommitLineData
ffecfa5a
JS
1///////////////////////////////////////////////////////////////////////////////
2// Name: src/palmos/volume.cpp
3// Purpose: wxFSVolume - encapsulates system volume information
e2731512 4// Author: William Osborne - minimal working wxPalmOS port
ffecfa5a
JS
5// Modified by:
6// Created: 10/13/04
e2731512 7// RCS-ID: $Id$
ffecfa5a
JS
8// Copyright: (c) William Osborne
9// Licence: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
20#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
21 #pragma implementation "fsvolume.h"
22#endif
23
24#include "wx/wxprec.h"
25
26#ifdef __BORLANDC__
27 #pragma hdrstop
28#endif
29
30#if wxUSE_FSVOLUME
31
32#ifndef WX_PRECOMP
33 #if wxUSE_GUI
34 #include "wx/icon.h"
35 #endif
36 #include "wx/intl.h"
37#endif // WX_PRECOMP
38
12839f76 39#include "wx/arrstr.h"
ffecfa5a
JS
40#include "wx/volume.h"
41
20bc5ad8
WS
42#include <VFSMgr.h>
43#include <PalmTypesCompatibility.h>
ffecfa5a
JS
44
45#if wxUSE_BASE
46
ffecfa5a
JS
47//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
48// Globals/Statics
49//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
50static long s_cancelSearch = FALSE;
51
52struct FileInfo
53{
54 FileInfo(unsigned flag=0, wxFSVolumeKind type=wxFS_VOL_OTHER) :
55 m_flags(flag), m_type(type) {}
56
57 FileInfo(const FileInfo& other) { *this = other; }
58 FileInfo& operator=(const FileInfo& other)
59 {
60 m_flags = other.m_flags;
61 m_type = other.m_type;
62 return *this;
63 }
64
65 unsigned m_flags;
66 wxFSVolumeKind m_type;
67};
12839f76 68
ffecfa5a 69WX_DECLARE_STRING_HASH_MAP(FileInfo, FileInfoMap);
12839f76 70
ffecfa5a
JS
71// Cygwin bug (?) destructor for global s_fileInfo is called twice...
72static FileInfoMap& GetFileInfoMap()
73{
74 static FileInfoMap s_fileInfo(25);
75
76 return s_fileInfo;
77}
78#define s_fileInfo (GetFileInfoMap())
79
80//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
81// Local helper functions.
82//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
83
84//=============================================================================
85// Function: GetBasicFlags
86// Purpose: Set basic flags, primarily wxFS_VOL_REMOTE and wxFS_VOL_REMOVABLE.
87// Notes: - Local and mapped drives are mounted by definition. We have no
88// way to determine mounted status of network drives, so assume that
89// all drives are mounted, and let the caller decide otherwise.
90// - Other flags are 'best guess' from type of drive. The system will
91// not report the file attributes with any degree of accuracy.
92//=============================================================================
93static unsigned GetBasicFlags(const wxChar* filename)
94{
95 unsigned flags = wxFS_VOL_MOUNTED;
96
97 return flags;
98} // GetBasicFlags
99
100//=============================================================================
101// Function: FilteredAdd
102// Purpose: Add a file to the list if it meets the filter requirement.
103// Notes: - See GetBasicFlags for remarks about the Mounted flag.
104//=============================================================================
e2731512 105static bool FilteredAdd(wxArrayString& list, const wxChar* filename,
ffecfa5a
JS
106 unsigned flagsSet, unsigned flagsUnset)
107{
108 return false;
109} // FilteredAdd
110
ffecfa5a
JS
111//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
112// wxFSVolume
113//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
114
115//=============================================================================
116// Function: GetVolumes
117// Purpose: Generate and return a list of all volumes (drives) available.
118// Notes:
119//=============================================================================
120wxArrayString wxFSVolumeBase::GetVolumes(int flagsSet, int flagsUnset)
121{
122 wxArrayString list;
123
12839f76
WS
124 UInt16 refNum;
125 UInt32 it = vfsIteratorStart;
126
127 while (it != vfsIteratorStop)
128 {
129 status_t err = VFSVolumeEnumerate(&refNum, &it);
130 if (err == errNone)
131 {
132 // manual: "Volume labels can be up to 255 characters long."
133 char label[256];
134 err = VFSVolumeGetLabel(refNum,label,256);
135 if (err == errNone)
136 {
137 list.Add(wxString::FromAscii(label));
138 }
139 }
140
141 if (err != errNone)
142 break;
e2731512 143 }
12839f76 144
ffecfa5a
JS
145 return list;
146} // GetVolumes
147
148//=============================================================================
149// Function: CancelSearch
150// Purpose: Instruct an active search to stop.
151// Notes: - This will only sensibly be called by a thread other than the one
152// performing the search. This is the only thread-safe function
153// provided by the class.
154//=============================================================================
155void wxFSVolumeBase::CancelSearch()
156{
157} // CancelSearch
158
159//=============================================================================
160// Function: constructor
161// Purpose: default constructor
162//=============================================================================
163wxFSVolumeBase::wxFSVolumeBase()
164{
165} // wxVolume
166
167//=============================================================================
168// Function: constructor
169// Purpose: constructor that calls Create
170//=============================================================================
171wxFSVolumeBase::wxFSVolumeBase(const wxString& name)
172{
173} // wxVolume
174
175//=============================================================================
176// Function: Create
177// Purpose: Finds, logs in, etc. to the request volume.
178//=============================================================================
179bool wxFSVolumeBase::Create(const wxString& name)
180{
181 return false;
182} // Create
183
184//=============================================================================
185// Function: IsOk
12839f76 186// Purpose: returns true if the volume is legal.
ffecfa5a
JS
187// Notes: For fixed disks, it must exist. For removable disks, it must also
188// be present. For Network Shares, it must also be logged in, etc.
189//=============================================================================
190bool wxFSVolumeBase::IsOk() const
191{
192 return false;
193} // IsOk
194
195//=============================================================================
196// Function: GetKind
197// Purpose: Return the type of the volume.
198//=============================================================================
199wxFSVolumeKind wxFSVolumeBase::GetKind() const
200{
201 return wxFS_VOL_OTHER;
202}
203
204//=============================================================================
205// Function: GetFlags
206// Purpose: Return the caches flags for this volume.
207// Notes: - Returns -1 if no flags were cached.
208//=============================================================================
209int wxFSVolumeBase::GetFlags() const
210{
211 return -1;
212} // GetFlags
213
214#endif // wxUSE_BASE
215
216// ============================================================================
217// wxFSVolume
218// ============================================================================
219
220#if wxUSE_GUI
221
222void wxFSVolume::InitIcons()
223{
224}
225
226//=============================================================================
227// Function: GetIcon
228// Purpose: return the requested icon.
229//=============================================================================
230
231wxIcon wxFSVolume::GetIcon(wxFSIconType type) const
232{
233 return m_icons[type];
234} // GetIcon
235
236#endif // wxUSE_GUI
237
238#endif // wxUSE_FSVOLUME
239