JX Application Framework
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
JPrefsFile Class Reference

#include <JPrefsFile.h>

Inheritance diagram for JPrefsFile:
[legend]

Classes

class  NoHomeDirectory
 

Public Member Functions

 ~JPrefsFile () override
 
void GetData (const JPrefID &id, std::string *data) const
 
void SetData (const JPrefID &id, std::ostringstream &data)
 
void SetData (const JPrefID &id, const std::string &data)
 
void SetData (const JPrefID &id, const JString &data)
 
void RemoveData (const JPrefID &id)
 
- Public Member Functions inherited from JFileArray
 ~JFileArray () override
 
const JStringGetFileName () const
 
JFileVersion GetVersion () const
 
void SetVersion (const JFileVersion newVersion)
 
void GetItem (const JFAIndex &index, std::string *data) const
 
void GetItem (const JFAID &id, std::string *data) const
 
void SetItem (const JFAIndex &index, const JString &data)
 
void SetItem (const JFAID &id, const JString &data)
 
void InsertItemAtIndex (const JFAIndex &index, const JString &data)
 
void PrependItem (const JString &data)
 
void AppendItem (const JString &data)
 
void SetItem (const JFAIndex &index, std::ostringstream &dataStream)
 
void SetItem (const JFAID &id, std::ostringstream &dataStream)
 
void InsertItemAtIndex (const JFAIndex &index, std::ostringstream &dataStream)
 
void PrependItem (std::ostringstream &dataStream)
 
void AppendItem (std::ostringstream &dataStream)
 
void RemoveItem (const JFAIndex &index)
 
void RemoveItem (const JFAID &id)
 
void MoveItemToIndex (const JFAIndex &currentIndex, const JFAIndex &newIndex)
 
void SwapItems (const JFAIndex &index1, const JFAIndex &index2)
 
bool IndexToID (const JFAIndex &index, JFAID *id) const
 
bool IDToIndex (const JFAID &id, JFAIndex *index) const
 
bool IndexValid (const JFAIndex &index) const
 
bool IDValid (const JFAID &id) const
 
bool WillFlushChanges () const
 
void ShouldFlushChanges (const bool write)
 
void FlushChanges ()
 
- Public Member Functions inherited from JCollection
 JCollection ()
 
 JCollection (const JCollection &source)
 
 ~JCollection () override
 
JCollectionoperator= (const JCollection &source)
 
JSize GetItemCount () const
 
bool IsEmpty () const
 
bool IndexValid (const JIndex index) const
 
JIndex GetIndexFromEnd (const JIndex index) const
 
JString ToString () const override
 
- Public Member Functions inherited from JBroadcaster
 JBroadcaster ()
 
virtual ~JBroadcaster ()
 
JBroadcasteroperator= (const JBroadcaster &source)
 
bool HasSenders () const
 
JSize GetSenderCount () const
 
bool HasRecipients () const
 
JSize GetRecipientCount () const
 
template<class T >
void ListenTo (const JBroadcaster *sender, const std::function< void(const T &)> &f)
 

Static Public Member Functions

static JError Create (const JString &fileNameStem, JPrefsFile **obj, const CreateAction action=kFailIfOpen)
 
static JError OKToCreate (const JString &fileNameStem, JString *fullName, const CreateAction action=kFailIfOpen)
 
static JError GetFullName (const JString &fileNameStem, JString *fullName)
 
- Static Public Member Functions inherited from JFileArray
static JError Create (const JString &fileName, const JUtf8Byte *fileSignature, JFileArray **obj, const CreateAction action=kFailIfOpen)
 
static JError OKToCreateBase (const JString &fileName, const JUtf8Byte *fileSignature, const CreateAction action=kFailIfOpen)
 
static JError Create (JFileArray *theEnclosingFile, const JFAID &enclosureItemID, JFileArray **obj)
 
static JError OKToCreateEmbedded (JFileArray *theEnclosingFile, const JFAID &enclosureItemID)
 

Static Public Attributes

static const JUtf8BytekNoHomeDirectory = "NoHomeDirectory::JPrefsFile"
 
- Static Public Attributes inherited from JFileArray
static const JFileVersion kInitialVersion = 0
 
static const JUtf8BytekItemInserted = "ItemInserted::JFileArray"
 
static const JUtf8BytekItemRemoved = "ItemRemoved::JFileArray"
 
static const JUtf8BytekItemMoved = "ItemMoved::JFileArray"
 
static const JUtf8BytekItemsSwapped = "ItemsSwapped::JFileArray"
 
