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);
36 void frmContactEditorEmail::ProcessData( wxCommandEvent& event )
43 if (EditorMode == FALSE){
45 // Add the email address to the list.
52 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
56 if (EditSectionType == CE_GENERAL){
58 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("")));
60 } else if (EditSectionType == CE_HOME) {
62 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("home")));
64 } else if (EditSectionType == CE_WORK) {
66 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("work")));
70 // Add Email priority.
72 if (priorityCtrl->IsPriorityChecked()){
74 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, priorityCtrl->GetValue()));
78 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
82 // Add the data to the form.
86 coldata.SetId(EmailListIndex);
87 coldata.SetData(EmailListIndex);
88 coldata.SetText(txtEmail->GetValue());
89 ListCtrlIndex = EmailListCtrlPtr->InsertItem(coldata);
91 if (priorityCtrl->IsPriorityChecked()){
93 EmailListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
99 } else if (EditorMode == TRUE){
101 // Edit the email address.
105 long longSelected = -1;
107 EmailListPtr->erase(EmailListIndex);
108 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
110 EmailListPrefPtr->erase(EmailListIndex);
112 if (priorityCtrl->IsPriorityChecked()){
114 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, priorityCtrl->GetValue()));
118 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
122 longSelected = EmailListCtrlPtr->GetNextItem(longSelected,
124 wxLIST_STATE_SELECTED);
126 if (longSelected == -1){
130 EmailListCtrlPtr->SetItem(longSelected, 0, txtEmail->GetValue());
132 if (priorityCtrl->IsPriorityChecked()){
134 EmailListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
138 EmailListCtrlPtr->SetItem(longSelected, 1, wxT(""));
148 void frmContactEditorEmail::CloseWindow( wxCommandEvent& event )
151 // Close this window.
157 void frmContactEditorEmail::SetEditorMode(bool EditMode, SectionType SectType)
160 // Set the editor mode.
162 // Set the editor mode for adding or editing an email address.
164 if (EditMode == FALSE){
167 btnAction->SetLabel(_("Add"));
168 this->SetTitle(_("Add Email"));
170 } else if (EditMode == TRUE){
173 btnAction->SetLabel(_("Modify"));
174 this->SetTitle(_("Modify Email"));
176 std::map<int,int>::iterator intiter;
177 std::map<int,wxString>::iterator striter;
180 // Load the data into the form.
182 striter = EmailListPtr->find(EmailListIndex);
184 if (striter->first == EmailListIndex){
186 strValue = striter->second;
190 txtEmail->SetValue(strValue);
194 intiter = EmailListPrefPtr->find(EmailListIndex);
196 if (intiter->first == EmailListIndex && intiter->second > 0 &&
197 intiter != EmailListPrefPtr->end()){
199 priorityCtrl->SetValue(intiter->second);
200 priorityCtrl->EnablePriority(true);
206 EditSectionType = SectType;
210 void frmContactEditorEmail::SetupPointers(std::map<int, wxString> *EmailList,
211 std::map<int, wxString> *EmailListAltID,
212 std::map<int, wxString> *EmailListPID,
213 std::map<int, wxString> *EmailListType,
214 std::map<int, wxString> *EmailListTokens,
215 std::map<int, int> *EmailListPref,
216 wxListCtrl *EmailListCtrl,
220 // Setup the pointers so that the data can be processed without
223 EmailListPtr = EmailList;
224 EmailListAltIDPtr = EmailListAltID;
225 EmailListPIDPtr = EmailListPID;
226 EmailListTypePtr = EmailListType;
227 EmailListTokensPtr = EmailListTokens;
228 EmailListPrefPtr = EmailListPref;
229 EmailListCtrlPtr = EmailListCtrl;
230 EmailListIndex = EmailIndex;