1 // frmContactEditorEmail.cpp - frmContactEditorEmail form.
3 // (c) 2012-2015 Xestia Software Development.
5 // This file is part of Xestia Address Book.
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include "frmContactEditorEmail.h"
21 #include "../common/textprocessing.h"
23 frmContactEditorEmail::frmContactEditorEmail( wxWindow* parent )
25 frmContactEditorEmailADT( parent )
31 priorityCtrl = new XABPriorityCtrl(tabGeneral);
32 szrGeneral->Add(priorityCtrl, 1, wxEXPAND, 5);
37 void frmContactEditorEmail::ProcessData( wxCommandEvent& event )
44 if (EditorMode == FALSE){
46 // Add the email address to the list.
53 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
57 if (EditSectionType == CE_GENERAL){
59 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("")));
61 } else if (EditSectionType == CE_HOME) {
63 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("home")));
65 } else if (EditSectionType == CE_WORK) {
67 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("work")));
71 // Add Email priority.
73 if (priorityCtrl->IsPriorityChecked()){
75 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, priorityCtrl->GetValue()));
79 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
83 // Add the data to the form.
87 coldata.SetId(EmailListIndex);
88 coldata.SetData(EmailListIndex);
89 coldata.SetText(txtEmail->GetValue());
90 ListCtrlIndex = EmailListCtrlPtr->InsertItem(coldata);
92 if (priorityCtrl->IsPriorityChecked()){
94 EmailListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
100 } else if (EditorMode == TRUE){
102 // Edit the email address.
106 long longSelected = -1;
108 EmailListPtr->erase(EmailListIndex);
109 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
111 EmailListPrefPtr->erase(EmailListIndex);
113 if (priorityCtrl->IsPriorityChecked()){
115 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, priorityCtrl->GetValue()));
119 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
123 longSelected = EmailListCtrlPtr->GetNextItem(longSelected,
125 wxLIST_STATE_SELECTED);
127 if (longSelected == -1){
131 EmailListCtrlPtr->SetItem(longSelected, 0, txtEmail->GetValue());
133 if (priorityCtrl->IsPriorityChecked()){
135 EmailListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
139 EmailListCtrlPtr->SetItem(longSelected, 1, wxT(""));
149 void frmContactEditorEmail::CloseWindow( wxCommandEvent& event )
152 // Close this window.
158 void frmContactEditorEmail::SetEditorMode(bool EditMode, SectionType SectType)
161 // Set the editor mode.
163 // Set the editor mode for adding or editing an email address.
165 if (EditMode == FALSE){
168 btnAction->SetLabel(_("Add"));
169 this->SetTitle(_("Add Email"));
171 } else if (EditMode == TRUE){
174 btnAction->SetLabel(_("Modify"));
175 this->SetTitle(_("Modify Email"));
177 std::map<int,int>::iterator intiter;
178 std::map<int,wxString>::iterator striter;
181 // Load the data into the form.
183 striter = EmailListPtr->find(EmailListIndex);
185 if (striter->first == EmailListIndex){
187 strValue = striter->second;
191 txtEmail->SetValue(strValue);
195 intiter = EmailListPrefPtr->find(EmailListIndex);
197 if (intiter->first == EmailListIndex && intiter->second > 0 &&
198 intiter != EmailListPrefPtr->end()){
200 priorityCtrl->SetValue(intiter->second);
201 priorityCtrl->EnablePriority(true);
207 EditSectionType = SectType;
211 void frmContactEditorEmail::SetupPointers(std::map<int, wxString> *EmailList,
212 std::map<int, wxString> *EmailListAltID,
213 std::map<int, wxString> *EmailListPID,
214 std::map<int, wxString> *EmailListType,
215 std::map<int, wxString> *EmailListTokens,
216 std::map<int, int> *EmailListPref,
217 wxListCtrl *EmailListCtrl,
221 // Setup the pointers so that the data can be processed without
224 EmailListPtr = EmailList;
225 EmailListAltIDPtr = EmailListAltID;
226 EmailListPIDPtr = EmailListPID;
227 EmailListTypePtr = EmailListType;
228 EmailListTokensPtr = EmailListTokens;
229 EmailListPrefPtr = EmailListPref;
230 EmailListCtrlPtr = EmailListCtrl;
231 EmailListIndex = EmailIndex;