static const JUtf8BytekItemChanged = "ItemChanged::JFileArray"
 
static const JUtf8BytekFileNotWritable = "FileNotWritable::JFileArray"
 
static const JUtf8BytekFileAlreadyOpen = "FileAlreadyOpen::JFileArray"
 
static const JUtf8BytekWrongSignature = "WrongSignature::JFileArray"
 
static const JUtf8BytekNotEmbeddedFile = "NotEmbeddedFile::JFileArray"
 

Protected Member Functions

 JPrefsFile (const JString &fileName, const CreateAction action)
 
- Protected Member Functions inherited from JFileArray
 JFileArray (const JString &fileName, const JUtf8Byte *fileSignature, const CreateAction action)
 
 JFileArray (JFileArray *theEnclosingFile, const JFAID &enclosureItemID)
 
JFileArrayIndexGetFileArrayIndex ()
 
- Protected Member Functions inherited from JCollection
void ItemAdded ()
 
void ItemRemoved ()
 
void SetItemCount (const JSize newItemCount)
 
- Protected Member Functions inherited from JBroadcaster
 JBroadcaster (const JBroadcaster &source)
 
void ListenTo (const JBroadcaster *sender)
 
void StopListening (const JBroadcaster *sender)
 
void ClearWhenGoingAway (const JBroadcaster *sender, void *pointerToMember)
 
void StopListening (const JBroadcaster *sender, const std::type_info &messageType)
 
template<class T >
void Send (JBroadcaster *recipient, const T &message)
 
template<class T >
void Broadcast (const T &message)
 
virtual void Receive (JBroadcaster *sender, const Message &message)
 
void SendWithFeedback (JBroadcaster *recipient, Message *message)
 
void BroadcastWithFeedback (Message *message)
 
virtual void ReceiveWithFeedback (JBroadcaster *sender, Message *message)
 
virtual void ReceiveGoingAway (JBroadcaster *sender)
 

Additional Inherited Members

- Public Types inherited from JFileArray
enum  CreateAction {
  kFailIfOpen ,
  kIgnoreIfOpen ,
  kDeleteIfOpen ,
  kTryWaitUntilCanOpen ,
  kDeleteIfWaitTimeout
}
 
enum  { kUnsignedLongLength = 4 }
 

Detailed Description

Class to manage a preferences file.  The location of the file is system
dependent.  Thus, creating a JPrefsFile object only requires specifying
a stem for the file name.

    OS      Location
    --      --------
    UNIX    ~/.*.pref

Each item in the JPrefsFile has an id.  This id is specified when the
item is created, and -must- be unique.  The id is the only guaranteed way
to get at the data after it is created.

For convenience, SetData() automatically creates a new item if the
given id doesn't already exist.

We ignore the issue of the file signature because preferences files
are usually hidden from the user and should therefore be named to avoid
conflicts between programs.  The names serve as a sufficient signature.

There is still the problem of more than one program trying to open
the same file, however.  Derived classes are therefore still required
to write constructor functions.

Constructor & Destructor Documentation

◆ ~JPrefsFile()

JPrefsFile::~JPrefsFile ( )
override

◆ JPrefsFile()

JPrefsFile::JPrefsFile ( const JString fileName,
const CreateAction  action 
)
protected

Member Function Documentation

◆ Create()

JError JPrefsFile::Create ( const JString fileNameStem,
JPrefsFile **  obj,
const CreateAction  action = kFailIfOpen 
)
static

By forcing everyone to use this function, we avoid having to worry about errors within the class itself.

◆ GetData()

void JPrefsFile::GetData ( const JPrefID id,
std::string *  data 
) const
inline

◆ GetFullName()

JError JPrefsFile::GetFullName ( const JString fileNameStem,
JString fullName 
)
static

◆ OKToCreate()

JError JPrefsFile::OKToCreate ( const JString fileNameStem,
JString fullName,
const CreateAction  action = kFailIfOpen 
)
static

◆ RemoveData()

void JPrefsFile::RemoveData ( const JPrefID id)
inline

◆ SetData() [1/3]

void JPrefsFile::SetData ( const JPrefID id,
const JString data 
)

◆ SetData() [2/3]

void JPrefsFile::SetData ( const JPrefID id,
const std::string &  data 
)

◆ SetData() [3/3]

void JPrefsFile::SetData ( const JPrefID id,
std::ostringstream &  data 
)

Member Data Documentation

◆ kNoHomeDirectory

const JUtf8Byte * JPrefsFile::kNoHomeDirectory = "NoHomeDirectory::JPrefsFile"
static

The documentation for this class was generated from the following files: