diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-08 14:41:24 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-08 14:41:24 +0300 |
commit | 3777be91f293eac73dad6355eb2c4a6261aad467 (patch) | |
tree | 7a1b1229242437121f91667707cf2b1a331d798b /options.cpp | |
parent | ab8714c350485b27303b6a8f711f6cbed92efad8 (diff) |
userlist finished ?
Diffstat (limited to 'options.cpp')
-rw-r--r-- | options.cpp | 51 |
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; |