// frmContactEditor.h - frmContactEditor form header.
//
-// (c) 2012-2015 Xestia Software Development.
+// (c) 2012-2016 Xestia Software Development.
//
// This file is part of Xestia Address Book.
//
#include "../common/etag.h"
#include "../common/timers.h"
-#include "../frmActivityMgr.h"
+#include "../actmgr/frmActivityMgr.h"
#include "../frmMain.h"
+#include "cdo/ContactDataObject.h"
+
#define CE_NICKNAME wxT("Nickname")
#define CE_ADDRESS wxT("Address")
#define CE_EMAIL wxT("Email")
void OnMusicEnd() { }
bool GetPlayingStatus(){ return FilePlaying; }
-
-/*
- void load(const sf::SoundBuffer& buffer)
- {
- // extract the audio samples from the sound buffer to our own container
- m_samples.assign(buffer.getSamples(), buffer.getSamples() + buffer.getSampleCount());
-
- // reset the current playing position
- m_currentSample = 0;
-
- // initialize the base class
- initialize(buffer.getChannelCount(), buffer.getSampleRate());
- }
-
- bool GetPlayingStatus(){ return FilePlaying; }
-
-private:
-
- virtual bool onGetData(Chunk& data)
- {
- // number of samples to stream every time the function is called;
- // in a more robust implementation, it would rather be a fixed
- // amount of time rather than an arbitrary number of samples
- const int samplesToStream = 50000;
-
- // set the pointer to the next audio samples to be played
- data.samples = &m_samples[m_currentSample];
-
- // have we reached the end of the sound?
- if (m_currentSample + samplesToStream <= m_samples.size())
- {
- // end not reached: stream the samples and continue
- data.sampleCount = samplesToStream;
- m_currentSample += samplesToStream;
- FilePlaying = TRUE;
- return true;
- }
- else
- {
- // end of stream reached: stream the remaining samples and stop playback
- data.sampleCount = m_samples.size() - m_currentSample;
- m_currentSample = m_samples.size();
- FilePlaying = FALSE;
- return false;
- }
- }
-
- virtual void onSeek(sf::Time TimeOffset)
- {
- // compute the corresponding sample index according to the sample rate and channel count
- m_currentSample = static_cast<std::size_t>(TimeOffset.asSeconds() * getSampleRate() * getChannelCount());
- }
-
- std::vector<sf::Int16> m_samples;
- std::size_t m_currentSample;
-
- */
bool FilePlaying = TRUE;
};
void ModifyPicture( wxCommandEvent& event );
void DeletePicture( wxCommandEvent& event );
void LoadPicture( wxListEvent& event );
+ void SavePicture( wxCommandEvent& event);
void AddLogo( wxCommandEvent& event );
void ModifyLogo( wxCommandEvent& event );
void DeleteLogo( wxCommandEvent& event );
- void LoadLogo( wxListEvent& event );
+ void LoadLogo( wxListEvent& event );
+ void SaveLogo( wxCommandEvent& event);
void AddSound( wxCommandEvent& event );
void ModifySound( wxCommandEvent& event );
void DeleteSound( wxCommandEvent& event );
+ void SaveSound( wxCommandEvent& event);
void PlaySoundDetach();
void PlaySound( wxCommandEvent& event );
void StopSound( wxCommandEvent& event );
void ResetSaveProcessData();
void ContactFileChanged( wxCommandEvent &event );
void ClearContact();
-
- /* Functions for loading contacts */
- void LoadKind(wxString KindType);
- void LoadMember(wxString MemberData, int *GroupCount);
- void LoadFN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FNCount,
- bool *FNProcessed, vCard *ContactData);
- void LoadN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *NameProcessed,
- vCard *ContactData);
- void LoadNickname(wxString wxSpropertySeg1, wxString wxSPropertySeg2,
- int *NicknameCount, vCard *ContactData);
- void LoadGender(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *GenderProcessed,
- vCard *ContactData);
- void LoadBDay(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *BirthdayProcessed);
- void LoadAnniversary(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *AnniversaryProcessed);
- void LoadTimeZone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TZCount);
- void LoadADR(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
- void LoadEmail(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
- void LoadIM(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *IMPPCount);
- void LoadTelephone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TelCount);
- void LoadLanguage(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *LangCount);
- void LoadGeo(wxString wxSProptertySeg1, wxString wxSPropertySeg2, int *GeoCount);
- void LoadRelated(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RelatedCount);
- void LoadURL(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *URLCount);
- void LoadTitle(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TitleCount);
- void LoadRole(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RoleCount);
- void LoadOrg(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *OrgCount);
- void LoadNote(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *NoteCount);
- void LoadCategory(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CategoryCount);
- void LoadPhoto(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
- void LoadLogo(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
- void LoadSound(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *SoundCount);
- void LoadCalURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalAdrCount);
- void LoadCalAdrURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalReqAdrCount);
- void LoadCalFreeBusy(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FreeBusyCount);
- void LoadKey(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *KeyCount);
+
+ void LoadKind(ContactKindType *KindType);
+ void LoadBirthday(wxString *BirthdayData, bool *BirthdayText);
+ void LoadAnniversary(wxString *AnniversaryData, bool *AnniversaryText);
+ void LoadGender(wxString *GenderComponent, wxString *GenderIdentity);
+ void LoadName(wxString *NameTitle, wxString *NameForename,
+ wxString *NameSurname, wxString *NameOtherNames,
+ wxString *NameSuffix);
+ void LoadMember(std::map<int,wxString> *GroupList);
+ void LoadAddress(std::map<int, wxString> *GeneralAddressList,
+ std::map<int, wxString> *GeneralAddressListTown,
+ std::map<int, wxString> *GeneralAddressListCounty,
+ std::map<int, wxString> *GeneralAddressListPostCode,
+ std::map<int, int> *GeneralAddressListPref,
+ std::map<int, wxString> *HomeAddressList,
+ std::map<int, wxString> *HomeAddressListTown,
+ std::map<int, wxString> *HomeAddressListCounty,
+ std::map<int, wxString> *HomeAddressListPostCode,
+ std::map<int, int> *HomeAddressListPref,
+ std::map<int, wxString> *BusinessAddressList,
+ std::map<int, wxString> *BusinessAddressListTown,
+ std::map<int, wxString> *BusinessAddressListCounty,
+ std::map<int, wxString> *BusinessAddressListPostCode,
+ std::map<int, int> *BusinessAddressListPref,
+ int *AddressCount);
+
+ void LoadData(std::map<int, wxString> *GeneralList,
+ std::map<int, int> *GeneralListPref,
+ wxListCtrl *GeneralListCtrl,
+ std::map<int, wxString> *HomeList,
+ std::map<int, int> *HomeListPref,
+ wxListCtrl *HomeListCtrl,
+ std::map<int, wxString> *BusinessList,
+ std::map<int, int> *BusinessTZPref,
+ wxListCtrl *BusinessListCtrl,
+ int *DataCount);
+
+ void LoadData(std::map<int, wxString> *GeneralList,
+ std::map<int, int> *GeneralListPref,
+ std::map<int, wxString> *GeneralListType,
+ wxListCtrl *GeneralListCtrl,
+ std::map<int, wxString> *HomeList,
+ std::map<int, int> *HomeListPref,
+ std::map<int, wxString> *HomeListType,
+ wxListCtrl *HomeListCtrl,
+ std::map<int, wxString> *BusinessList,
+ std::map<int, int> *BusinessListPref,
+ std::map<int, wxString> *BusinessListType,
+ wxListCtrl *BusinessListCtrl,
+ int *DataCount);
+
+ void LoadData(std::map<int,wxString> *ItemList,
+ std::map<int,int> *ItemListPref,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadData(std::map<int,wxString> *ItemList,
+ std::map<int,int> *ItemListPref,
+ std::map<int,wxString> *ItemListType,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadData(wxString ItemName,
+ std::map<int,wxString> *ItemList,
+ std::map<int,int> *ItemListPref,
+ std::map<int,wxString> *ItemListType,
+ std::map<int,wxString> *ItemListDataType,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadPictureData(wxString ItemName,
+ std::map<int,std::string> *ItemList,
+ std::map<int,int> *ItemListPref,
+ std::map<int,wxString> *ItemListType,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadVendorData(std::map<int,wxString> *ItemListPEN,
+ std::map<int,wxString> *ItemListElement,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadXTokenData(std::map<int,wxString> *ItemListTokens,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
+
+ void LoadData(std::map<int,wxString> *ItemList,
+ wxComboBox *ItemCtrl);
+
+ void LoadRelatedData(std::map<int,wxString> *ItemList,
+ std::map<int,int> *ItemListPref,
+ std::map<int,wxString> *ItemListType,
+ wxListCtrl *ItemCtrl,
+ int *DataCount);
int intValueSeek = 1;
bool IsGroup = FALSE;
/* Items on General Tab */
+ ContactDataObject ContactEditorData;
+
wxString NameTitle;
wxString NameForename;
wxString NameSurname;