105 lines
3.2 KiB
C++
105 lines
3.2 KiB
C++
//
|
|
// Copyright 2005 The Android Open Source Project
|
|
//
|
|
// Preferences file access.
|
|
//
|
|
#ifndef _SIM_PREFERENCES_H
|
|
#define _SIM_PREFERENCES_H
|
|
|
|
#include "tinyxml.h"
|
|
|
|
/*
|
|
* This class provides access to a preferences file. It's possible to
|
|
* have more than one instance, though it's probably unwise to have multiple
|
|
* objects for the same file on disk.
|
|
*
|
|
* All value are stored as strings. The class doesn't really try to
|
|
* enforce type safety, but it will complain if you try to do something
|
|
* nonsensical (like convert "foo" to an integer).
|
|
*/
|
|
class Preferences {
|
|
public:
|
|
Preferences(void) :
|
|
mpDoc(NULL), mDirty(false)
|
|
{}
|
|
~Preferences(void) {
|
|
delete mpDoc;
|
|
}
|
|
|
|
/* load all preferences from a file */
|
|
bool Load(const char* fileName);
|
|
|
|
/* save all preferences to a file */
|
|
bool Save(const char* fileName);
|
|
|
|
/* create new preferences set (use when file does not exist) */
|
|
bool Create(void);
|
|
|
|
/*
|
|
* Retrieve a value from the preferences database.
|
|
*
|
|
* These return "false" if the value was not found or could not be
|
|
* converted to the expected type. The value pointed to be the second
|
|
* arg is guaranteed to be left undisturbed in this case.
|
|
*
|
|
* The value set by GetString(const char*, char**) will be set to
|
|
* newly-allocated storage that must be freed with "delete[]". This
|
|
* is done instead of returning a const char* because it's unclear
|
|
* what guarantees TinyXml makes wrt string lifetime (especially in
|
|
* a multithreaded environment).
|
|
*/
|
|
bool GetBool(const char* name, bool* pVal) const;
|
|
bool GetInt(const char* name, int* pInt) const;
|
|
bool GetDouble(const char* name, double* pDouble) const;
|
|
bool GetString(const char* name, char** pVal) const;
|
|
bool GetString(const char* name, wxString& str) const;
|
|
|
|
/*
|
|
* Set a value in the database.
|
|
*/
|
|
void SetBool(const char* name, bool val);
|
|
void SetInt(const char* name, int val);
|
|
void SetDouble(const char* name, double val);
|
|
void SetString(const char* name, const char* val);
|
|
|
|
/*
|
|
* Just test for existence.
|
|
*/
|
|
bool Exists(const char* name) const;
|
|
|
|
/*
|
|
* Remove a <pref> from the config file.
|
|
*/
|
|
bool RemovePref(const char* name);
|
|
|
|
/*
|
|
* Get the value of the "dirty" flag.
|
|
*/
|
|
bool GetDirty(void) const { return mDirty; }
|
|
|
|
private:
|
|
/* Implementation of getters */
|
|
bool _GetBool(TiXmlElement* pElem, bool* pVal) const;
|
|
bool _GetInt(TiXmlElement* pElem, int* pInt) const;
|
|
bool _GetDouble(TiXmlElement* pElem, double* pDouble) const;
|
|
bool _GetString(TiXmlElement* pElem, wxString& str) const;
|
|
|
|
/* this can be used to generate some defaults */
|
|
void SetDefaults(void);
|
|
|
|
/* locate the named preference */
|
|
TiXmlNode* _FindNode(const char* type, const char* name) const;
|
|
TiXmlNode* FindPref(const char* str) const;
|
|
/* like FindPref, but returns a TiXmlElement */
|
|
TiXmlElement* FindPrefElement(const char* str) const;
|
|
/* add a new preference entry */
|
|
TiXmlElement* AddPref(const char* str);
|
|
/* removes a node */
|
|
bool _RemoveNode(TiXmlNode* pNode);
|
|
|
|
TiXmlDocument* mpDoc;
|
|
bool mDirty;
|
|
};
|
|
|
|
#endif // _SIM_PREFERENCES_H
|