Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added comments to describe functions in common/preferences.cpp
[xestiaab/.git] / source / common / preferences.cpp
1 // preferences.cpp - Preferences subroutines.
2 //
3 // (c) 2012-2015 Xestia Software Development.
4 //
5 // This file is part of Xestia Address Book.
6 //
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
10 //
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include <iostream>
20 #include <iomanip>
21 #include <ios>
22 #include <string>
23 #include <wx/fileconf.h>
25 #include "preferences.h"
27 using namespace std;
29 void SavePreferences();
30 void LoadPreferences();
32 XABPreferences::XABPreferences(wxString PreferencesFilename){
34         // Load the settings into the XABPreferences object using the
35         // settings file received in PreferencesFilename.
37         wxString fullprefpath;
38     
39         bool accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
40                 accountsslvalid, accountusernamevalid, accountpasswordvalid,
41                 accountdirprefixvalid, accountdirvalid, accountrefreshvalid = FALSE;
42     
43         bool preaccountstage = FALSE;
44         bool isvalidaccount = FALSE;
45         bool isvalidsection = FALSE;
46         wxString accountname;
47         wxString accountaddress;
48         wxString accounttype;
49         long accountport = 8080;
50         long accountrefresh;
51         bool accountssl;
52         wxString accountusername;
53         wxString accountpassword;
54         wxString accountdirprefix;
55         wxString accountdir;
56     
57         wxString firstchar;
58         string s;
60         wxString segmentname;
61         wxString segmentvalue;
62     
63         // Load the settings.
64     
65         fullprefpath.Append(PreferencesFilename);
66         fullprefpath.Append(wxT("settings"));
68         wxFileConfig *settingfile = new wxFileConfig("", "", fullprefpath);
69     
70         wxString ValueInc;
71         settingfile->Read(wxT("SaveWindowPosition"), &ValueInc);
72     
73         if (ValueInc == wxT("true")){
74                 
75                 SaveWindowPos = TRUE;
76                 wxRect WindowPosition;
77         
78                 long PosX, PosY, PosH, PosW = 0;
80                 bool PosXValid, PosYValid, PosHValid, PosWValid = FALSE;
82                 PosXValid = settingfile->Read(wxT("WindowPositionX"), &PosX);
83                 PosYValid = settingfile->Read(wxT("WindowPositionY"), &PosY);
84                 PosHValid = settingfile->Read(wxT("WindowPositionHeight"), &PosH);
85                 PosWValid = settingfile->Read(wxT("WindowPositionWidth"), &PosW);
87                 if (PosXValid == TRUE && PosYValid == TRUE && PosHValid == TRUE && PosWValid == TRUE){
89                         WindowPosition.SetX((int)PosX);
90                         WindowPosition.SetY((int)PosY);
91                         WindowPosition.SetHeight((int)PosH);
92                         WindowPosition.SetWidth((int)PosW);
94                 } else {
96                         WindowPosition.SetX(-1);
97                         WindowPosition.SetY(-1);
98                         WindowPosition.SetHeight(500);
99                         WindowPosition.SetWidth(300);
101                 }
103                 SetMainWindowData(WindowPosition);
104         
105         }
107         settingfile->Read(wxT("HideLocalAddressBooks"), &ValueInc);
108     
109         if (ValueInc == wxT("true")){
110                 HideLocalABs = TRUE;
111         }
112     
113         delete settingfile;
114         settingfile = NULL;
115     
116         // Load the accounts.
117     
118         fullprefpath.Clear();
119         fullprefpath.Append(PreferencesFilename);
120         fullprefpath.Append(wxT("accounts"));
121  
122         wxFileConfig *cfgfile = new wxFileConfig("AddressBook", "Xestia", fullprefpath);
123     
124         wxString EntryName, EntryValue;
125         wxString AccAdr, AccUsr, AccPass, AccPrefix, AccDir;
126         wxString AccSSLInc;
127         bool AccSSL = FALSE;
128         int AccRef, AccPort = 0;
129         long itemindex = 0;
130         bool ContinueAcc = TRUE;
131     
132         ContinueAcc = cfgfile->GetFirstGroup(accountname, itemindex);
133     
134         while (ContinueAcc){
136                 cfgfile->SetPath(accountname);
137                 cfgfile->Read(wxT("type"), &EntryValue);
138          
139                 if (EntryValue == wxT("Local")){
140         
141                         // Get the account directory.
142         
143                         cfgfile->Read(wxT("accountdir"), &AccDir);
144         
145                         if (AccDir.Len() > 4){
147                                 accountdirvalid = TRUE;
148             
149                         } else {
151                                 accountdirvalid = FALSE;
153                         }
154             
155                         if (accountdirvalid == TRUE){
156             
157                                 accounts.AddAccount(accountname, wxT("Local"), wxT(""), 0,
158                                         0, wxT(""), wxT(""), 
159                                         wxT(""), AccDir, 0);
160             
161                         }
162         
163                 } else if (EntryValue == wxT("CardDAV")){
165                         cfgfile->Read(wxT("accountdir"), &AccDir);
166                         accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr);
167                         accountportvalid = cfgfile->Read(wxT("port"), &AccPort);
168                         accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc);
169                         if (AccSSLInc == wxT("true")){
170                                 AccSSL = TRUE;
171                         }
172                         accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr);
173                         accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass);
174                         accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix);
175                         accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef);
176             
177                         if (AccDir.Len() > 4){
179                                 accountdirvalid = TRUE;
180             
181                         }
182                 
183                         // Make sure it is not bigger than 65535 or less than 1.
184                         // If so, default to port 8008.
185                 
186                         if (accountport < 1 || accountport > 65535){
187                                 accountport = 8008;
188                                 accountportvalid = TRUE;
189                         }
190             
191                         accounts.AddAccount(accountname, wxT("CardDAV"), AccAdr, AccPort,
192                                 AccSSL, AccUsr, AccPass, 
193                                 AccPrefix, AccDir, AccRef);
194             
195                 }
197                 // Clear up for the next account.
198     
199                 accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
200                 accountsslvalid, accountusernamevalid, accountpasswordvalid,
201                 accountdirprefixvalid, accountdirvalid, accountrefreshvalid, accountssl,
202                 isvalidaccount, isvalidsection = FALSE;
203         
204                 AccAdr.Clear();
205                 AccDir.Clear();
206                 AccUsr.Clear();
207                 AccPass.Clear();
208                 AccPrefix.Clear();
209                 accountname.Clear();
210                 accountaddress.Clear();
211                 accounttype.Clear();
212                 accountport = 0;
213                 accountrefresh = 0;
214                 accountusername.Clear();
215                 accountpassword.Clear();
216                 accountdirprefix.Clear();
217                 preaccountstage = TRUE;
218     
219                 cfgfile->SetPath(wxT("/"));
220                 ContinueAcc = cfgfile->GetNextGroup(accountname, itemindex);
221     
222         }
223   
226 XABPreferences::~XABPreferences(){
227         
230 bool XABPreferences::GetBoolData(wxString SettingName){
232         // GetBoolData from the XABPreferences object.
234         if (SettingName == wxT("SaveWindowPosition")) { return SaveWindowPos; }
235         else if (SettingName == wxT("HideLocalAddressBooks")) { return HideLocalABs; }
236         
237         return FALSE;
241 wxRect XABPreferences::GetMainWindowData(){
242         
243         // Return the main window data as a wxRect object.
244         
245         return MainWindowData;
249 void XABPreferences::SetMainWindowData(wxRect WindowData){
251         // Set the main window data from a wxRect object.
253         MainWindowData = WindowData;
257 // XABPrefAccounts
259 XABPrefAccounts::XABPrefAccounts(){
261         // Setup the default values for XABPrefAccounts.
263         AccountsCount = 0;
264         
267 int XABPrefAccounts::AddAccount(wxString NewAccName,
268         wxString NewAccType,
269         wxString NewAccAddress,
270         int NewAccPort,
271         int NewAccSSL,
272         wxString NewAccUser,
273         wxString NewAccPass,
274         wxString NewAccDirPrefix,
275         wxString NewAccDir,
276         long NewAccRefresh
277 ){
278   
279         // Add an account to the list of accounts in the
280         // XABPrefAccounts object.
281   
282         AccountName.Add(NewAccName, 1);
283         AccountType.Add(NewAccType, 1);
284         AccountAddress.Add(NewAccAddress, 1);
285         AccountPort.Add(NewAccPort, 1);
286         AccountSSL.Add(NewAccSSL, 1);
287         AccountUsername.Add(NewAccUser, 1);
288         AccountPassword.Add(NewAccPass, 1);
289         DirectoryPrefix.Add(NewAccDirPrefix, 1);
290         AccountDirectory.Add(NewAccDir, 1);
291         AccountRefresh.Add(NewAccRefresh, 1);
292     
293         AccountsCount++;
294     
295         return 0;
299 int XABPrefAccounts::GetCount(){
300   
301         // Get the count of accounts in the XABPrefAccounts object.
302   
303         return AccountsCount;
304   
307 wxString XABPrefAccounts::GetAccountName(int AccountNum){
308  
309         // Get the account name.
310  
311         if (AccountNum > AccountsCount){
312                 return wxT("");
313         }
314   
315         return AccountName[AccountNum];
316   
319 wxString XABPrefAccounts::GetAccountType(int AccountNum){
320  
321         // Get the account type.
322  
323         if (AccountNum > AccountsCount){
324                 return wxT("");
325         }
326   
327         return AccountType[AccountNum];
328   
331 wxString XABPrefAccounts::GetAccountAddress(int AccountNum){
332  
333         // Get the account server address.
334  
335         if (AccountNum > AccountsCount){
336                 return wxT("");
337         }
338   
339         return AccountAddress[AccountNum];
340   
343 int XABPrefAccounts::GetAccountPort(int AccountNum){
344  
345         // Get the account server port.
346  
347         if (AccountNum > AccountsCount){
348                 return 0;
349         }
350   
351         return AccountPort[AccountNum];
352   
355 bool XABPrefAccounts::GetAccountSSL(int AccountNum){
356  
357         // Get the account server SSL support.
358  
359         if (AccountNum > AccountsCount){
360                 return wxT("");
361         }
362   
363         return AccountSSL[AccountNum];
364   
367 wxString XABPrefAccounts::GetAccountUsername(int AccountNum){
368  
369         // Get the account username.
370  
371         if (AccountNum > AccountsCount){
372                 return wxT("");
373         }
374   
375         return AccountUsername[AccountNum];
376   
379 wxString XABPrefAccounts::GetAccountPassword(int AccountNum){
380  
381         // Get the account password.
382  
383         if (AccountNum > AccountsCount){
384                 return wxT("");
385         }
386   
387         return AccountPassword[AccountNum];
388   
391 wxString XABPrefAccounts::GetAccountDirectory(int AccountNum){
392  
393         // Get the account directory.
394  
395         if (AccountNum > AccountsCount){
396                 return wxT("");
397         }
398   
399         return AccountDirectory[AccountNum];
400   
403 wxString XABPrefAccounts::GetAccountDirPrefix(int AccountNum){
404  
405         // Get the account server directory prefix.
406  
407         if (AccountNum > AccountsCount){
408                 return wxT("");
409         }
410   
411         return DirectoryPrefix[AccountNum];
412   
415 long XABPrefAccounts::GetAccountRefresh(int AccountNum){
417         // Get the account refresh time.
419         if (AccountNum > AccountsCount){
420                 return 0;
421         }
422   
423         return AccountRefresh[AccountNum];
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy