// frmContactEditorIM.cpp - frmContactEditorIM form. // // (c) 2012-2015 Xestia Software Development. // // This file is part of Xestia Address Book. // // Xestia Address Book is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // // Xestia Address Book is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with Xestia Address Book. If not, see #include "frmContactEditorIM.h" #include #include #include "../common/textprocessing.h" frmContactEditorIM::frmContactEditorIM( wxWindow* parent ) : frmContactEditorIMADT( parent ) { // Setup the window. EditorMode = FALSE; priorityCtrl = new XABPriorityCtrl(tabGeneral); szrGeneral->Add(priorityCtrl, 1, wxEXPAND, 5); // Add some values to the drop down box for IM types. cmbIMType->Append(wxT("AIM")); cmbIMType->Append(wxT("Gadu-Gadu")); cmbIMType->Append(wxT("ICQ")); cmbIMType->Append(wxT("Skype")); cmbIMType->Append(wxT("XMPP")); cmbIMType->Append(wxT("Yahoo")); cmbIMType->Append(_("Other")); } void frmContactEditorIM::ProcessAction( wxCommandEvent& event ) { // Process the action. long ListCtrlIndex; // Check if IM type is empty and if it is then // throw an error message. wxString strIMTypeValue; strIMTypeValue = cmbIMType->GetValue(); if (strIMTypeValue.IsEmpty()){ wxMessageDialog NopeDlg(this, _("IM Type is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition); NopeDlg.ShowModal(); return; } if (txtUsername->IsEmpty()){ wxMessageDialog NopeDlg(this, _("Username/E-mail Address is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition); NopeDlg.ShowModal(); return; } if (EditorMode == FALSE){ // Add the address to the list (maps). wxString strIMAddress; // Strip out the colons. strIMAddress.Replace(wxT(":"), wxT(""), TRUE); // Specify the type. strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection()); if (strIMTypeValue == wxT("AIM")){ strIMAddress.Append(wxT("aim")); } else if (strIMTypeValue == wxT("Gadu-Gadu")){ strIMAddress.Append(wxT("gg")); } else if (strIMTypeValue == wxT("ICQ")){ strIMAddress.Append(wxT("icq")); } else if (strIMTypeValue == wxT("Skype")){ strIMAddress.Append(wxT("skype")); } else if (strIMTypeValue == wxT("XMPP")){ strIMAddress.Append(wxT("xmpp")); } else if (strIMTypeValue == wxT("Yahoo")){ strIMAddress.Append(wxT("yahoo")); } else { strIMAddress.Append(strIMTypeValue); } IMListTypeInfoPtr->insert(std::make_pair(IMListIndex, strIMAddress)); IMListPtr->insert(std::make_pair(IMListIndex, txtUsername->GetValue())); // Set the type. if (EditSectionType == CE_GENERAL){ IMListTypePtr->insert(std::make_pair(IMListIndex, wxT(""))); } else if (EditSectionType == CE_HOME) { IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("home"))); } else if (EditSectionType == CE_WORK) { IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("work"))); } // Set the priority. if (priorityCtrl->IsPriorityChecked()){ IMListPrefPtr->insert(std::make_pair(IMListIndex, priorityCtrl->GetValue())); } else { IMListPrefPtr->insert(std::make_pair(IMListIndex, 0)); } // Add to the form. wxListItem coldata; coldata.SetId(IMListIndex); coldata.SetData(IMListIndex); coldata.SetText(cmbIMType->GetValue()); ListCtrlIndex = IMListCtrlPtr->InsertItem(coldata); IMListCtrlPtr->SetItem(ListCtrlIndex, 1, txtUsername->GetValue()); if (priorityCtrl->IsPriorityChecked()){ IMListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), priorityCtrl->GetValue())); } this->Close(); } else if (EditorMode == TRUE){ // Edit the address in the list. wxString strIMAddress; long longSelected = -1; // Specify the type. strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection()); if (strIMTypeValue == wxT("AIM")){ strIMAddress.Append(wxT("aim")); } else if (strIMTypeValue == wxT("Gadu-Gadu")){ strIMAddress.Append(wxT("gg")); } else if (strIMTypeValue == wxT("ICQ")){ strIMAddress.Append(wxT("icq")); } else if (strIMTypeValue == wxT("Skype")){ strIMAddress.Append(wxT("skype")); } else if (strIMTypeValue == wxT("XMPP")){ strIMAddress.Append(wxT("xmpp")); } else if (strIMTypeValue == wxT("Yahoo")){ strIMAddress.Append(wxT("yahoo")); } else { strIMAddress.Append(strIMTypeValue); } IMListPtr->erase(IMListIndex); IMListPtr->insert(std::make_pair(IMListIndex, txtUsername->GetValue())); IMListTypeInfoPtr->erase(IMListIndex); IMListTypeInfoPtr->insert(std::make_pair(IMListIndex, strIMAddress)); // Set the priority. IMListPrefPtr->erase(IMListIndex); if (priorityCtrl->IsPriorityChecked()){ IMListPrefPtr->insert(std::make_pair(IMListIndex, priorityCtrl->GetValue())); } else { IMListPrefPtr->insert(std::make_pair(IMListIndex, 0)); } // Modify the data on the form. longSelected = IMListCtrlPtr->GetNextItem(longSelected, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (longSelected == -1){ return; } IMListCtrlPtr->SetItem(longSelected, 0, cmbIMType->GetValue()); IMListCtrlPtr->SetItem(longSelected, 1, txtUsername->GetValue()); if (priorityCtrl->IsPriorityChecked()){ IMListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), priorityCtrl->GetValue())); } else { IMListCtrlPtr->SetItem(longSelected, 2, wxT("")); } this->Close(); } } void frmContactEditorIM::CloseWindow( wxCommandEvent& event ) { // Close the window. this->Close(); } void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType) { // Set the editor mode. // Set if the editor is adding or editing an address. // FALSE = Add // TRUE = Edit if (EditMode == FALSE){ EditorMode = FALSE; btnAction->SetLabel(_("Add")); this->SetTitle(_("Add IM")); } else if (EditMode == TRUE){ EditorMode = TRUE; btnAction->SetLabel(_("Modify")); this->SetTitle(_("Modify IM")); std::map::iterator intiter; std::map::iterator striter; wxString strValue; wxString strIMType; wxString strIMUser; // Setup the IM Type. striter = IMListPtr->find(IMListIndex); if (striter->first == IMListIndex){ strValue = striter->second; } if (IMListPtr->find(IMListIndex) != IMListPtr->end()){ strIMUser = IMListPtr->find(IMListIndex)->second; } if (IMListTypeInfoPtr->find(IMListIndex) != IMListTypeInfoPtr->end()){ strIMType = IMListTypeInfoPtr->find(IMListIndex)->second; } if (strIMType == wxT("aim")){ cmbIMType->SetValue(wxT("AIM")); cmbIMType->SetSelection(0); } else if (strIMType == wxT("gg")){ cmbIMType->SetValue(wxT("Gadu-Gadu")); cmbIMType->SetSelection(1); } else if (strIMType == wxT("icq")){ cmbIMType->SetValue(wxT("ICQ")); cmbIMType->SetSelection(2); } else if (strIMType == wxT("skype")){ cmbIMType->SetValue(wxT("Skype")); cmbIMType->SetSelection(3); } else if (strIMType == wxT("xmpp")){ cmbIMType->SetValue(wxT("XMPP")); cmbIMType->SetSelection(4); } else if (strIMType == wxT("yahoo")){ cmbIMType->SetValue(wxT("Yahoo")); cmbIMType->SetSelection(5); } else { cmbIMType->SetValue(strIMType); cmbIMType->SetSelection(6); } // Setup the username. txtUsername->SetValue(strIMUser); // Setup the priority. intiter = IMListPrefPtr->find(IMListIndex); if (intiter->first == IMListIndex && intiter->second > 0 && intiter != IMListPrefPtr->end()){ priorityCtrl->SetValue(intiter->second); priorityCtrl->EnablePriority(true); } } EditSectionType = SectType; } void frmContactEditorIM::SetupPointers( std::map *IMList, std::map *IMListAltID, std::map *IMListPID, std::map *IMListType, std::map *IMListTypeInfo, std::map *IMListTokens, std::map *IMListMediatype, std::map *IMListPref, wxListCtrl *IMListCtrl, int IMIndex ) { // Setup the pointers. IMListPtr = IMList; IMListAltIDPtr = IMListAltID; IMListPIDPtr = IMListPID; IMListTypePtr = IMListType; IMListTypeInfoPtr = IMListTypeInfo; IMListTokensPtr = IMListTokens; IMListMediatypePtr = IMListMediatype; IMListPrefPtr = IMListPref; IMListCtrlPtr = IMListCtrl; IMListIndex = IMIndex; }