Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Move INSTALL, LICENSE, README, THANKS and TODO into root directory
[xestiaab/.git] / source / common / defaults.cpp
index e23f9e7..924c550 100644 (file)
-#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
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