Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added existing common code from Xestia Address Book
authorSteve Brokenshire <sbrokenshire@xestia.co.uk>
Sun, 25 Dec 2016 01:27:18 +0000 (01:27 +0000)
committerSteve Brokenshire <sbrokenshire@xestia.co.uk>
Sun, 25 Dec 2016 01:27:18 +0000 (01:27 +0000)
source/common/defaults.cpp [new file with mode: 0644]
source/common/defaults.h [new file with mode: 0644]
source/common/dirs.cpp [new file with mode: 0644]
source/common/dirs.h [new file with mode: 0644]
source/common/preferences.cpp [new file with mode: 0644]
source/common/preferences.h [new file with mode: 0644]

diff --git a/source/common/defaults.cpp b/source/common/defaults.cpp
new file mode 100644 (file)
index 0000000..51476de
--- /dev/null
@@ -0,0 +1,222 @@
+// defaults.cpp - Default settings subroutines.
+//
+// (c) 2012-2016 Xestia Software Development.
+//
+// This file is part of Xestia Calendar. Originally from Xestia Address Book.
+//
+// Xestia Calendar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Calendar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
+#include <wx/wx.h>
+#include <wx/ffile.h>
+
+void SetupDefaultCalendar(){
+    
+       // Setup the default calendar if there are none.
+    
+       // Check if the 'Default.local' directory exists.
+    
+       wxString DefaultLocalDir;
+    
+#if defined(__HAIKU__)
+        
+#elif defined(__WIN32__)
+    
+       DefaultLocalDir.Clear();
+       DefaultLocalDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultLocalDir.Append(wxT("\\Xestia\\Calendar\\accounts\\"));
+       DefaultLocalDir.Append(wxT("Default.local"));
+
+#elif defined(__APPLE__)
+
+       DefaultLocalDir.Clear();
+       DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultLocalDir.Append(wxT("/Library/Preferences/Xestia/Calendar/accounts/"));
+       DefaultLocalDir.Append(wxT("Default.local"));
+
+#else
+    
+       DefaultLocalDir.Clear();
+       DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultLocalDir.Append(wxT("/.xestiacal/accounts/"));
+       DefaultLocalDir.Append(wxT("Default.local"));
+
+#endif
+
+       if (wxDirExists(DefaultLocalDir) == FALSE){
+        
+               if (wxMkdir(DefaultLocalDir, 0740) == TRUE){
+       
+               }
+        
+       }
+    
+}
+
+void SetupDefaultSettings(){
+    
+       // Setup the default settings if they don't exist.
+    
+       // Setup default (non account) settings if they don't exist.
+    
+       wxString DefaultPrefDir;
+    
+#if defined(__HAIKU__)
+    
+    
+#elif defined(__WIN32__)
+    
+       DefaultPrefDir.Clear();
+       DefaultPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultPrefDir.Append(wxT("\\Xestia\\Calendar\\preferences\\"));
+    
+#elif defined(__APPLE__)
+    
+       DefaultPrefDir.Clear();
+       DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultPrefDir.Append(wxT("/Library/Preferences/Xestia/Calendar/preferences/"));
+    
+#else
+    
+       DefaultPrefDir.Clear();
+       DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultPrefDir.Append(wxT("/.xestiacal/preferences/"));
+    
+#endif
+    
+       // Create the accounts file if it doesn't exist.
+    
+       if (wxFileExists(DefaultPrefDir + wxT("accounts")) == FALSE){
+        
+               wxString AccountsFilename;
+               wxFFile AccountsFile;
+        
+               AccountsFilename = DefaultPrefDir;
+               AccountsFilename.Append(wxT("accounts"));
+        
+#if wxABI_VERSION < 20900
+               AccountsFile.Open(AccountsFilename.c_str(), wxT("w"));
+#else
+               AccountsFile.Open(AccountsFilename, wxT("w"));
+#endif
+        
+               AccountsFile.Write(wxT(""));
+        
+       }
+    
+       // Create the preferences file if it doesn't exist.
+    
+       if (wxFileExists(DefaultPrefDir + wxT("settings")) == FALSE){
+        
+               wxString PrefsFilename;
+               wxFFile PrefsFile;
+        
+               PrefsFilename = DefaultPrefDir;
+               PrefsFilename.Append(wxT("settings"));
+        
+#if wxABI_VERSION < 20900
+               PrefsFile.Open(PrefsFilename.c_str(), wxT("w"));
+#else
+               PrefsFile.Open(PrefsFilename, wxT("w"));
+#endif
+        
+               PrefsFile.Write(wxT("HideLocalCalendars=false\nSaveWindowPosition=true\n"));
+        
+       }
+    
+}
+
+void SetupDirectories(){
+    
+       // Create the directories if they don't exist.
+    
+       wxString DefaultSettingsDir;
+
+#if defined(__HAIKU__)
+    
+#elif defined(__WIN32__)
+    
+       DefaultSettingsDir.Clear();
+       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultSettingsDir.Append(wxT("\\Xestia\\"));
+    
+       if (wxDirExists(DefaultSettingsDir) == FALSE){
+        
+               // Create the directory.
+        
+               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){
+            
+               }
+        
+       }
+    
+       // 'Calendar' to the directory.
+    
+       DefaultSettingsDir.Append(wxT("\\Calendar\\"));
+    
+#elif defined(__APPLE__)
+    
+       DefaultSettingsDir.Clear();
+       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultSettingsDir.Append(wxT("/Library/Preferences/Xestia/"));
+    
+       if (wxDirExists(DefaultSettingsDir) == FALSE){
+        
+               // Create the directory.
+        
+               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){
+            
+               }
+        
+       }
+    
+       // Append 'Calendar' to the directory.
+    
+       DefaultSettingsDir.Append(wxT("/Calendar/"));
+    
+#else
+    
+       DefaultSettingsDir.Clear();
+       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultSettingsDir.Append(wxT("/.xestiacal/"));
+    
+#endif
+    
+       // Check if the directory exists.
+    
+       if (wxDirExists(DefaultSettingsDir) == FALSE){
+        
+               // Create the directory.
+        
+               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){         
+            
+               }
+        
+       }
+    
+       if (wxDirExists(DefaultSettingsDir + wxT("accounts")) == FALSE){
+        
+               if (wxMkdir(DefaultSettingsDir + wxT("accounts"), 0740) == TRUE){               
+            
+               }
+        
+       }
+    
+       if (wxDirExists(DefaultSettingsDir + wxT("preferences")) == FALSE){
+        
+               if (wxMkdir(DefaultSettingsDir + wxT("preferences"), 0740) == TRUE){            
+            
+               }
+        
+       }
+    
+}
\ No newline at end of file
diff --git a/source/common/defaults.h b/source/common/defaults.h
new file mode 100644 (file)
index 0000000..2147597
--- /dev/null
@@ -0,0 +1,29 @@
+// defaults.h - Default settings subroutines header.
+//
+// (c) 2012-2016 Xestia Software Development.
+//
+// This file is part of Xestia Calendar. Originally from Xestia Address Book.
+//
+// Xestia Calendar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Calendar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef COMMON_DEFAULTS_H
+#define COMMON_DEFAULTS_H
+
+void SetupDefaultCalendar();
+void SetupDefaultSettings();
+void SetupDirectories();
+
+#endif
\ No newline at end of file
diff --git a/source/common/dirs.cpp b/source/common/dirs.cpp
new file mode 100644 (file)
index 0000000..fa9442b
--- /dev/null
@@ -0,0 +1,253 @@
+// dirs.cpp - Directory subroutines.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Calendar. Originally from Xestia Address Book.
+//
+// Xestia Calendar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Calendar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
+#include <wx/wx.h>
+
+wxString GetUserDir()
+{
+    
+       // Get the user directory.
+    
+       wxString UserDir;
+    
+#if defined(__HAIKU__)
+        
+#elif defined(__WIN32__)
+    
+       UserDir.Clear();
+       UserDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       UserDir.Append(wxT("\\Xestia\\Calendar\\"));
+    
+#elif defined(__APPLE__)
+    
+       UserDir.Clear();
+       UserDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserDir.Append(wxT("/Library/Preferences/Xestia/Calendar/"));
+    
+#else
+    
+       UserDir.Clear();
+       UserDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserDir.Append(wxT("/.xestiacal/"));
+    
+#endif
+    
+       return UserDir;
+    
+}
+
+wxString GetUserPrefDir()
+{
+    
+       // Get the user preferences directory.
+    
+       wxString UserPrefDir;
+    
+#if defined(__HAIKU__)
+        
+#elif defined(__WIN32__)
+    
+       UserPrefDir.Clear();
+       UserPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       UserPrefDir.Append(wxT("\\Xestia\\Calendar\\preferences\\"));
+    
+#elif defined(__APPLE__)
+    
+       UserPrefDir.Clear();
+       UserPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserPrefDir.Append(wxT("/Library/Preferences/Xestia/Calendar/preferences/"));
+    
+#else
+    
+       UserPrefDir.Clear();
+       UserPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserPrefDir.Append(wxT("/.xestiacal/preferences/"));
+    
+#endif
+    
+       return UserPrefDir;
+    
+}
+
+wxString GetAccountDir(wxString AccName, bool ServerCert)
+{
+    
+       // Get the account directory.
+    
+       wxString AccountDir;
+    
+#if defined(__HAIKU__)
+    
+#elif defined(__WIN32__)
+    
+       AccountDir.Clear();
+       AccountDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       AccountDir.Append(wxT("\\Xestia\\Calendar\\accounts\\"));
+       AccountDir.Append(AccName);
+       AccountDir.Append(wxT("\\"));
+    
+       if (ServerCert == TRUE){
+               AccountDir.Append(wxT("server.crt"));
+       }
+    
+#elif defined(__APPLE__)
+    
+       AccountDir.Clear();
+       AccountDir.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountDir.Append(wxT("/Library/Preferences/Xestia/Calendar/accounts/"));
+       AccountDir.Append(AccName);
+       AccountDir.Append(wxT("/"));
+    
+       if (ServerCert == TRUE){
+               AccountDir.Append(wxT("server.crt"));
+       }
+    
+#else
+    
+       AccountDir.Clear();
+       AccountDir.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountDir.Append(wxT("/.xestiacal/accounts/"));
+       AccountDir.Append(AccName);
+       AccountDir.Append(wxT("/"));
+    
+       if (ServerCert == TRUE){
+               AccountDir.Append(wxT("server.crt"));
+       }
+    
+#endif
+    
+       return AccountDir;
+    
+}
+
+std::string GetAccountDir(std::string AccName, bool ServerCert)
+{
+    
+       // Get the account directory.
+    
+       std::string AccountDir;
+    
+#if defined(__HAIKU__)
+    
+#elif defined(__WIN32__)
+    
+       AccountDir.clear();
+       AccountDir.append(getenv("APPDATA"));
+       AccountDir.append("\\Xestia\\Calendar\\accounts\\");
+       AccountDir.append(AccName);
+       AccountDir.append("\\");
+    
+       if (ServerCert == true){
+               AccountDir.append("server.crt");
+       }
+    
+#elif defined(__APPLE__)
+    
+       AccountDir.clear();
+       AccountDir.append(getenv("HOME"));
+       AccountDir.append("/Library/Preferences/Xestia/Calendar/accounts/");
+       AccountDir.append(AccName);
+       AccountDir.append("/");
+    
+       if (ServerCert == true){
+               AccountDir.append("server.crt");
+       }
+    
+#else
+    
+       AccountDir.clear();
+       AccountDir.append(getenv("HOME"));
+       AccountDir.append("/.xestiacal/accounts/");
+       AccountDir.append(AccName);
+       AccountDir.append("/");
+    
+       if (ServerCert == true){
+               AccountDir.append("server.crt");
+       }
+
+#endif
+    
+       return AccountDir;
+    
+}
+
+wxString GetAccountsFile()
+{
+    
+       // Get the accounts preferences file.
+    
+       wxString AccountsFile;
+    
+#if defined(__HAIKU__)
+    
+#elif defined(__WIN32__)
+    
+       AccountsFile.Clear();
+       AccountsFile.Append(wxString::FromUTF8(getenv("APPDATA")));
+       AccountsFile.Append(wxT("\\Xestia\\Calendar\\preferences\\accounts"));
+    
+#elif defined(__APPLE__)
+    
+       AccountsFile.Clear();
+       AccountsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountsFile.Append(wxT("/Library/Preferences/Xestia/Calendar/preferences/accounts"));
+    
+#else
+    
+       AccountsFile.Clear();
+       AccountsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountsFile.Append(wxT("/.xestiacal/preferences/accounts"));
+    
+#endif
+    
+       return AccountsFile;
+    
+}
+
+wxString GetSettingsFile()
+{
+    
+       // Get the preferences general settings file.
+    
+       wxString SettingsFile;
+    
+#if defined(__HAIKU__)
+    
+#elif defined(__WIN32__)
+    
+       SettingsFile.Clear();
+       SettingsFile.Append(wxString::FromUTF8(getenv("APPDATA")));
+       SettingsFile.Append(wxT("\\Xestia\\Calendar\\preferences\\settings"));
+    
+#elif defined(__APPLE__)
+    
+       SettingsFile.Clear();
+       SettingsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       SettingsFile.Append(wxT("/Library/Preferences/Xestia/Calendar/preferences/settings"));
+    
+#else
+    
+       SettingsFile.Clear();
+       SettingsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       SettingsFile.Append(wxT("/.xestiacal/preferences/settings"));
+    
+#endif
+    
+       return SettingsFile;
+    
+}
\ No newline at end of file
diff --git a/source/common/dirs.h b/source/common/dirs.h
new file mode 100644 (file)
index 0000000..b0d443c
--- /dev/null
@@ -0,0 +1,31 @@
+// dirs.h - Directory subroutines header.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
+
+#ifndef DIRS_H
+#define DIRS_H
+
+#include <wx/wx.h>
+
+wxString GetUserDir();
+wxString GetUserPrefDir();
+wxString GetAccountDir(wxString AccName, bool ServerCert);
+std::string GetAccountDir(std::string AccName, bool ServerCert);
+wxString GetAccountsFile();
+wxString GetSettingsFile();
+
+#endif
\ No newline at end of file
diff --git a/source/common/preferences.cpp b/source/common/preferences.cpp
new file mode 100644 (file)
index 0000000..8c51693
--- /dev/null
@@ -0,0 +1,463 @@
+// preferences.cpp - Preferences subroutines.
+//
+// (c) 2012-2016 Xestia Software Development.
+//
+// This file is part of Xestia Calendar. Originally from Xestia Address Book.
+//
+// Xestia Calendar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Calendar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
+#include <iostream>
+#include <iomanip>
+#include <ios>
+#include <string>
+#include <wx/fileconf.h>
+
+#include "preferences.h"
+
+using namespace std;
+
+void SavePreferences();
+void LoadPreferences();
+
+XCALPreferences::XCALPreferences(wxString PreferencesFilename){
+
+       // Load the settings into the XCALPreferences object using the
+       // settings file received in PreferencesFilename.
+
+       wxString fullprefpath;
+    
+       bool accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
+               accountsslvalid, accountusernamevalid, accountpasswordvalid,
+               accountdirprefixvalid, accountdirvalid, accountrefreshvalid = FALSE;
+
+       bool preaccountstage = FALSE;
+       bool isvalidaccount = FALSE;
+       bool isvalidsection = FALSE;
+       wxString accountname;
+       wxString accountaddress;
+       wxString accounttype;
+       long accountport = 8080;
+       long accountrefresh;
+       bool accountssl;
+       wxString accountusername;
+       wxString accountpassword;
+       wxString accountdirprefix;
+       wxString accountdir;
+    
+       wxString firstchar;
+       string s;
+
+       wxString segmentname;
+       wxString segmentvalue;
+    
+       // Load the settings.
+    
+       fullprefpath.Append(PreferencesFilename);
+       fullprefpath.Append(wxT("settings"));
+
+       wxFileConfig *settingfile = new wxFileConfig("", "", fullprefpath);
+    
+       wxString ValueInc;
+       settingfile->Read(wxT("SaveWindowPosition"), &ValueInc);
+    
+       if (ValueInc == wxT("true")){
+               
+               SaveWindowPos = TRUE;
+               wxRect WindowPosition;
+       
+               long PosX, PosY, PosH, PosW = 0;
+
+               bool PosXValid, PosYValid, PosHValid, PosWValid = FALSE;
+
+               PosXValid = settingfile->Read(wxT("WindowPositionX"), &PosX);
+               PosYValid = settingfile->Read(wxT("WindowPositionY"), &PosY);
+               PosHValid = settingfile->Read(wxT("WindowPositionHeight"), &PosH);
+               PosWValid = settingfile->Read(wxT("WindowPositionWidth"), &PosW);
+
+               if (PosXValid == TRUE && PosYValid == TRUE && PosHValid == TRUE && PosWValid == TRUE){
+
+                       WindowPosition.SetX((int)PosX);
+                       WindowPosition.SetY((int)PosY);
+                       WindowPosition.SetHeight((int)PosH);
+                       WindowPosition.SetWidth((int)PosW);
+
+               } else {
+
+                       WindowPosition.SetX(-1);
+                       WindowPosition.SetY(-1);
+                       WindowPosition.SetHeight(500);
+                       WindowPosition.SetWidth(300);
+
+               }
+
+               SetMainWindowData(WindowPosition);
+       
+       }
+
+       settingfile->Read(wxT("HideLocalAddressBooks"), &ValueInc);
+    
+       if (ValueInc == wxT("true")){
+               HideLocalABs = TRUE;
+       }
+    
+       delete settingfile;
+       settingfile = NULL;
+    
+       // Load the accounts.
+    
+       fullprefpath.Clear();
+       fullprefpath.Append(PreferencesFilename);
+       fullprefpath.Append(wxT("accounts"));
+       wxFileConfig *cfgfile = new wxFileConfig("AddressBook", "Xestia", fullprefpath);
+    
+       wxString EntryName, EntryValue;
+       wxString AccAdr, AccUsr, AccPass, AccPrefix, AccDir;
+       wxString AccSSLInc;
+       bool AccSSL = FALSE;
+       int AccRef, AccPort = 0;
+       long itemindex = 0;
+       bool ContinueAcc = TRUE;
+    
+       ContinueAcc = cfgfile->GetFirstGroup(accountname, itemindex);
+    
+       while (ContinueAcc){
+
+               cfgfile->SetPath(accountname);
+               cfgfile->Read(wxT("type"), &EntryValue);
+         
+               if (EntryValue == wxT("Local")){
+        
+                       // Get the account directory.
+       
+                       cfgfile->Read(wxT("accountdir"), &AccDir);
+        
+                       if (AccDir.Len() > 4){
+
+                               accountdirvalid = TRUE;
+            
+                       } else {
+
+                               accountdirvalid = FALSE;
+
+                       }
+            
+                       if (accountdirvalid == TRUE){
+            
+                               accounts.AddAccount(accountname, wxT("Local"), wxT(""), 0,
+                                       0, wxT(""), wxT(""), 
+                                       wxT(""), AccDir, 0);
+            
+                       }
+        
+               } else if (EntryValue == wxT("CalDAV")){
+
+                       cfgfile->Read(wxT("accountdir"), &AccDir);
+                       accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr);
+                       accountportvalid = cfgfile->Read(wxT("port"), &AccPort);
+                       accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc);
+                       if (AccSSLInc == wxT("true")){
+                               AccSSL = TRUE;
+                       }
+                       else {
+                               AccSSL = FALSE;
+                       }
+                       accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr);
+                       accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass);
+                       accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix);
+                       accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef);
+            
+                       if (AccDir.Len() > 4){
+
+                               accountdirvalid = TRUE;
+            
+                       }
+                
+                       // Make sure it is not bigger than 65535 or less than 1.
+                       // If so, default to port 8008.
+                
+                       if (accountport < 1 || accountport > 65535){
+                               accountport = 8008;
+                               accountportvalid = TRUE;
+                       }
+            
+                       accounts.AddAccount(accountname, wxT("CalDAV"), AccAdr, AccPort,
+                               AccSSL, AccUsr, AccPass, 
+                               AccPrefix, AccDir, AccRef);
+            
+               } else {
+                       
+                       cfgfile->Read(wxT("accountdir"), &AccDir);
+                       accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr);
+                       accountportvalid = cfgfile->Read(wxT("port"), &AccPort);
+                       accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc);
+                       if (AccSSLInc == wxT("true")){
+                               AccSSL = TRUE;
+                       }
+                       else {
+                               AccSSL = FALSE;
+                       }
+                       accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr);
+                       accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass);
+                       accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix);
+                       accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef);
+            
+                       if (AccDir.Len() > 4){
+
+                               accountdirvalid = TRUE;
+            
+                       }
+                
+                       // Make sure it is not bigger than 65535 or less than 1.
+                       // If so, default to port 8008.
+                
+                       if (accountport < 1 || accountport > 65535){
+                               accountport = 8008;
+                               accountportvalid = TRUE;
+                       }
+            
+                       accounts.AddAccount(accountname, EntryValue, AccAdr, AccPort,
+                               AccSSL, AccUsr, AccPass, 
+                               AccPrefix, AccDir, AccRef);
+                       
+               }
+
+               // Clear up for the next account.
+    
+               accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
+               accountsslvalid, accountusernamevalid, accountpasswordvalid,
+               accountdirprefixvalid, accountdirvalid, accountrefreshvalid, accountssl,
+               isvalidaccount, isvalidsection = FALSE;
+        
+               AccAdr.Clear();
+               AccDir.Clear();
+               AccUsr.Clear();
+               AccPass.Clear();
+               AccPrefix.Clear();
+               accountname.Clear();
+               accountaddress.Clear();
+               accounttype.Clear();
+               accountport = 0;
+               accountrefresh = 0;
+               accountusername.Clear();
+               accountpassword.Clear();
+               accountdirprefix.Clear();
+               preaccountstage = TRUE;
+    
+               cfgfile->SetPath(wxT("/"));
+               ContinueAcc = cfgfile->GetNextGroup(accountname, itemindex);
+    
+       }
+  
+}
+
+XCALPreferences::~XCALPreferences(){
+       
+}
+
+bool XCALPreferences::GetBoolData(wxString SettingName){
+
+       // GetBoolData from the XCALPreferences object.
+
+       if (SettingName == wxT("SaveWindowPosition")) { return SaveWindowPos; }
+       else if (SettingName == wxT("HideLocalAddressBooks")) { return HideLocalABs; }
+       
+       return FALSE;
+
+}
+
+wxRect XCALPreferences::GetMainWindowData(){
+       
+       // Return the main window data as a wxRect object.
+       
+       return MainWindowData;
+
+}
+
+void XCALPreferences::SetMainWindowData(wxRect WindowData){
+
+       // Set the main window data from a wxRect object.
+
+       MainWindowData = WindowData;
+
+}
+
+// XCALPrefAccounts
+
+XCALPrefAccounts::XCALPrefAccounts(){
+
+       // Setup the default values for XCALPrefAccounts.
+
+       AccountsCount = 0;
+       
+}
+
+int XCALPrefAccounts::AddAccount(wxString NewAccName,
+       wxString NewAccType,
+       wxString NewAccAddress,
+       int NewAccPort,
+       int NewAccSSL,
+       wxString NewAccUser,
+       wxString NewAccPass,
+       wxString NewAccDirPrefix,
+       wxString NewAccDir,
+       long NewAccRefresh
+){
+  
+       // Add an account to the list of accounts in the
+       // XCALPrefAccounts object.
+  
+       AccountName.Add(NewAccName, 1);
+       AccountType.Add(NewAccType, 1);
+       AccountAddress.Add(NewAccAddress, 1);
+       AccountPort.Add(NewAccPort, 1);
+       AccountSSL.Add(NewAccSSL, 1);
+       AccountUsername.Add(NewAccUser, 1);
+       AccountPassword.Add(NewAccPass, 1);
+       DirectoryPrefix.Add(NewAccDirPrefix, 1);
+       AccountDirectory.Add(NewAccDir, 1);
+       AccountRefresh.Add(NewAccRefresh, 1);
+    
+       AccountsCount++;
+    
+       return 0;
+
+}
+
+int XCALPrefAccounts::GetCount(){
+  
+       // Get the count of accounts in the XCALPrefAccounts object.
+  
+       return AccountsCount;
+  
+}
+
+wxString XCALPrefAccounts::GetAccountName(int AccountNum){
+       // Get the account name.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountName[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountType(int AccountNum){
+       // Get the account type.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountType[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountAddress(int AccountNum){
+       // Get the account server address.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountAddress[AccountNum];
+  
+}
+
+int XCALPrefAccounts::GetAccountPort(int AccountNum){
+       // Get the account server port.
+       if (AccountNum > AccountsCount){
+               return 0;
+       }
+  
+       return AccountPort[AccountNum];
+  
+}
+
+bool XCALPrefAccounts::GetAccountSSL(int AccountNum){
+       // Get the account server SSL support.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountSSL[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountUsername(int AccountNum){
+       // Get the account username.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountUsername[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountPassword(int AccountNum){
+       // Get the account password.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountPassword[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountDirectory(int AccountNum){
+       // Get the account directory.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return AccountDirectory[AccountNum];
+  
+}
+
+wxString XCALPrefAccounts::GetAccountDirPrefix(int AccountNum){
+       // Get the account server directory prefix.
+       if (AccountNum > AccountsCount){
+               return wxT("");
+       }
+  
+       return DirectoryPrefix[AccountNum];
+  
+}
+
+long XCALPrefAccounts::GetAccountRefresh(int AccountNum){
+
+       // Get the account refresh time.
+
+       if (AccountNum > AccountsCount){
+               return 0;
+       }
+  
+       return AccountRefresh[AccountNum];
+
+}
\ No newline at end of file
diff --git a/source/common/preferences.h b/source/common/preferences.h
new file mode 100644 (file)
index 0000000..dd5c5c6
--- /dev/null
@@ -0,0 +1,123 @@
+// preferences.h - Preferences subroutines header.
+//
+// (c) 2012-2016 Xestia Software Development.
+//
+// This file is part of Xestia Calendar. Originally from Xestia Address Book.
+//
+// Xestia Calendar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Calendar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
+
+#ifndef PREFERENCES_H
+#define PREFERENCES_H
+
+#include <iostream>
+#include <wx/wx.h>
+
+void SavePreferences();
+void LoadPreferences();
+   
+class XCALPrefThemes
+{
+private:
+
+public:
+    wxArrayString      ThemeName;
+    wxArrayString      ThemeData;  
+};
+
+class XCALPrefAccounts
+{
+private:
+    wxArrayString      AccountName;
+    wxArrayString      AccountType;
+    wxArrayString      AccountAddress;
+    wxArrayInt         AccountPort;
+    wxArrayInt         AccountSSL;
+    wxArrayString      AccountUsername;
+    wxArrayString      AccountPassword;
+    wxArrayString      DirectoryPrefix;
+    wxArrayString      AccountDirectory;
+    wxArrayLong                AccountRefresh;
+    int                        AccountsCount;
+public:
+    XCALPrefAccounts();
+  
+    int GetCount();
+    wxString GetAccountName(int AccountNum);
+    wxString GetAccountType(int AccountNum);
+    wxString GetAccountAddress(int AccountNum);
+    int        GetAccountPort(int AcconutNum);
+    bool GetAccountSSL(int AccountNum);
+    wxString GetAccountUsername(int AccountNum);
+    wxString GetAccountPassword(int AccountNum);
+    wxString GetAccountDirectory(int AccountNum);
+    wxString GetAccountDirPrefix(int AccountNum);
+    long GetAccountRefresh(int AccountNum);
+    int AddAccount(wxString NewAccName,
+       wxString NewAccType,
+       wxString NewAccAddress,
+       int NewAccPort,
+       int NewAccSSL,
+       wxString NewAccUser,
+       wxString NewAccPass,
+       wxString NewAccDirPrefix,
+       wxString NewAccDir,
+       long NewAccRefresh
+    );
+};
+
+//XCALPreferences should emulate what is in the Preferences window.
+//Including others which aren't in the window such as main window
+//position and size.
+
+class XCALPreferences
+{
+private:
+    
+    // General Tab
+    bool SaveWindowPos = FALSE;
+    wxRect MainWindowData;
+    bool HideLocalABs = FALSE;
+    
+    // Themes tab
+    bool EnableThemes = FALSE;
+    
+    // Accounts tab
+    
+    // General things.
+    wxString Filename;
+    
+public:
+    XCALPreferences(wxString PreferencesFilename);
+    ~XCALPreferences();
+    
+    XCALPrefAccounts accounts;
+    XCALPrefThemes themes;
+    
+    int WritePreferences();
+    int ReadPreferences();
+    
+    bool GetBoolData(wxString SettingName);
+    bool SetBoolData(wxString SettingName, bool SettingValue);
+    wxRect GetMainWindowData();
+    void SetMainWindowData(wxRect WindowData);
+    
+    //int AddAccount(wxString Name);
+    
+    int GetThemeCount();
+    wxString GetThemeData(wxString ThemeName);
+    
+    int ErrorFlag;
+    
+};
+
+#endif
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