Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
frmContactEditor(*): Call Layout on szrGeneral after adding priorty control
[xestiaab/.git] / source / contacteditor / frmContactEditorIM.cpp
index 98ef20d..cfee2d3 100644 (file)
@@ -1,3 +1,21 @@
+// 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 <http://www.gnu.org/licenses/>
+
 #include "frmContactEditorIM.h"
 #include <wx/msgdlg.h>
 #include <wx/tokenzr.h>
@@ -8,8 +26,13 @@ frmContactEditorIM::frmContactEditorIM( wxWindow* parent )
 :
 frmContactEditorIMADT( parent )
 {
+       
+       // Setup the window.
+       
        EditorMode = FALSE;
-       sliPriority->Disable();
+       priorityCtrl = new XABPriorityCtrl(tabGeneral);
+       szrGeneral->Add(priorityCtrl, 1, wxEXPAND, 5);
+       szrGeneral->Layout();
        
        // Add some values to the drop down box for IM types.
        
@@ -19,21 +42,15 @@ frmContactEditorIMADT( parent )
        cmbIMType->Append(wxT("Skype"));
        cmbIMType->Append(wxT("XMPP"));
        cmbIMType->Append(wxT("Yahoo"));
+       cmbIMType->Append(_("Other"));
        
 }
 
-void frmContactEditorIM::EnablePriority( wxCommandEvent& event )
-{
-       if (chkUsePref->IsChecked()){
-               sliPriority->Enable();
-       } else {
-               sliPriority->Disable();
-       }
-}
-
 void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
 {
 
+       // Process the action.
+       
        long ListCtrlIndex;
        
        // Check if IM type is empty and if it is then
@@ -63,8 +80,7 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                // Add the address to the list (maps).
                
                wxString strIMAddress;
-               wxString strValue;              
-               
+
                // Strip out the colons.
                
                strIMAddress.Replace(wxT(":"), wxT(""), TRUE);
@@ -75,38 +91,36 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                
                if (strIMTypeValue == wxT("AIM")){
                
-                       strIMAddress.Append(wxT("aim:"));
+                       strIMAddress.Append(wxT("aim"));
                
                } else if (strIMTypeValue == wxT("Gadu-Gadu")){
                
-                       strIMAddress.Append(wxT("gg:"));
+                       strIMAddress.Append(wxT("gg"));
                
                } else if (strIMTypeValue == wxT("ICQ")){
                
-                       strIMAddress.Append(wxT("icq:"));                       
+                       strIMAddress.Append(wxT("icq"));                        
                
                } else if (strIMTypeValue == wxT("Skype")){
                
-                       strIMAddress.Append(wxT("skype:"));                     
+                       strIMAddress.Append(wxT("skype"));                      
                
                } else if (strIMTypeValue == wxT("XMPP")){
                
-                       strIMAddress.Append(wxT("xmpp:"));                      
+                       strIMAddress.Append(wxT("xmpp"));                       
                
                } else if (strIMTypeValue == wxT("Yahoo")){
                
-                       strIMAddress.Append(wxT("yahoo:"));                     
+                       strIMAddress.Append(wxT("yahoo"));                      
                
                } else {
                
-                       strIMAddress.Append(strIMTypeValue + wxT(":"));
+                       strIMAddress.Append(strIMTypeValue);
                
                }
                
-               strIMAddress.Append(strValue);
-               strIMAddress.Append(txtUsername->GetValue());
-               
-               IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress));
+               IMListTypeInfoPtr->insert(std::make_pair(IMListIndex, strIMAddress));
+               IMListPtr->insert(std::make_pair(IMListIndex, txtUsername->GetValue()));
                
                // Set the type.
                
@@ -126,9 +140,9 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                
                // Set the priority.
                
