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 sliPriority->Disable();
35 void frmContactEditorEmail::EnablePriority( wxCommandEvent& event )
38 // Enable/disable the priority setting.
40 if (chkUsePref->IsChecked()){
41 sliPriority->Enable();
43 sliPriority->Disable();
48 void frmContactEditorEmail::ProcessData( wxCommandEvent& event )
55 if (EditorMode == FALSE){
57 // Add the email address to the list.
64 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
68 if (EditSectionType == CE_GENERAL){
70 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("")));
72 } else if (EditSectionType == CE_HOME) {
74 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("home")));
76 } else if (EditSectionType == CE_WORK) {
78 EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("work")));
82 // Add Email priority.
84 if (chkUsePref->IsChecked()){
86 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue()));
90 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
94 // Add the data to the form.
98 coldata.SetId(EmailListIndex);
99 coldata.SetData(EmailListIndex);
100 coldata.SetText(txtEmail->GetValue());
101 ListCtrlIndex = EmailListCtrlPtr->InsertItem(coldata);
103 if (chkUsePref->IsChecked()){
105 EmailListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
111 } else if (EditorMode == TRUE){
113 // Edit the email address.
117 long longSelected = -1;
119 EmailListPtr->erase(EmailListIndex);
120 EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
122 EmailListPrefPtr->erase(EmailListIndex);
124 if (chkUsePref->IsChecked()){
126 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue()));
130 EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));
134 longSelected = EmailListCtrlPtr->GetNextItem(longSelected,
136 wxLIST_STATE_SELECTED);
138 if (longSelected == -1){
142 EmailListCtrlPtr->SetItem(longSelected, 0, txtEmail->GetValue());
144 if (chkUsePref->IsChecked()){
146 EmailListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
150 EmailListCtrlPtr->SetItem(longSelected, 1, wxT(""));
160 void frmContactEditorEmail::CloseWindow( wxCommandEvent& event )
163 // Close this window.
169 void frmContactEditorEmail::SetEditorMode(bool EditMode, SectionType SectType)
172 // Set the editor mode.
174 // Set the editor mode for adding or editing an email address.
176 if (EditMode == FALSE){
179 btnAction->SetLabel(_("Add"));
180 this->SetTitle(_("Add Email"));
182 } else if (EditMode == TRUE){
185 btnAction->SetLabel(_("Modify"));
186 this->SetTitle(_("Modify Email"));
188 std::map<int,int>::iterator intiter;
189 std::map<int,wxString>::iterator striter;
192 // Load the data into the form.
194 striter = EmailListPtr->find(EmailListIndex);
196 if (striter->first == EmailListIndex){
198 strValue = striter->second;
202 txtEmail->SetValue(strValue);
206 intiter = EmailListPrefPtr->find(EmailListIndex);
208 if (intiter->first == EmailListIndex && intiter->second > 0 &&
209 intiter != EmailListPrefPtr->end()){
211 sliPriority->SetValue(intiter->second);
212 sliPriority->Enable();
213 chkUsePref->SetValue(TRUE);
219 EditSectionType = SectType;
223 void frmContactEditorEmail::SetupPointers(std::map<int, wxString> *EmailList,
224 std::map<int, wxString> *EmailListAltID,
225 std::map<int, wxString> *EmailListPID,
226 std::map<int, wxString> *EmailListType,
227 std::map<int, wxString> *EmailListTokens,
228 std::map<int, int> *EmailListPref,
229 wxListCtrl *EmailListCtrl,
233 // Setup the pointers so that the data can be processed without
236 EmailListPtr = EmailList;
237 EmailListAltIDPtr = EmailListAltID;
238 EmailListPIDPtr = EmailListPID;
239 EmailListTypePtr = EmailListType;
240 EmailListTokensPtr = EmailListTokens;
241 EmailListPrefPtr = EmailListPref;
242 EmailListCtrlPtr = EmailListCtrl;
243 EmailListIndex = EmailIndex;