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