-               if (chkUsePref->IsChecked()){
+               if (priorityCtrl->IsPriorityChecked()){
                
-                       IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue()));
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, priorityCtrl->GetValue()));
                
                } else {
                
@@ -147,9 +161,9 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                
                IMListCtrlPtr->SetItem(ListCtrlIndex, 1, txtUsername->GetValue());
                
-               if (chkUsePref->IsChecked()){
+               if (priorityCtrl->IsPriorityChecked()){
                
-                       IMListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+                       IMListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
                
                }
                
@@ -160,60 +174,55 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                // Edit the address in the list.
                
                wxString strIMAddress;
-               wxString strValue;
                long longSelected = -1;
                
-               // 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:"));
+                       strIMAddress.Append(wxT("aim"));
                
                } else if (strIMTypeValue == wxT("Gadu-Gadu")){
                
-                       strIMAddress.Append(wxT("gg:"));
+                       strIMAddress.Append(wxT("gg"));
                
                } else if (strIMTypeValue == wxT("ICQ")){
                
-                       strIMAddress.Append(wxT("icq:"));                       
+                       strIMAddress.Append(wxT("icq"));                        
                
                } else if (strIMTypeValue == wxT("Skype")){
                
-                       strIMAddress.Append(wxT("skype:"));                     
+                       strIMAddress.Append(wxT("skype"));                      
                
                } else if (strIMTypeValue == wxT("XMPP")){
                
-                       strIMAddress.Append(wxT("xmpp:"));                      
+                       strIMAddress.Append(wxT("xmpp"));                       
                
                } else if (strIMTypeValue == wxT("Yahoo")){
                
-                       strIMAddress.Append(wxT("yahoo:"));                     
+                       strIMAddress.Append(wxT("yahoo"));                      
                
                } else {
                
-                       strIMAddress.Append(strIMTypeValue + wxT(":"));
+                       strIMAddress.Append(strIMTypeValue);
                
                }
-               
-               strIMAddress.Append(strValue);
-               strIMAddress.Append(txtUsername->GetValue());
-               
+
                IMListPtr->erase(IMListIndex);
-               IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress));
+               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 (chkUsePref->IsChecked()){
+               if (priorityCtrl->IsPriorityChecked()){
                
-                       IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue()));
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, priorityCtrl->GetValue()));
                
                } else {
                
@@ -234,9 +243,9 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
                IMListCtrlPtr->SetItem(longSelected, 0, cmbIMType->GetValue());
                IMListCtrlPtr->SetItem(longSelected, 1, txtUsername->GetValue());
                
-               if (chkUsePref->IsChecked()){
+               if (priorityCtrl->IsPriorityChecked()){
                
-                       IMListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+                       IMListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), priorityCtrl->GetValue()));
                
                } else {
                
@@ -252,11 +261,18 @@ void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
 
 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
@@ -278,8 +294,8 @@ void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType)
                wxString strValue;
                wxString strIMType;
                wxString strIMUser;
-               
-               // Setup the IM Type.           
+                               
+               // Setup the IM Type.
                
                striter = IMListPtr->find(IMListIndex);
                
@@ -287,39 +303,54 @@ void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType)
                
                        strValue = striter->second;
                
-               }               
+               }
                
-               wxStringTokenizer IMAddressToken(strValue, wxT(":"));
-               strIMType = IMAddressToken.GetNextToken();
-               strIMUser = IMAddressToken.GetNextToken();
+               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->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);
                
                }
                
@@ -331,11 +362,11 @@ void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType)
                
                intiter = IMListPrefPtr->find(IMListIndex);
                
-               if (intiter->first == IMListIndex && intiter->second > 0){
+               if (intiter->first == IMListIndex && intiter->second > 0 &&
+                       intiter != IMListPrefPtr->end()){
                
-                       sliPriority->SetValue(intiter->second);
-                       sliPriority->Enable();
-                       chkUsePref->SetValue(TRUE);
+                       priorityCtrl->SetValue(intiter->second);
+                       priorityCtrl->EnablePriority(true);
                
                }
                
@@ -349,6 +380,7 @@ void frmContactEditorIM::SetupPointers( std::map<int, wxString> *IMList,
        std::map<int, wxString> *IMListAltID,
        std::map<int, wxString> *IMListPID,
        std::map<int, wxString> *IMListType,
+       std::map<int, wxString> *IMListTypeInfo,
        std::map<int, wxString> *IMListTokens,
        std::map<int, wxString> *IMListMediatype,
        std::map<int, int> *IMListPref,
@@ -356,10 +388,13 @@ void frmContactEditorIM::SetupPointers( std::map<int, wxString> *IMList,
        int IMIndex )
 {
 
+       // Setup the pointers.
+       
        IMListPtr = IMList;
        IMListAltIDPtr = IMListAltID;
        IMListPIDPtr = IMListPID;
        IMListTypePtr = IMListType;
+       IMListTypeInfoPtr = IMListTypeInfo;
        IMListTokensPtr = IMListTokens;
        IMListMediatypePtr = IMListMediatype;
        IMListPrefPtr = IMListPref;
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy