1 // frmContactEditorNickname.cpp - frmContactEditorNickname 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 "frmContactEditorNickname.h"
21 frmContactEditorNickname::frmContactEditorNickname( wxWindow* parent )
23 frmContactEditorNicknameADT( parent )
26 std::vector<std::string> LanguageCodeList = GetLanguageCodeList();
28 wxArrayString LanguageList;
30 for (auto LanguageItem : LanguageCodeList){
32 LanguageList.Add((wxString)LanguageItem, 1);
36 cmbLanguage->Append(LanguageList);
38 priorityCtrl = new XABPriorityCtrl(tabGeneral);
39 szrGeneral->Add(priorityCtrl, 1, wxEXPAND, 5);
44 void frmContactEditorNickname::InitAddressEditor( wxInitDialogEvent& event )
46 // Do nothing with this subroutine for the time being.
49 void frmContactEditorNickname::ProcessData( wxCommandEvent& event )
56 if (EditorMode == FALSE){
58 // Add the language to the list.
64 NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue()));
68 if (EditSectionType == CE_GENERAL){
70 NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("")));
72 } else if (EditSectionType == CE_HOME) {
74 NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("home")));
76 } else if (EditSectionType == CE_WORK) {
78 NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("work")));
82 // Add nickname language.
84 NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue()));
86 // Add nickname priority.
88 if (priorityCtrl->IsPriorityChecked()){
90 NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, priorityCtrl->GetValue()));
94 NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0));
98 // Add the data to the form.
102 coldata.SetId(NicknamesListIndex);
103 coldata.SetData(NicknamesListIndex);
104 coldata.SetText(txtNickname->GetValue());
105 ListCtrlIndex = NicknamesListCtrlPtr->InsertItem(coldata);
107 if (priorityCtrl->IsPriorityChecked()){
109 NicknamesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
115 } else if (EditorMode == TRUE){
117 // Edit the language.
121 long longSelected = -1;
123 NicknamesListPtr->erase(NicknamesListIndex);
124 NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue()));
126 NicknamesListPrefPtr->erase(NicknamesListIndex);
128 if (priorityCtrl->IsPriorityChecked()){
130 NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, priorityCtrl->GetValue()));
134 NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0));
138 NicknamesListLanguagePtr->erase(NicknamesListIndex);
139 NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue()));
141 longSelected = NicknamesListCtrlPtr->GetNextItem(longSelected,
143 wxLIST_STATE_SELECTED);
145 if (longSelected == -1){
149 NicknamesListCtrlPtr->SetItem(longSelected, 0, txtNickname->GetValue());
151 if (priorityCtrl->IsPriorityChecked()){
153 NicknamesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
157 NicknamesListCtrlPtr->SetItem(longSelected, 1, wxT(""));
167 void frmContactEditorNickname::CloseWindow( wxCommandEvent& event )
170 // Close this window.
176 void frmContactEditorNickname::SetEditorMode(bool EditMode, SectionType SectType)
179 // Set if the editor is adding or editing an address.
183 if (EditMode == FALSE){
186 btnAction->SetLabel(_("Add"));
187 this->SetTitle(_("Add Nickname"));
189 } else if (EditMode == TRUE){
192 btnAction->SetLabel(_("Modify"));
193 this->SetTitle(_("Modify Nickname"));
195 std::map<int,int>::iterator intiter;
196 std::map<int,wxString>::iterator striter;
199 // Load the data into the form. Get the website.
201 striter = NicknamesListPtr->find(NicknamesListIndex);
203 if (striter->first == NicknamesListIndex){
205 strValue = striter->second;
209 txtNickname->SetValue(strValue);
213 striter = NicknamesListLanguagePtr->find(NicknamesListIndex);
215 if (striter->first == NicknamesListIndex &&
216 striter != NicknamesListLanguagePtr->end()){
218 strValue = striter->second;
222 cmbLanguage->SetValue(strValue);
225 // Get the website priority.
227 intiter = NicknamesListPrefPtr->find(NicknamesListIndex);
229 if (intiter->first == NicknamesListIndex && intiter->second > 0 &&
230 intiter != NicknamesListPrefPtr->end()){
232 priorityCtrl->SetValue(intiter->second);
233 priorityCtrl->EnablePriority(true);
239 EditSectionType = SectType;
243 void frmContactEditorNickname::SetupPointers(std::map<int, wxString> *NicknamesList,
244 std::map<int, wxString> *NicknamesListAltID,
245 std::map<int, wxString> *NicknamesListPID,
246 std::map<int, wxString> *NicknamesListType,
247 std::map<int, wxString> *NicknamesListLanguage,
248 std::map<int, wxString> *NicknamesListTokens,
249 std::map<int, int> *NicknamesListPref,
250 wxListCtrl *NicknamesListCtrl,
254 // Setup the pointers.
256 NicknamesListPtr = NicknamesList;
257 NicknamesListAltIDPtr = NicknamesListAltID;
258 NicknamesListPIDPtr = NicknamesListPID;
259 NicknamesListTypePtr = NicknamesListType;
260 NicknamesListLanguagePtr = NicknamesListLanguage;
261 NicknamesListTokensPtr = NicknamesListTokens;
262 NicknamesListPrefPtr = NicknamesListPref;
263 NicknamesListCtrlPtr = NicknamesListCtrl;
264 NicknamesListIndex = NicknamesIndex;