// frmContact.cpp - Contact information form. // // (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 #include "frmContact.h" #include "common/getcontactinfo.h" #include "frmMain.h" #include #include #include BEGIN_EVENT_TABLE(frmContact, wxFrame) END_EVENT_TABLE() frmContact::frmContact( wxWindow* parent ) : frmContactADT( parent ) { } void frmContact::CloseWindowProcessing(){ } void frmContact::CloseWindow( wxCommandEvent& event ){ // Close this window. this->Close(); } void frmContact::CloseWindow( wxCloseEvent& event ){ // Off for peppermint tea. Better clean up first or // we'll be in for it later. wxFileSystem::AddHandler(new wxMemoryFSHandler); // Check if frmContact is the main window, if not // then do some clear up. if (StartupMode == false){ if (MemoryFSListPtr->find(SessionID) == MemoryFSListPtr->end()){ } else { std::map::iterator striter; for (striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){ if (SessionID == striter->second){ // Delete the references from the wxMemoryFSHandler // and the entry from the map. wxMemoryFSHandler::RemoveFile(striter->first); break; } } MemoryFSListPtr->erase(striter); } WindowData *WData = new WindowData; WData->DataType = 0; WData->WindowPointer = this; WData->WindowID = ContactUID; wxCommandEvent delevent(WINDOW_CLOSE); delevent.SetClientData(WData); wxPostEvent(GetParent(), delevent); } Destroy(); } bool frmContact::SetupContactData(vCard *vCardObj){ // Setup the contact information. wxFileSystem::AddHandler(new wxMemoryFSHandler); for (std::map::iterator striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){ if (SessionID == striter->second){ // Delete the references from the wxMemoryFSHandler // and the entry from the map. wxMemoryFSHandler::RemoveFile(striter->first); MemoryFSListPtr->erase(striter); } } OldSessionID = SessionID; SessionID = wxString::Format(wxT("%i"), rand() % 32768); wxColour formattedBackgroundColour; if (backgroundColour.IsEmpty()) { formattedBackgroundColour = wxTransparentColour; } else { formattedBackgroundColour.Set(backgroundColour); } LoadContactData(vCardObj, htmContactData, SessionID, OldSessionID, MemoryFSListPtr, formattedBackgroundColour); ArrayvCardOutData FNList; FNList = vCardObj->GetByPartial(wxT("FN")); if (FNList.PropCount > 0){ FNList.PropValues[0].Trim(); SetTitle(FNList.PropValues[0]); } if (StartupMode == false){ WindowData *WData = new WindowData; vCardFilename = vCardObj->GetFilename(); WData->DataType = 0; WData->WindowPointer = this; WData->WindowID = ContactUID; wxCommandEvent editevent(WINDOW_EDIT); editevent.SetClientData(WData); wxPostEvent(GetParent(), editevent); } return TRUE; } void frmContact::SetMode(bool StartupModeIn){ // Set the mode which frmContact will be operating. StartupMode = StartupModeIn; } void frmContact::SetupPointers(std::map *MemoryFSListIncPtr){ // Set the pointer for the Memory Filesystem map. MemoryFSListPtr = MemoryFSListIncPtr; } void frmContact::SetUID(int UID){ // Set the UID of the contact window. ContactUID = UID; } wxString frmContact::GetFilename(){ // Get the filename of the contact being displayed. return vCardFilename; } void frmContact::SetBackgroundColour(wxString backgroundColour){ // Set the background colour. this->backgroundColour = backgroundColour; }