#include "gnupgplugin.h" int UserInfoInit(WPARAM wparam, LPARAM lparam) { OPTIONSDIALOGPAGE odp; ZeroMemory(&odp,sizeof(odp)); odp.cbSize=sizeof(odp); odp.hInstance=dllinstance; odp.pszTemplate=(char*)MAKEINTRESOURCE(IDD_USERINFO_DLG); odp.pfnDlgProc=UserInfoDialogProcedure; odp.pszTitle=Translate(txtgnupgplugin); CallService(MS_USERINFO_ADDPAGE,wparam,(LPARAM)&odp); return 0; } BOOL CALLBACK UserInfoDialogProcedure(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) { char *pos; HANDLE hcontact; char buffer[keybuffersize]; char keyuserid[keyuseridsize]; gpgResult gpgresult; DBVARIANT dbv; int error; switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hdlg); hcontact=(HANDLE)lparam; if (hcontact==NULL) { ShowWindow(GetDlgItem(hdlg,IDC_KEYRECEIVED_STATIC),SW_HIDE); ShowWindow(GetDlgItem(hdlg,IDC_KEYRECEIVED_EDIT),SW_HIDE); ShowWindow(GetDlgItem(hdlg,IDC_KEY_EDIT),SW_HIDE); ShowWindow(GetDlgItem(hdlg,IDC_IMPORT_BTN),SW_HIDE); } break; case WM_NOTIFY: switch (((LPNMHDR)lparam)->code) { case PSN_INFOCHANGED: hcontact=(HANDLE)((PSHNOTIFY *)lparam)->lParam; error=DBGetContactSetting(hcontact,pluginid,dbkeyuserid,&dbv); if (!error) strcpy(keyuserid,dbv.pszVal); else strcpy(keyuserid,""); DBFreeVariant(&dbv); if (strlen(keyuserid)!=0) { pos=getNextPart(buffer,keyuserid,txtidseparator); SetDlgItemText(hdlg,IDC_KEYID_EDIT,(LPCTSTR)buffer); getLastPart(buffer,pos); SetDlgItemText(hdlg,IDC_USERID_EDIT,(LPCTSTR)buffer); } else { SetDlgItemText(hdlg,IDC_KEYID_EDIT,(LPCTSTR)Translate(txtnone)); EnableWindow(GetDlgItem(hdlg,IDC_KEYID_EDIT),FALSE); SetDlgItemText(hdlg,IDC_USERID_EDIT,(LPCTSTR)Translate(txtnone)); EnableWindow(GetDlgItem(hdlg,IDC_USERID_EDIT),FALSE); } error=DBGetContactSetting(hcontact,pluginid,dbkeymodified,&dbv); if (!error) strcpy(buffer,dbv.pszVal); else strcpy(buffer,""); DBFreeVariant(&dbv); if (strlen(buffer)==0) { SetDlgItemText(hdlg,IDC_KEYRECEIVED_EDIT,(LPCTSTR)Translate(txtnone)); EnableWindow(GetDlgItem(hdlg,IDC_KEYRECEIVED_EDIT),FALSE); } else SetDlgItemText(hdlg,IDC_KEYRECEIVED_EDIT,(LPCTSTR)buffer); error=DBGetContactSetting(hcontact,pluginid,dbkey,&dbv); if (!error) strcpy(buffer,dbv.pszVal); else strcpy(buffer,""); DBFreeVariant(&dbv); SetDlgItemText(hdlg,IDC_KEY_EDIT,(LPCTSTR)buffer); if (strlen(buffer)==0) EnableWindow(GetDlgItem(hdlg,IDC_IMPORT_BTN),FALSE); break; } break; case WM_COMMAND: switch (LOWORD(wparam)) { case IDC_IMPORT_BTN: GetDlgItemText(hdlg,IDC_KEY_EDIT,(LPTSTR)buffer,sizeof(buffer)); gpgresult=gpgImportPublicKey(buffer); if (gpgresult!=gpgSuccess) ErrorMessage(txterror,txtimportpublickeyfailed,txtverifyoptions); break; } break; } return 0; }