Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
frmContactEditor: Stop XAB crashing when pressing Modify/Delete
[xestiaab/.git] / source / contacteditor / frmContactEditor-Key.cpp
index 12dfa09..3dd7876 100644 (file)
@@ -1,71 +1,97 @@
+// frmContactEditor-Key.cpp - frmContactEditor Key tab subroutines.
+//
+// (c) 2012-2016 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 "frmContactEditor.h"
 #include "frmContactEditorKey.h"
 
 void frmContactEditor::AddKey( wxCommandEvent& event )
 {
-    int intResult = 0;
-    
-    frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
-    frameCEKey->SetEditorMode(FALSE);
-    intResult = GetLastInt(&KeyList);
-    frameCEKey->SetupPointers(&KeyList,
-                              &KeyListAltID,
-                              &KeyListPID,
-                              &KeyListKeyType,
-                              &KeyListDataType,
-                              &KeyListType,
-                              &KeyListTokens,
-                              &KeyListPref,
-                              lboKeys,
-                              (intValueSeek));
-    frameCEKey->ShowModal();
-    delete frameCEKey;
-    frameCEKey = NULL;
+       
+       // Bring up the window for adding a key.
+           
+       frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
+       frameCEKey->SetEditorMode(FALSE);
+       frameCEKey->SetupPointers(&ContactEditorData.KeyList,
+               &ContactEditorData.KeyListAltID,
+                &ContactEditorData.KeyListPID,
+                &ContactEditorData.KeyListKeyType,
+                &ContactEditorData.KeyListDataType,
+                &ContactEditorData.KeyListType,
+                &ContactEditorData.KeyListTokens,
+                &ContactEditorData.KeyListPref,
+                lboKeys,
+                (intValueSeek));
+       frameCEKey->ShowModal();
+       delete frameCEKey;
+       frameCEKey = NULL;
+       
 }
 
 void frmContactEditor::ModifyKey( wxCommandEvent& event )
 {
-    long longSelected = -1;
-    int intSelectedData = 0;
+       
+       // Bring up the window for modifying a key.
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
     
-    if (!GetSelectedItem(lboKeys,
-                         &longSelected,
-                         &intSelectedData)){
-        return;
-    }
+       if (lboKeys->GetItemCount() == 0 || !GetSelectedItem(lboKeys,
+               &longSelected,
+                &intSelectedData)){
+               return;
+       }
     
-    frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
-    frameCEKey->SetupPointers(&KeyList,
-                              &KeyListAltID,
-                              &KeyListPID,
-                              &KeyListKeyType,
-                              &KeyListDataType,
-                              &KeyListType,
-                              &KeyListTokens,
-                              &KeyListPref,
-                              lboKeys,
-                              intSelectedData);
-    frameCEKey->SetEditorMode(TRUE);
-    frameCEKey->ShowModal();
-    delete frameCEKey;
-    frameCEKey = NULL;
+       frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
+       frameCEKey->SetupPointers(&ContactEditorData.KeyList,
+               &ContactEditorData.KeyListAltID,
+                &ContactEditorData.KeyListPID,
+                &ContactEditorData.KeyListKeyType,
+                &ContactEditorData.KeyListDataType,
+                &ContactEditorData.KeyListType,
+                &ContactEditorData.KeyListTokens,
+                &ContactEditorData.KeyListPref,
+                lboKeys,
+                intSelectedData);
+       frameCEKey->SetEditorMode(TRUE);
+       frameCEKey->ShowModal();
+       delete frameCEKey;
+       frameCEKey = NULL;
+       
 }
 
 void frmContactEditor::DeleteKey( wxCommandEvent& event )
 {
-    long longSelected = -1;
-    int intSelectedData = 0;
+       
+       // Delete a key.
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
     
-    if (!GetSelectedItem(lboKeys,
-                         &longSelected,
-                         &intSelectedData)){
-        return;
-    }
+       if (lboKeys->GetItemCount() == 0 || !GetSelectedItem(lboKeys,
+               &longSelected,
+               &intSelectedData)){
+               return;
+       }
     
-    lboKeys->DeleteItem(longSelected);
+       lboKeys->DeleteItem(longSelected);
     
-    DeleteMapData(intSelectedData, &KeyList, &KeyListAltID,
-                  &KeyListPID, &KeyListKeyType, &KeyListDataType, &KeyListType,
-                  &KeyListTokens, &KeyListPref);
+       DeleteMapData(intSelectedData, &ContactEditorData.KeyList, &ContactEditorData.KeyListAltID,
+               &ContactEditorData.KeyListPID, &ContactEditorData.KeyListKeyType, &ContactEditorData.KeyListDataType, &ContactEditorData.KeyListType,
+               &ContactEditorData.KeyListTokens, &ContactEditorData.KeyListPref);
     
 }
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