X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fforms%2Fmain%2FfrmMain.cpp;h=2f826de0ebc462842c4a7b524a6a04b44a2277b5;hp=835118bde12f1b481842290e82c533e867245c9e;hb=373ead69e449039795b5026c4012d7e903ba4835;hpb=616ddd1b189837e5a7d1d6953534115be44f477b diff --git a/source/forms/main/frmMain.cpp b/source/forms/main/frmMain.cpp index 835118b..2f826de 100644 --- a/source/forms/main/frmMain.cpp +++ b/source/forms/main/frmMain.cpp @@ -18,11 +18,22 @@ #include "frmMain.h" +wxDEFINE_EVENT(XCMAIN_PROCESSCALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_EDITCALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETECALENDAR, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_ADDEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_UPDATEEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_EDITEVENT, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETEEVENT, wxCommandEvent); + +wxDEFINE_EVENT(XCMAIN_ADDWINDOWINFO, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_UPDATEWINDOWINFO, wxCommandEvent); +wxDEFINE_EVENT(XCMAIN_DELETEWINDOWINFO, wxCommandEvent); + frmMain::frmMain( wxWindow* parent ) : frmMainADT( parent ) { - // Setup the default settings if they don't // exist. @@ -76,19 +87,20 @@ frmMainADT( parent ) mainCalendarCtrl = new XCCalendarCtrl(this, &calendarData); szrMain->Add(mainCalendarCtrl, 1, wxEXPAND, 5); szrMain->Layout(); + + // Bind events to the control. - Connect(ID_PROCESSCALENDAR, XCMAIN_PROCESSCALENDAR, wxCommandEventHandler(frmMain::ProcessCalendar)); - Connect(ID_EDITCALENDAR, XCMAIN_EDITCALENDAR, wxCommandEventHandler(frmMain::EditCalendar)); - Connect(ID_DELETECALENDAR, XCMAIN_DELETECALENDAR, wxCommandEventHandler(frmMain::DeleteCalendar)); - Connect(ID_DELETEEVENT, XCMAIN_DELETEEVENT, wxCommandEventHandler(frmMain::DeleteEvent)); - Connect(ID_ADDENTRY, XCMAIN_ADDEVENT, wxCommandEventHandler(frmMain::AddEvent)); - Connect(ID_UPDATEENTRY, XCMAIN_UPDATEEVENT, wxCommandEventHandler(frmMain::UpdateEvent)); - Connect(ID_EDITEVENT, XCMAIN_EDITEVENT, wxCommandEventHandler(frmMain::EditEvent)); - - Connect(ID_ADDWINDOW, XCMAIN_ADDWINDOWINFO, wxCommandEventHandler(frmMain::WindowAdd)); - Connect(ID_UPDATEWINDOW, XCMAIN_UPDATEWINDOWINFO, wxCommandEventHandler(frmMain::WindowUpdate)); - Connect(ID_DELETEWINDOW, XCMAIN_DELETEWINDOWINFO, wxCommandEventHandler(frmMain::WindowDelete)); + Bind(XCMAIN_PROCESSCALENDAR, &frmMain::ProcessCalendar, this, ID_PROCESSCALENDAR); + Bind(XCMAIN_EDITCALENDAR, &frmMain::EditCalendar, this, ID_EDITCALENDAR); + Bind(XCMAIN_DELETECALENDAR, &frmMain::DeleteCalendar, this, ID_DELETECALENDAR); + Bind(XCMAIN_ADDEVENT, &frmMain::AddEvent, this, ID_ADDENTRY); + Bind(XCMAIN_UPDATEEVENT, &frmMain::UpdateEvent, this, ID_UPDATEENTRY); + Bind(XCMAIN_EDITEVENT, &frmMain::EditEvent, this, ID_EDITEVENT); + Bind(XCMAIN_DELETEEVENT, &frmMain::DeleteEvent, this, ID_DELETEEVENT); + Bind(XCMAIN_ADDWINDOWINFO, &frmMain::WindowAdd, this, ID_ADDWINDOW); + Bind(XCMAIN_UPDATEWINDOWINFO, &frmMain::WindowUpdate, this, ID_UPDATEWINDOW); + Bind(XCMAIN_DELETEWINDOWINFO, &frmMain::WindowDelete, this, ID_DELETEWINDOW); } void frmMain::QuitApp( wxCloseEvent& event ) @@ -258,6 +270,13 @@ void frmMain::LoadAccountData(){ void frmMain::ShowPreferencesWindow( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + // Open the preferences window. reloadAccounts = FALSE; @@ -378,6 +397,13 @@ void frmMain::CreateNewCalendar( wxCommandEvent& event ) void frmMain::EditCalendar( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + // Get the calendar data. CDSGetCalendarInfo calendarInfo = calendarData.GetCalendar(event.GetInt()); @@ -395,13 +421,20 @@ void frmMain::EditCalendar( wxCommandEvent& event ) void frmMain::DeleteCalendar( wxCommandEvent& event ) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + CalendarProperties *calendarEventInfo = (CalendarProperties*)event.GetClientData(); // Get the calendar data. CDSGetCalendarInfo calendarInfo = calendarData.GetCalendar(calendarEventInfo->calendarID); - if (wxMessageBox(wxString::Format("Are you sure you want to delete the calendar %s from the %s account?", calendarInfo.calendarName, calendarInfo.accountName), "Delete calendar", wxYES_NO|wxICON_QUESTION) == wxNO){ + if (wxMessageBox(wxString::Format("Are you sure you want to delete the calendar %s from the %s account?", wxString(calendarInfo.calendarName.c_str(), wxConvUTF8), wxString(calendarInfo.accountName.c_str(), wxConvUTF8)), "Delete calendar", wxYES_NO|wxICON_QUESTION) == wxNO){ return; } @@ -415,11 +448,11 @@ void frmMain::DeleteCalendar( wxCommandEvent& event ) // Get the account configuration file and delete the calendar information. - CDSGetAccountInfo accountInfo = calendarData.GetAccount(calendarInfo.accountName); + CDSGetAccountInfo accountInfo = calendarData.GetAccount(calendarInfo.accountName.c_str()); string accountDirectoryPath = string(GetUserDir().mb_str()); accountDirectoryPath += "accounts/"; - accountDirectoryPath += string(preferences->accounts.GetAccountDirectory(calendarEventInfo->accountPreferencesID).mb_str()); + accountDirectoryPath += string(preferences->accounts.GetAccountDirectory(calendarEventInfo->accountPreferencesID).ToUTF8()); accountDirectoryPath += "."; accountDirectoryPath += string(preferences->accounts.GetAccountType(calendarEventInfo->accountPreferencesID).mb_str()); accountDirectoryPath += "/"; @@ -432,35 +465,40 @@ void frmMain::DeleteCalendar( wxCommandEvent& event ) wxFileConfig *calendarListFile = new wxFileConfig("", "", wxString(calendarListFilenameFull)); - //calendarListFile->SetPath(wxString(calendarInfo.calendarTextID)); - calendarListFile->DeleteGroup(wxString(calendarInfo.calendarTextID)); - // Delete the calendar directory. - wxDir entryListDirectory((wxString)calendarDirectoryPath.c_str()); + wxDir entryListDirectory(wxString(calendarDirectoryPath.c_str(), wxConvUTF8)); wxString entryListFilename; bool continueProcessing = entryListDirectory.GetFirst(&entryListFilename, "*", wxDIR_NO_FOLLOW|wxDIR_FILES); - + while (continueProcessing){ string entryListFullFilename; - entryListFullFilename += calendarDirectoryPath; + entryListFullFilename += wxString(calendarDirectoryPath.c_str(), wxConvUTF8); entryListFullFilename += "/"; entryListFullFilename += string(entryListFilename.mb_str()); - wxRemoveFile(wxString(entryListFullFilename.c_str())); + wxRemoveFile(wxString(entryListFullFilename.c_str(), wxConvUTF8)); continueProcessing = entryListDirectory.GetNext(&entryListFilename); } - - wxRmdir(calendarDirectoryPath); + + entryListDirectory.Close(); + + // Delete the calendar from the account calendar list. + + calendarListFile->DeleteGroup(wxString(calendarInfo.calendarTextID)); // Delete the calendar from the calendar data storage. calendarData.DeleteCalendar(calendarEventInfo->calendarID); + // Delete the calendar directory. + + //wxRmdir(wxString(calendarDirectoryPath.c_str(), wxConvUTF8)); + delete calendarListFile; calendarListFile = nullptr; @@ -583,13 +621,13 @@ void frmMain::ProcessCalendar( wxCommandEvent& event ) // Get the account name. - CDSGetAccountInfo accountInfo = calendarData.GetAccount(calendarInfo->accountName); + CDSGetAccountInfo accountInfo = calendarData.GetAccount(calendarInfo->accountName.c_str()); // Build the account directory path. string accountDirectoryPath = string(GetUserDir().mb_str()); accountDirectoryPath += "accounts/"; - accountDirectoryPath += string(preferences->accounts.GetAccountDirectory(calendarInfo->accountPreferencesID).mb_str()); + accountDirectoryPath += string(preferences->accounts.GetAccountDirectory(calendarInfo->accountPreferencesID).ToUTF8()); accountDirectoryPath += "."; accountDirectoryPath += string(preferences->accounts.GetAccountType(calendarInfo->accountPreferencesID).mb_str()); accountDirectoryPath += "/"; @@ -619,9 +657,9 @@ void frmMain::ProcessCalendar( wxCommandEvent& event ) string calendarListFilenameFull = accountDirectoryPath; calendarListFilenameFull += "calendarlist.db"; - wxFileConfig *calendarListFile = new wxFileConfig("", "", wxString(calendarListFilenameFull)); + wxFileConfig *calendarListFile = new wxFileConfig("", "", wxString(calendarListFilenameFull.c_str(), wxConvUTF8)); - wxString calendarDescription = wxString(calendarInfo->calendarDescription); + wxString calendarDescription = wxString(calendarInfo->calendarDescription.c_str(), wxConvUTF8); calendarDescription.Replace("\n", "\\n", true); @@ -629,13 +667,13 @@ void frmMain::ProcessCalendar( wxCommandEvent& event ) // not editing a calendar. calendarListFile->SetPath(wxString(calendarUUID)); - calendarListFile->Write(wxT("name"), wxString(calendarInfo->calendarName)); + calendarListFile->Write(wxT("name"), wxString(calendarInfo->calendarName.c_str(), wxConvUTF8)); calendarListFile->Write(wxT("description"), calendarDescription); calendarListFile->Write(wxT("colour"), wxString(calendarInfo->calendarColour)); if (calendarInfo->editMode == false){ - wxMkDir(wxString(calendarPath), wxS_DIR_DEFAULT); + wxMkDir(wxString(calendarPath.c_str(), wxConvUTF8), wxS_DIR_DEFAULT); calendarData.AddCalendar(accountInfo.accountID, calendarInfo->calendarName, calendarUUID, calendarInfo->calendarColour, calendarInfo->calendarDescription); } else {