diff options
Diffstat (limited to 'GnuPG/userinfo.cpp')
-rw-r--r-- | GnuPG/userinfo.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/GnuPG/userinfo.cpp b/GnuPG/userinfo.cpp new file mode 100644 index 0000000..badda80 --- /dev/null +++ b/GnuPG/userinfo.cpp @@ -0,0 +1,104 @@ +#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;
+}
|