64 |
static int |
static int |
65 |
do_delsig (HWND dlg, listview_ctrl_t lv, winpt_key_t key) |
do_delsig (HWND dlg, listview_ctrl_t lv, winpt_key_t key) |
66 |
{ |
{ |
|
int pos, npos, id; |
|
|
int signo=0, uidno=0; |
|
|
GpgKeyEdit *ke; |
|
67 |
gpgme_error_t err; |
gpgme_error_t err; |
68 |
|
GpgKeyEdit *ke; |
69 |
|
char keyid[32]; |
70 |
|
int pos, npos, id, is_selfsig=0; |
71 |
|
int signo=0, uidno=0; |
72 |
|
|
73 |
npos = pos = listview_get_curr_pos (lv); |
npos = pos = listview_get_curr_pos (lv); |
74 |
if (!is_sig (lv, -1)) |
if (!is_sig (lv, -1)) |
75 |
return -1; |
return -1; |
76 |
|
listview_get_item_text (lv, pos, SL_COL_KEYID, keyid, sizeof (keyid)-1); |
77 |
|
if (!strncmp (key->keyid, keyid+2, 8)) |
78 |
|
is_selfsig = 1; |
79 |
|
|
80 |
while (pos > 0 && is_sig (lv, pos)) { |
while (pos > 0 && is_sig (lv, pos)) { |
81 |
signo++; |
signo++; |
82 |
pos--; |
pos--; |
90 |
uidno++; |
uidno++; |
91 |
|
|
92 |
/* XXX: do not allow to delete the self signature */ |
/* XXX: do not allow to delete the self signature */ |
93 |
id = log_box (_("Key Manager"), MB_YESNO, |
id = log_box (_("Key Manager"), is_selfsig? MB_WARN_ASK : MB_QUEST_ASK, |
94 |
_("Are you really sure you want to delete this signature from\n" |
_("Are you really sure you want to delete this %s from\n\n" |
95 |
" \"%s\""), key->uid); |
" \"%s\""), is_selfsig? _("self signature") : _("signature"), |
96 |
|
key->uid); |
97 |
if (id == IDNO) |
if (id == IDNO) |
98 |
return 0; |
return 0; |
99 |
|
|
106 |
else |
else |
107 |
listview_del_item (lv, pos); |
listview_del_item (lv, pos); |
108 |
delete ke; |
delete ke; |
109 |
key->update = 1; /*update*/ |
if (!err) |
110 |
|
key->update = 1; |
111 |
return err? -1 : 0; |
return err? -1 : 0; |
112 |
} |
} |
113 |
|
|
267 |
|
|
268 |
|
|
269 |
/* Receive all missing keys marked in the list @lv. */ |
/* Receive all missing keys marked in the list @lv. */ |
270 |
static void |
static int |
271 |
recv_missing_keys (HWND dlg, listview_ctrl_t lv) |
recv_missing_keys (HWND dlg, listview_ctrl_t lv) |
272 |
{ |
{ |
|
int i, n, cnt=0; |
|
273 |
char id[128], keyid[18+1]; |
char id[128], keyid[18+1]; |
274 |
|
int i, n, cnt=0; |
275 |
|
|
276 |
i = msg_box (dlg, _("Really receive all missing keys?"), |
i = msg_box (dlg, _("Really receive all missing keys?"), |
277 |
_("Key Manager"), MB_YESNO|MB_INFO); |
_("Key Manager"), MB_YESNO|MB_INFO); |
278 |
if (i == IDNO) |
if (i == IDNO) |
279 |
return; |
return 0; |
280 |
|
|
281 |
n = listview_count_items (lv, 0); |
n = listview_count_items (lv, 0); |
282 |
for (i = 0; i < n; i++) { |
for (i = 0; i < n; i++) { |
285 |
listview_get_item_text (lv, i, SL_COL_KEYID, |
listview_get_item_text (lv, i, SL_COL_KEYID, |
286 |
keyid, sizeof (keyid) -1); |
keyid, sizeof (keyid) -1); |
287 |
if (!hkp_recv_key (dlg, default_keyserver, |
if (!hkp_recv_key (dlg, default_keyserver, |
288 |
default_keyserver_port, keyid, 0, 0)) |
default_keyserver_port, keyid, 0, 0)) { |
289 |
|
keycache_update (0, keyid); |
290 |
cnt++; |
cnt++; |
291 |
|
} |
292 |
else |
else |
293 |
break; |
break; |
294 |
} |
} |
295 |
} |
} |
296 |
if (cnt > 0) |
return cnt; |
|
keycache_set_reload (1); |
|
297 |
} |
} |
298 |
|
|
299 |
|
|
351 |
listview_get_item_text (lv, n, SL_COL_KEYID, keyid, DIM (keyid)-1); |
listview_get_item_text (lv, n, SL_COL_KEYID, keyid, DIM (keyid)-1); |
352 |
if (!strcmp (status, "NOKEY")) { |
if (!strcmp (status, "NOKEY")) { |
353 |
int id = msg_box (dlg, _("Key not found in keyring, do you want to fetch it from the keyserver?"), |
int id = msg_box (dlg, _("Key not found in keyring, do you want to fetch it from the keyserver?"), |
354 |
_("Key Manager"), MB_QUEST_ASK); |
_("Key Manager"), MB_QUEST_ASK); |
355 |
if (id == IDNO) |
if (id == IDNO) |
356 |
return; |
return; |
357 |
if (recv_single_key (dlg, lv, n)) |
if (recv_single_key (dlg, lv, n)) |
420 |
return FALSE; |
return FALSE; |
421 |
|
|
422 |
case WM_SYSCOMMAND: |
case WM_SYSCOMMAND: |
423 |
if (LOWORD (wparam) == SC_CLOSE) { |
if (LOWORD (wparam) == SC_CLOSE) |
|
if (k->update) |
|
|
keycache_update (0, k->keyid); |
|
424 |
EndDialog (dlg, TRUE); |
EndDialog (dlg, TRUE); |
|
} |
|
425 |
return FALSE; |
return FALSE; |
426 |
|
|
427 |
case WM_NOTIFY: |
case WM_NOTIFY: |
490 |
return TRUE; |
return TRUE; |
491 |
|
|
492 |
case IDOK: |
case IDOK: |
|
if (k->update) |
|
|
keycache_update (0, k->keyid); |
|
493 |
EndDialog (dlg, TRUE); |
EndDialog (dlg, TRUE); |
494 |
return TRUE; |
return TRUE; |
495 |
} |
} |