1///////////////////////////////////////////////////////////////////////////////
2// Name:        src/palmos/prefconf.cpp
3// Purpose:     wxPrefConfig implementation
4// Author:      Wlodzimierz ABX Skiba
5// Modified by:
6// Created:     28.12.2004
7// RCS-ID:      $Id: prefconf.cpp 35650 2005-09-23 12:56:45Z MR $
8// Copyright:   (c) Wlodzimierz Skiba
9// License:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
16#pragma hdrstop
17#endif
18
19#ifndef WX_PRECOMP
20    #include  "wx/string.h"
21#endif //WX_PRECOMP
22
23#if wxUSE_CONFIG && wxUSE_CONFIG_NATIVE
24
25#include "wx/config.h"
26
27// ============================================================================
28// implementation
29// ============================================================================
30
31/*
32
33http://www.palmos.com/dev/support/docs/protein_books/System_Management/PreferenceConcepts.html
34
35This wxPrefConfig class is a wxConfig wrapper around PalmOS Preferences
36functionality. Preferences allow to write any structure into its database so
37wxPrefConfig writes there all entries of single group into one Preference.
38To optimize read/write operations value of preference is cached. Cache is filled
39after each change of the path (including using path to group names in all
40operations) and it is flushed on destructor, any path change on or purpose
41with Flush().
42
43Meaning of styles:
44
45  wxCONFIG_USE_LOCAL_FILE => store config in "saved" preferences database
46                             (not to be backed up during a HotSync operation)
47  wxCONFIG_USE_GLOBAL_FILE => store config in "unsaved" preferences database
48                             (backed up during a HotSync operation)
49
50
51Each Preference is an array of chars. First unsigned char describes
52number N of chars used for Preference size. Next N chars (string) contains
53length of rest of Preference. Preference consists in serie of entries which
54should be read in loop until in reaches end of Preference.
55
56  Each entry is an set of chars with following structure:
57  1. name (null terminated)
58  2. type (single char): b,s,g,l,d (see value)
59  3. value
60     - for type="b" (bool) it os "0" or "1"
61     - for type="s" (string) it is null terminated set of chars
62     - for type="g" (subgroup) as for "s" but string is converted to
63       uint16_t for id parameter of ::PrefGetAppPreferences()
64     - for type="l" (long) as for "s" but string is converted to long
65     - for type="d" (double) as for "s" but string is converted to double
66     - otherwise it is ""
67
68So all together first Read in group needs 3 reading from Preference:
69  1. take the length N of length
70  2. take the length M of the group content
71  3. take the group content
72and all it is in single Preference to not overload Preferences database.
73As long as each next Read/Write is performed in the same group then none
74access to Preferences is performed. Flushing needs only single writing to
75databease because all 3 parts of Preference can be prepared in memory.
76
77NOTE: wxPrefConfig can read/write only its own entries. It is impossible to
78know structures of Preferences of other non wxW applications.
79
80*/
81
82// ----------------------------------------------------------------------------
83// ctor/dtor
84// ----------------------------------------------------------------------------
85
86wxPrefConfig::wxPrefConfig(const wxString& appName, const wxString& vendorName,
87                           const wxString& strLocal, const wxString& strGlobal,
88                           long style)
89             : wxConfigBase(appName, vendorName, strLocal, strGlobal, style)
90{
91}
92
93// ----------------------------------------------------------------------------
94// path management
95// ----------------------------------------------------------------------------
96
97void wxPrefConfig::SetPath(const wxString& strPath)
98{
99}
100
101// ----------------------------------------------------------------------------
102// enumeration (works only with current group)
103// ----------------------------------------------------------------------------
104
105bool wxPrefConfig::GetFirstGroup(wxString& str, long& lIndex) const
106{
107}
108
109bool wxPrefConfig::GetNextGroup(wxString& str, long& lIndex) const
110{
111    /* TODO */
112    return false;
113}
114
115bool wxPrefConfig::GetFirstEntry(wxString& str, long& lIndex) const
116{
117    /* TODO */
118    return false;
119}
120
121bool wxPrefConfig::GetNextEntry(wxString& str, long& lIndex) const
122{
123    /* TODO */
124    return false;
125}
126
127size_t wxPrefConfig::GetNumberOfEntries(bool WXUNUSED(bRecursive)) const
128{
129    /* TODO */
130    return 0;
131}
132
133size_t wxPrefConfig::GetNumberOfGroups(bool WXUNUSED(bRecursive)) const
134{
135    /* TODO */
136    return 0;
137}
138
139// ----------------------------------------------------------------------------
140// tests for existence
141// ----------------------------------------------------------------------------
142
143bool wxPrefConfig::HasGroup(const wxString& key) const
144{
145    /* TODO */
146    return false;
147}
148
149bool wxPrefConfig::HasEntry(const wxString& key) const
150{
151    /* TODO */
152    return false;
153}
154
155wxConfigBase::EntryType wxPrefConfig::GetEntryType(const wxString& key) const
156{
157    /* TODO */
158    return wxConfigBase::Type_Unknown;
159}
160
161// ----------------------------------------------------------------------------
162// reading/writing
163// ----------------------------------------------------------------------------
164
165bool wxPrefConfig::DoReadString(const wxString& key, wxString *pStr) const
166{
167    /* TODO */
168    return false;
169}
170
171// this exactly reproduces the string version above except for ExpandEnvVars(),
172// we really should avoid this code duplication somehow...
173
174bool wxPrefConfig::DoReadLong(const wxString& key, long *plResult) const
175{
176    /* TODO */
177    return false;
178}
179
180bool wxPrefConfig::DoWriteString(const wxString& key, const wxString& szValue)
181{
182    /* TODO */
183    return false;
184}
185
186bool wxPrefConfig::DoWriteLong(const wxString& key, long lValue)
187{
188    /* TODO */
189    return false;
190}
191
192// ----------------------------------------------------------------------------
193// renaming
194// ----------------------------------------------------------------------------
195
196bool wxPrefConfig::RenameEntry(const wxString& oldName, const wxString& newName)
197{
198    /* TODO */
199    return false;
200}
201
202bool wxPrefConfig::RenameGroup(const wxString& oldName, const wxString& newName)
203{
204    /* TODO */
205    return false;
206}
207
208// ----------------------------------------------------------------------------
209// deleting
210// ----------------------------------------------------------------------------
211
212bool wxPrefConfig::DeleteEntry(const wxString& value, bool bGroupIfEmptyAlso)
213{
214    /* TODO */
215    return false;
216}
217
218bool wxPrefConfig::DeleteGroup(const wxString& key)
219{
220    /* TODO */
221    return false;
222}
223
224bool wxPrefConfig::DeleteAll()
225{
226    /* TODO */
227    return false;
228}
229
230#endif // wxUSE_CONFIG && wxUSE_CONFIG_NATIVE
231