#ifndef __OPTIONS_H__ #define __OPTIONS_H__ enum interfaceOptions { OPTION_NUMTRANSFERS = OPTIONS_ENGINE_NUM, OPTION_ASCIIBINARY, OPTION_ASCIIFILES, OPTION_ASCIINOEXT, OPTION_ASCIIDOTFILE, OPTION_THEME, OPTION_LANGUAGE, OPTION_LASTSERVERPATH, OPTION_CONCURRENTDOWNLOADLIMIT, OPTION_CONCURRENTUPLOADLIMIT, OPTION_UPDATECHECK, OPTION_UPDATECHECK_INTERVAL, OPTION_UPDATECHECK_LASTDATE, OPTION_UPDATECHECK_NEWVERSION, OPTION_UPDATECHECK_URL, OPTION_DEBUG_MENU, OPTION_FILEEXISTS_DOWNLOAD, OPTION_FILEEXISTS_UPLOAD, OPTION_ASCIIRESUME, OPTION_GREETINGVERSION, OPTION_ONETIME_DIALOGS, OPTION_SHOW_TREE_LOCAL, OPTION_SHOW_TREE_REMOTE, OPTION_FILEPANE_LAYOUT, OPTION_FILEPANE_SWAP, OPTION_LASTLOCALDIR, OPTION_FILELIST_DIRSORT, OPTION_QUEUE_SUCCESSFUL_AUTOCLEAR, OPTION_QUEUE_COLUMN_WIDTHS, OPTION_LOCALFILELIST_COLUMN_WIDTHS, OPTION_REMOTEFILELIST_COLUMN_WIDTHS, OPTION_WINDOW_POSITION, OPTION_LOCALFILELIST_SORTORDER, OPTION_REMOTEFILELIST_SORTORDER, OPTION_TIME_FORMAT, OPTION_DATE_FORMAT, OPTION_SHOW_MESSAGELOG, OPTION_SHOW_QUEUE, OPTION_SIZE_FORMAT, OPTION_SIZE_USETHOUSANDSEP, // Has to be last element OPTIONS_NUM }; struct t_OptionsCache { bool cached; int numValue; wxString strValue; }; class CXmlFile; class TiXmlElement; class COptions : public COptionsBase { public: virtual int GetOptionVal(unsigned int nID); virtual wxString GetOption(unsigned int nID); virtual bool SetOption(unsigned int nID, int value); virtual bool SetOption(unsigned int nID, wxString value); bool SetOptionNoSave(unsigned int nID, int value); bool SetOptionNoSave(unsigned int nID, wxString value); void SetLastServer(const CServer& server); bool GetLastServer(CServer& server); static COptions* Get(); static void Init(); static void Destroy(); void Import(TiXmlElement* pElement); void SaveColumnWidths(const wxListCtrl* const pListCtrl, unsigned int optionId); bool ReadColumnWidths(unsigned int optionId, unsigned int count, unsigned long* widths); protected: COptions(); virtual ~COptions(); int Validate(unsigned int nID, int value); wxString Validate(unsigned int nID, wxString value); void SetXmlValue(unsigned int nID, wxString value); bool GetXmlValue(unsigned int nID, wxString &value, TiXmlElement* settings = 0); // path is element path below document root, separated by slashes void SetServer(wxString path, const CServer& server); bool GetServer(wxString path, CServer& server); void CreateSettingsXmlElement(); CXmlFile* m_pXmlFile; t_OptionsCache m_optionsCache[OPTIONS_NUM]; bool m_acquired; CServer* m_pLastServer; static COptions* m_theOptions; }; #endif //__OPTIONS_H__