Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
defaults: Fixed issue with creating/editing/deleting default account calendars
[xestiacalendar/.git] / source / common / defaults.cpp
index 998a601..17daf9e 100644 (file)
@@ -16,8 +16,7 @@
 // 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>
+#include "defaults.h"
 
 void SetupDefaultCalendar(){
     
@@ -25,41 +24,49 @@ void SetupDefaultCalendar(){
     
        // Check if the 'Default.local' directory exists.
     
-       wxString DefaultLocalDir;
+       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"));
+       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"));
+       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"));
+       defaultLocalDir.Clear();
+       defaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
+       defaultLocalDir.Append(wxT("/.xestiacal/accounts/"));
+       defaultLocalDir.Append(wxT("Default.Local"));
 
 #endif
 
-       if (wxDirExists(DefaultLocalDir) == FALSE){
+       if (wxDirExists(defaultLocalDir) == FALSE){
         
-               if (wxMkdir(DefaultLocalDir, 0740) == TRUE){
+               if (wxMkdir(defaultLocalDir, 0740) == TRUE){
        
                }
         
+               wxFile defaultCalendarDB;
+       
+#if defined(__WIN32__)
+               defaultCalendarDB.Create(defaultLocalDir + "\\calendarlist.db", false, wxPOSIX_USER_READ|wxPOSIX_USER_WRITE|wxPOSIX_GROUP_READ);
+#else
+               defaultCalendarDB.Create(defaultLocalDir + "/calendarlist.db", false, wxPOSIX_USER_READ|wxPOSIX_USER_WRITE|wxPOSIX_GROUP_READ);
+#endif
+               
        }
-    
+       
 }
 
 void SetupDefaultSettings(){
@@ -68,92 +75,145 @@ void SetupDefaultSettings(){
     
        // Setup default (non account) settings if they don't exist.
     
-       wxString DefaultPrefDir;
+       wxString defaultPrefDir;
     
 #if defined(__HAIKU__)
     
     
 #elif defined(__WIN32__)
     
-       DefaultPrefDir.Clear();
-       DefaultPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
-       DefaultPrefDir.Append(wxT("\\Xestia\\Calendar\\preferences\\"));
+       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/"));
+       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/"));
+       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){
+       if (wxFileExists(defaultPrefDir + wxT("accounts")) == FALSE){
         
-               wxString AccountsFilename;
-               wxFFile AccountsFile;
+               wxString accountsFilename;
+               wxFFile accountsFile;
         
-               AccountsFilename = DefaultPrefDir;
-               AccountsFilename.Append(wxT("accounts"));
+               accountsFilename = defaultPrefDir;
+               accountsFilename.Append(wxT("accounts"));
         
 #if wxABI_VERSION < 20900
-               AccountsFile.Open(AccountsFilename.c_str(), wxT("w"));
+               accountsFile.Open(accountsFilename.c_str(), wxT("w"));
 #else
-               AccountsFile.Open(AccountsFilename, wxT("w"));
+               accountsFile.Open(accountsFilename, wxT("w"));
 #endif
         
-               AccountsFile.Write(wxT(""));
+               accountsFile.Write(wxT(""));
         
        }
     
        // Create the preferences file if it doesn't exist.
     
-       if (wxFileExists(DefaultPrefDir + wxT("settings")) == FALSE){
+       if (wxFileExists(defaultPrefDir + wxT("settings")) == FALSE){
         
-               wxString PrefsFilename;
-               wxFFile PrefsFile;
+               wxString prefsFilename;
+               wxFFile prefsFile;
         
-               PrefsFilename = DefaultPrefDir;
-               PrefsFilename.Append(wxT("settings"));
+               prefsFilename = defaultPrefDir;
+               prefsFilename.Append(wxT("settings"));
         
 #if wxABI_VERSION < 20900
-               PrefsFile.Open(PrefsFilename.c_str(), wxT("w"));
+               prefsFile.Open(prefsFilename.c_str(), wxT("w"));
 #else
-               PrefsFile.Open(PrefsFilename, wxT("w"));
+               prefsFile.Open(prefsFilename, wxT("w"));
 #endif
         
-               PrefsFile.Write(wxT("HideLocalCalendars=false\nSaveWindowPosition=true\n"));
+               prefsFile.Write(wxT("HideLocalCalendars=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(""));
+               
+       }
+       
+       delete accountConfigData;
+       accountConfigData = nullptr;
+       
 }
 
 void SetupDirectories(){
     
        // Create the directories if they don't exist.
     
-       wxString DefaultSettingsDir;
+       wxString defaultSettingsDir;
 
 #if defined(__HAIKU__)
     
 #elif defined(__WIN32__)
     
-       DefaultSettingsDir.Clear();
-       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("APPDATA")));
-       DefaultSettingsDir.Append(wxT("\\Xestia\\"));
+       defaultSettingsDir.Clear();
+       defaultSettingsDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       defaultSettingsDir.Append(wxT("\\Xestia\\"));
     
-       if (wxDirExists(DefaultSettingsDir) == FALSE){
+       if (wxDirExists(defaultSettingsDir) == FALSE){
         
                // Create the directory.
         
-               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){
+               if (wxMkdir(defaultSettingsDir, 0740) == TRUE){
             
                }
         
@@ -161,19 +221,19 @@ void SetupDirectories(){
     
        // 'Calendar' to the directory.
     
-       DefaultSettingsDir.Append(wxT("\\Calendar\\"));
+       defaultSettingsDir.Append(wxT("\\Calendar\\"));
     
 #elif defined(__APPLE__)
     
-       DefaultSettingsDir.Clear();
-       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
-       DefaultSettingsDir.Append(wxT("/Library/Preferences/Xestia/"));
+       defaultSettingsDir.Clear();
+       defaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
+       defaultSettingsDir.Append(wxT("/Library/Preferences/Xestia/"));
     
-       if (wxDirExists(DefaultSettingsDir) == FALSE){
+       if (wxDirExists(defaultSettingsDir) == FALSE){
         
                // Create the directory.
         
-               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){
+               if (wxMkdir(defaultSettingsDir, 0740) == TRUE){
             
                }
         
@@ -181,39 +241,39 @@ void SetupDirectories(){
     
        // Append 'Calendar' to the directory.
     
-       DefaultSettingsDir.Append(wxT("/Calendar/"));
+       defaultSettingsDir.Append(wxT("/Calendar/"));
     
 #else
     
-       DefaultSettingsDir.Clear();
-       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
-       DefaultSettingsDir.Append(wxT("/.xestiacal/"));
+       defaultSettingsDir.Clear();
+       defaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
+       defaultSettingsDir.Append(wxT("/.xestiacal/"));
     
 #endif
     
        // Check if the directory exists.
     
-       if (wxDirExists(DefaultSettingsDir) == FALSE){
+       if (wxDirExists(defaultSettingsDir) == FALSE){
         
                // Create the directory.
         
-               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){         
+               if (wxMkdir(defaultSettingsDir, 0740) == TRUE){         
             
                }
         
        }
     
-       if (wxDirExists(DefaultSettingsDir + wxT("accounts")) == FALSE){
+       if (wxDirExists(defaultSettingsDir + wxT("accounts")) == FALSE){
         
-               if (wxMkdir(DefaultSettingsDir + wxT("accounts"), 0740) == TRUE){               
+               if (wxMkdir(defaultSettingsDir + wxT("accounts"), 0740) == TRUE){               
             
                }
         
        }
     
-       if (wxDirExists(DefaultSettingsDir + wxT("preferences")) == FALSE){
+       if (wxDirExists(defaultSettingsDir + wxT("preferences")) == FALSE){
         
-               if (wxMkdir(DefaultSettingsDir + wxT("preferences"), 0740) == TRUE){            
+               if (wxMkdir(defaultSettingsDir + wxT("preferences"), 0740) == TRUE){            
             
                }
         
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