5 #include <wx/fileconf.h>
7 #include "preferences.h"
11 void SavePreferences();
12 void LoadPreferences();
14 XABPreferences::XABPreferences(wxString PreferencesFilename){
17 wxString fullprefpath;
21 bool accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
22 accountsslvalid, accountusernamevalid, accountpasswordvalid,
23 accountdirprefixvalid, accountdirvalid, accountrefreshvalid = FALSE;
25 bool preaccountstage = FALSE;
26 bool isvalidaccount = FALSE;
27 bool isvalidsection = FALSE;
29 wxString accountaddress;
31 long accountport = 8080;
34 wxString accountusername;
35 wxString accountpassword;
36 wxString accountdirprefix;
43 wxString segmentvalue;
47 fullprefpath.Append(PreferencesFilename);
48 fullprefpath.Append(wxT("settings"));
50 wxFileConfig *settingfile = new wxFileConfig("", "", fullprefpath);
53 settingfile->Read(wxT("SaveWindowPosition"), &ValueInc);
55 if (ValueInc == wxT("true")){
58 wxRect WindowPosition;
60 long PosX, PosY, PosH, PosW = 0;
62 bool PosXValid, PosYValid, PosHValid, PosWValid = FALSE;
64 PosXValid = settingfile->Read(wxT("WindowPositionX"), &PosX);
65 PosYValid = settingfile->Read(wxT("WindowPositionY"), &PosY);
66 PosHValid = settingfile->Read(wxT("WindowPositionHeight"), &PosH);
67 PosWValid = settingfile->Read(wxT("WindowPositionWidth"), &PosW);
69 if (PosXValid == TRUE && PosYValid == TRUE && PosHValid == TRUE && PosWValid == TRUE){
71 WindowPosition.SetX(PosX);
72 WindowPosition.SetY(PosY);
73 WindowPosition.SetHeight(PosH);
74 WindowPosition.SetWidth(PosW);
78 WindowPosition.SetX(-1);
79 WindowPosition.SetY(-1);
80 WindowPosition.SetHeight(500);
81 WindowPosition.SetWidth(300);
85 SetMainWindowData(WindowPosition);
89 settingfile->Read(wxT("HideLocalAddressBooks"), &ValueInc);
91 if (ValueInc == wxT("true")){
100 fullprefpath.Clear();
101 fullprefpath.Append(PreferencesFilename);
102 fullprefpath.Append(wxT("accounts"));
104 wxFileConfig *cfgfile = new wxFileConfig("AddressBook", "Xestia", fullprefpath);
106 wxString EntryName, EntryValue;
107 wxString AccAdr, AccUsr, AccPass, AccPrefix, AccDir;
110 int AccRef, AccPort = 0;
112 long subitemindex = 0;
113 bool ContinueAcc = TRUE;
114 bool ContinueProc = TRUE;
116 ContinueAcc = cfgfile->GetFirstGroup(accountname, itemindex);
120 cfgfile->SetPath(accountname);
121 //ContinueProc = cfgfile->GetFirstEntry(EntryName, subitemindex);
122 cfgfile->Read(wxT("type"), &EntryValue);
124 if (EntryValue == wxT("Local")){
126 // Get the account directory.
128 cfgfile->Read(wxT("accountdir"), &AccDir);
130 if (AccDir.Len() > 4){
132 accountdirvalid = TRUE;
136 accountdirvalid = FALSE;
140 if (accountdirvalid == TRUE){
142 accounts.AddAccount(accountname, wxT("Local"), wxT(""), 0,
148 } else if (EntryValue == wxT("CardDAV")){
150 cfgfile->Read(wxT("accountdir"), &AccDir);
151 accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr);
152 accountportvalid = cfgfile->Read(wxT("port"), &AccPort);
153 accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc);
154 if (AccSSLInc == wxT("true")){
157 accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr);
158 accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass);
159 accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix);
160 accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef);
162 if (AccDir.Len() > 4){
164 accountdirvalid = TRUE;
168 // Make sure it is not bigger than 65535 or less than 1.
169 // If so, default to port 8008.
171 if (accountport < 1 || accountport > 65535){
173 accountportvalid = TRUE;
176 accounts.AddAccount(accountname, wxT("CardDAV"), AccAdr, AccPort,
177 AccSSL, AccUsr, AccPass,
178 AccPrefix, AccDir, AccRef);
182 // Clear up for the next account.
184 accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
185 accountsslvalid, accountusernamevalid, accountpasswordvalid,
186 accountdirprefixvalid, accountdirvalid, accountrefreshvalid, accountssl,
187 isvalidaccount, isvalidsection = FALSE;
195 accountaddress.Clear();
199 accountusername.Clear();
200 accountpassword.Clear();
201 accountdirprefix.Clear();
202 preaccountstage = TRUE;
204 cfgfile->SetPath(wxT("/"));
205 ContinueAcc = cfgfile->GetNextGroup(accountname, itemindex);
210 XABPreferences::~XABPreferences(){
214 bool XABPreferences::GetBoolData(wxString SettingName){
216 if (SettingName == wxT("SaveWindowPosition")) { return SaveWindowPos; }
217 else if (SettingName == wxT("HideLocalAddressBooks")) { return HideLocalABs; }
223 wxRect XABPreferences::GetMainWindowData(){
225 return MainWindowData;
229 void XABPreferences::SetMainWindowData(wxRect WindowData){
231 MainWindowData = WindowData;
237 XABPrefAccounts::XABPrefAccounts(){
241 int XABPrefAccounts::AddAccount(wxString NewAccName,
243 wxString NewAccAddress,
248 wxString NewAccDirPrefix,
253 AccountName.Add(NewAccName, 1);
254 AccountType.Add(NewAccType, 1);
255 AccountAddress.Add(NewAccAddress, 1);
256 AccountPort.Add(NewAccPort, 1);
257 AccountSSL.Add(NewAccSSL, 1);
258 AccountUsername.Add(NewAccUser, 1);
259 AccountPassword.Add(NewAccPass, 1);
260 DirectoryPrefix.Add(NewAccDirPrefix, 1);
261 AccountDirectory.Add(NewAccDir, 1);
262 AccountRefresh.Add(NewAccRefresh, 1);
270 int XABPrefAccounts::GetCount(){
272 return AccountsCount;
276 wxString XABPrefAccounts::GetAccountName(int AccountNum){
278 if (AccountNum > AccountsCount){
282 return AccountName[AccountNum];
286 wxString XABPrefAccounts::GetAccountType(int AccountNum){
288 if (AccountNum > AccountsCount){
292 return AccountType[AccountNum];
296 wxString XABPrefAccounts::GetAccountAddress(int AccountNum){
298 if (AccountNum > AccountsCount){
302 return AccountAddress[AccountNum];
306 int XABPrefAccounts::GetAccountPort(int AccountNum){
308 if (AccountNum > AccountsCount){
312 return AccountPort[AccountNum];
316 bool XABPrefAccounts::GetAccountSSL(int AccountNum){
318 if (AccountNum > AccountsCount){
322 return AccountSSL[AccountNum];
326 wxString XABPrefAccounts::GetAccountUsername(int AccountNum){
328 if (AccountNum > AccountsCount){
332 return AccountUsername[AccountNum];
336 wxString XABPrefAccounts::GetAccountPassword(int AccountNum){
338 if (AccountNum > AccountsCount){
342 return AccountPassword[AccountNum];
346 wxString XABPrefAccounts::GetAccountDirectory(int AccountNum){
348 if (AccountNum > AccountsCount){
352 return AccountDirectory[AccountNum];
356 wxString XABPrefAccounts::GetAccountDirPrefix(int AccountNum){
358 if (AccountNum > AccountsCount){
362 return DirectoryPrefix[AccountNum];
366 long XABPrefAccounts::GetAccountRefresh(int AccountNum){
368 if (AccountNum > AccountsCount){
372 return AccountRefresh[AccountNum];