// frmContactEditor-Picture.cpp - frmContactEditor Picture tab 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 #include "frmContactEditor.h" #include "frmContactEditorPicture.h" #include "../common/base64.h" void frmContactEditor::AddPicture( wxCommandEvent& event ) { int intResult = 0; frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this ); frameCEPicture->SetEditorMode(FALSE); intResult = GetLastInt(&PicturesList); frameCEPicture->SetupPointers(&PicturesList, &PicturesListAltID, &PicturesListPID, &PicturesListType, &PicturesListPicEncType, &PicturesListPictureType, &PicturesListTokens, &PicturesListMediatype, &PicturesListPref, lboPictures, (intValueSeek)); frameCEPicture->ShowModal(); delete frameCEPicture; frameCEPicture = NULL; } void frmContactEditor::ModifyPicture( wxCommandEvent& event ) { long longSelected = -1; int intSelectedData = 0; if (!GetSelectedItem(lboPictures, &longSelected, &intSelectedData)){ return; } frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this ); frameCEPicture->SetupPointers(&PicturesList, &PicturesListAltID, &PicturesListPID, &PicturesListType, &PicturesListPicEncType, &PicturesListPictureType, &PicturesListTokens, &PicturesListMediatype, &PicturesListPref, lboPictures, intSelectedData); frameCEPicture->SetEditorMode(TRUE); frameCEPicture->ShowModal(); delete frameCEPicture; frameCEPicture = NULL; } void frmContactEditor::DeletePicture( wxCommandEvent& event ) { long longSelected = -1; int intSelectedData = 0; if (!GetSelectedItem(lboPictures, &longSelected, &intSelectedData)){ return; } lboPictures->DeleteItem(longSelected); DeleteMapData(intSelectedData, &PicturesList, &PicturesListAltID, &PicturesListPID, &PicturesListType, &PicturesListPicEncType, &PicturesListPictureType, &PicturesListTokens, &PicturesListMediatype, &PicturesListPref); wxMemoryInputStream istream(misc_emptyimage_png, sizeof(misc_emptyimage_png)); wxImage misc_emptyimage_png(istream, wxBITMAP_TYPE_PNG); PictureImage = (wxBitmap)misc_emptyimage_png; imgPicture->SetBitmap(PictureImage); } void frmContactEditor::LoadPicture( wxListEvent& event ) { long longSelected = -1; int intSelectedData = 0; if (!GetSelectedItem(lboPictures, &longSelected, &intSelectedData)){ return; } std::string base64dec; std::map::iterator initier; std::map::iterator pictypeiter; initier = PicturesList.find(intSelectedData); pictypeiter = PicturesListPictureType.find(intSelectedData); base64dec = base64_decode(initier->second); wxMemoryInputStream istream(base64dec.c_str(), (size_t)base64dec.size()); wxImage photo; //wxMemoryInputStream istream(base64dec, (size_t)base64dec.size()); if (pictypeiter->second == wxT("image/jpeg")){ if (!photo.LoadFile(istream, wxBITMAP_TYPE_JPEG)){ return; } } else if (pictypeiter->second == wxT("image/png")){ if (!photo.LoadFile(istream, wxBITMAP_TYPE_PNG)){ return; } } else if (pictypeiter->second == wxT("image/gif")){ if (!photo.LoadFile(istream, wxBITMAP_TYPE_GIF)){ return; } } else { return; } PictureImage = (wxBitmap)photo; imgPicture->SetBitmap(PictureImage); }