1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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;
}
|