--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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