summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp51
1 files changed, 38 insertions, 13 deletions
diff --git a/options.cpp b/options.cpp
index dcadd7d..2b813d7 100644
--- a/options.cpp
+++ b/options.cpp
@@ -56,10 +56,14 @@ HWND hCaller;
std::map<int, HANDLE> user_data;
+int item_num = 0;
+HWND hwndList_p;
+
void ShowLoadPublicKeyDialog(HWND hwndCaller);
static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hwndList=GetDlgItem(hwndDlg, IDC_USERLIST);
+ hwndList_p = hwndList;
LVCOLUMN col;
LVITEM item;
NMLISTVIEW * hdr = (NMLISTVIEW *) lParam;
@@ -99,7 +103,8 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
TCHAR *tmp = mir_a2t((char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0));
ListView_SetItemText(hwndList, iRow, 1, tmp);
mir_free(tmp);
- ListView_SetItemText(hwndList, iRow, 2, UniGetContactSettingUtf(hContact, szModuleName, "GPGPubKey", _T("not set")));
+ tmp = UniGetContactSettingUtf(hContact, szModuleName, "GPGPubKey", _T("not set"));
+ ListView_SetItemText(hwndList, iRow, 2, (_tcslen(tmp) > 1)?tmp:_T("not set"));
if(DBGetContactSettingByte(hContact, szModuleName, "GPGEncryption", 0))
ListView_SetItemState(hwndList, iRow, 0x2000, 0xF000);
user_data[i] = hContact;
@@ -130,16 +135,20 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
case WM_NOTIFY:
{
- if(hdr && hdr->hdr.code == LVN_ITEMCHANGED && IsWindowVisible(hdr->hdr.hwndFrom) && hdr->iItem != (-1))
+ if(hdr && IsWindowVisible(hdr->hdr.hwndFrom) && hdr->iItem != (-1))
{
- int i = hdr->iItem;
- HANDLE hContact = user_data[i+1];
- if(ListView_GetItemState(hwndList, i, 0xF000) == 0x2000)
- DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 1);
- else
- DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 0);
+ if(hdr->hdr.code == LVN_ITEMCHANGED)
+ {
+ int i = hdr->iItem;
+ HANDLE hContact = user_data[i+1];
+ if(ListView_GetItemState(hwndList, i, 0xF000) == 0x2000)
+ DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 1);
+ else
+ DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 0);
+ item_num = hdr->iItem;
+ }
}
- switch (((LPNMHDR)lParam)->code)
+ switch (((LPNMHDR)lParam)->code)
{
case PSN_APPLY:
@@ -203,20 +212,22 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP
return TRUE;
}
}
- }
+ }
break;
}
-
return FALSE;
}
static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
+ HANDLE hContact = user_data[item_num+1];
switch (msg)
{
case WM_INITDIALOG:
{
TranslateDialogDefault(hwndDlg);
+ TCHAR *tmp = UniGetContactSettingUtf(hContact, szModuleName, "GPGPubKey", _T(""));
+ SetDlgItemText(hwndDlg, IDC_PUBLIC_KEY_EDIT, (_tcslen(tmp) > 1)?tmp:_T(""));
return TRUE;
}
@@ -225,6 +236,13 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
{
switch (LOWORD(wParam))
{
+ case ID_OK:
+ TCHAR tmp[1024];
+ GetDlgItemText(hwndDlg, IDC_PUBLIC_KEY_EDIT, tmp, 1024);
+ DBWriteContactSettingTString(hContact, szModuleName, "GPGPubKey", tmp);
+ ListView_SetItemText(hwndList_p, item_num, 2, (_tcslen(tmp) > 1)?tmp:_T("not set"));
+ DestroyWindow(hwndDlg);
+ break;
default:
break;
}
@@ -243,8 +261,15 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
return TRUE;
}
}
- }
- break;
+ }
+ break;
+ case WM_CLOSE:
+ DestroyWindow(hwndDlg);
+ break;
+ case WM_DESTROY:
+ hwndLoadPublicKey = NULL;
+ break;
+
}
return FALSE;