-#include <wx/wx.h>
-#include <wx/ffile.h>
+// defaults.cpp - Default settings subroutines.
+//
+// (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/>
+
+#include "defaults.h"
+
+using namespace std;
void SetupDefaultAddressBook(){
-
+
+ // Setup the default address book if there are none.
+
// Check if the 'Default.local' directory exists.
-
+
wxString DefaultLocalDir;
-
-#if defined(__HAIKU__)
- //preffilename = wxT("noo");
-
+#if defined(__HAIKU__)
+
#elif defined(__WIN32__)
-
+
DefaultLocalDir.Clear();
DefaultLocalDir.Append(wxString::FromUTF8(getenv("APPDATA")));
DefaultLocalDir.Append(wxT("\\Xestia\\Address Book\\accounts\\"));
DefaultLocalDir.Append(wxT("Default.local"));
-
+
+#elif defined(__APPLE__)
+
+ DefaultLocalDir.Clear();
+ DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
+ DefaultLocalDir.Append(wxT("/Library/Preferences/Xestia/Address Book/accounts/"));
+ DefaultLocalDir.Append(wxT("Default.local"));
+
#else
-
+
DefaultLocalDir.Clear();
DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
DefaultLocalDir.Append(wxT("/.xestiaab/accounts/"));
DefaultLocalDir.Append(wxT("Default.local"));
-
+
#endif
-
+
if (wxDirExists(DefaultLocalDir) == FALSE){
-
- if (wxMkdir(DefaultLocalDir, 0740) == TRUE){
-
+
+ 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__)
-
- //preffilename = wxT("noo");
-
+
+
#elif defined(__WIN32__)
-
+
DefaultPrefDir.Clear();
DefaultPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
DefaultPrefDir.Append(wxT("\\Xestia\\Address Book\\preferences\\"));
-
+
+#elif defined(__APPLE__)
+
+ DefaultPrefDir.Clear();
+ DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+ DefaultPrefDir.Append(wxT("/Library/Preferences/Xestia/Address Book/preferences/"));
+
#else
-
+
DefaultPrefDir.Clear();
DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
DefaultPrefDir.Append(wxT("/.xestiaab/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
-
+#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
+#endif
+
+ PrefsFile.Write(wxT("HideLocalAddressBooks=false\nSaveWindowPosition=true\nUseBackgroundContactColour=false\n"));
+
+ }
- PrefsFile.Write(wxT("HideLocalAddressBooks=false\nSaveWindowPosition=true\n"));
+ // Check if the default account is in the accounts list.
+ // Add it if it isn't.
- }
+ wxString accountsConfigFile = DefaultPrefDir;
+ accountsConfigFile.Append(wxT("accounts"));
+
+ wxFileConfig *accountConfigData = new wxFileConfig("", "", accountsConfigFile);
+
+ long itemIndex = 0;
+ wxString accountName;
+ wxString accountType;
+ wxString accountDirectory;
+ bool continueProcessing = false;
+ bool defaultCalendarExists = false;
+
+ continueProcessing = accountConfigData->GetFirstGroup(accountName, itemIndex);
+
+ while (continueProcessing){
+ accountConfigData->SetPath(accountName);
+ accountConfigData->Read(wxT("type"), &accountType);
+ accountConfigData->Read(wxT("accountdir"), &accountDirectory);
+
+ if (accountType == wxT("Local") && accountDirectory == wxT("Default")){
+
+ defaultCalendarExists = true;
+
+ }
+
+ continueProcessing = accountConfigData->GetNextGroup(accountName, itemIndex);
+
+ }
+
+ if (defaultCalendarExists == false){
+
+ // Create the account in the accounts file.
+
+ accountConfigData->SetPath(wxT("/Default"));
+ accountConfigData->Write(wxT("type"), wxT("Local"));
+ accountConfigData->Write(wxT("accountdir"), wxT("Default"));
+ accountConfigData->Write(wxT("prefix"), wxT(""));
+ accountConfigData->Write(wxT("address"), wxT(""));
+ accountConfigData->Write(wxT("port"), wxT(""));
+ accountConfigData->Write(wxT("ssl"), wxT("false"));
+ accountConfigData->Write(wxT("username"), wxT(""));
+ accountConfigData->Write(wxT("password"), wxT(""));
+ accountConfigData->Write(wxT("prefix"), wxT(""));
+ accountConfigData->Write(wxT("refresh"), wxT("1800"));
+
+ }
+
+ delete accountConfigData;
+ accountConfigData = nullptr;
+
}
void SetupDirectories(){
-
+
// Create the directories if they don't exist.
-
+
wxString DefaultSettingsDir;
#if defined(__HAIKU__)
-
- //preffilename = wxT("noo");
-
+
#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){
-
+
+ if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){
+
}
-
+
}
-
- // TODO: APPEND 'Address Book' to the directory.
-
+
+ // 'Address Book' to the directory.
+
DefaultSettingsDir.Append(wxT("\\Address Book\\"));
-
+
+#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 'Address Book' to the directory.
+
+ DefaultSettingsDir.Append(wxT("/Address Book/"));
+
#else
-
+
DefaultSettingsDir.Clear();
DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
DefaultSettingsDir.Append(wxT("/.xestiaab/"));
-
+
#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