+ if (XABArgs.Found(wxT("d"), &wxSContactFilename)){
+
+ // Check if the filename exists.
+
+ wxFileName contactfile(wxSContactFilename);
+
+ if (!contactfile.FileExists()){
+
+ wxMessageBox(_("The file with the filename given does not exist."), _("Error loading contact"), wxICON_ERROR);
+ return false;
+
+ }
+
+ // Check if file is in the user's Xestia Address Book data storage
+ // path. If it is, refuse to open it.
+
+ wxString UserDir = GetUserDir();
+ long UserDirLength = UserDir.Len();
+
+ if (UserDir == contactfile.GetFullPath().Mid(0, UserDirLength)){
+
+ wxMessageBox(_("The file with the filename given is in the directories that Xestia Address Book stores it's data and cannot be opened directly."), _("Error loading contact"), wxICON_ERROR);
+ return false;
+
+ }
+
+ wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+ wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+ wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);
+ wxIcon contacticon;
+ contacticon.CopyFromBitmap(contacticonbmp);
+
+ // Setup the contact information icons for later.
+
+ wxFileSystem::AddHandler(new wxMemoryFSHandler);
+ wxImage ciicon_png;
+
+ wxMemoryInputStream ciptostream(icons_cipto_png, sizeof(icons_cipto_png));
+ ciicon_png.LoadFile(ciptostream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("cipto.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ wxMemoryInputStream cilogstream(icons_cilog_png, sizeof(icons_cilog_png));
+ ciicon_png.LoadFile(cilogstream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("cilog.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ wxMemoryInputStream cisndstream(icons_cisnd_png, sizeof(icons_cisnd_png));
+ ciicon_png.LoadFile(cisndstream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("cisnd.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ wxMemoryInputStream cikeystream(icons_cikey_png, sizeof(icons_cikey_png));
+ ciicon_png.LoadFile(cikeystream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("cikey.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ wxMemoryInputStream civenstream(icons_civen_png, sizeof(icons_civen_png));
+ ciicon_png.LoadFile(civenstream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("civen.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ wxMemoryInputStream ciextstream(icons_ciext_png, sizeof(icons_ciext_png));
+ ciicon_png.LoadFile(ciextstream, wxBITMAP_TYPE_PNG);
+ wxMemoryFSHandler::AddFile(wxT("ciext.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+ // Setup the contact information window.
+
+ frmContact *ContactWindow = new frmContact( NULL );
+
+ std::map<wxString, wxString> MemoryFileSystem;
+
+ vCard FileLoadData;
+ FileLoadData.LoadFile(wxSContactFilename);
+ ContactWindow->SetMode(true);
+ ContactWindow->SetUID(0);
+ ContactWindow->SetupPointers(&MemoryFileSystem);
+ ContactWindow->SetupContactData(&FileLoadData);
+ ContactWindow->Show(true);
+
+ /*frmContactEditor *ContactEditor = new frmContactEditor( NULL );
+ ContactEditor->SetupHeaders();
+ ContactEditor->SetMode(TRUE);
+ ContactEditor->LoadContact(wxSContactFilename);
+ ContactEditor->SetIcon(contacticon);
+ ContactEditor->Show(true);*/
+
+ SetTopWindow(ContactWindow);
+
+ return true;
+
+ }
+