diff options
Diffstat (limited to 'options.cpp')
-rw-r--r-- | options.cpp | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/options.cpp b/options.cpp index 42d81d2..e00ebbd 100644 --- a/options.cpp +++ b/options.cpp @@ -289,12 +289,16 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA { if(hdr->hdr.code == LVN_ITEMCHANGED) { + void setClistIcon(HANDLE hContact); + void setSrmmIcon(HANDLE hContact); int i = hdr->iItem; if(ListView_GetItemState(hwndList, i, 0xF000) == 0x2000) DBWriteContactSettingByte(user_data[i+1], szGPGModuleName, "GPGEncryption", 1); else DBWriteContactSettingByte(user_data[i+1], szGPGModuleName, "GPGEncryption", 0); item_num = hdr->iItem; + setClistIcon(user_data[i+1]); + setSrmmIcon(user_data[i+1]); } } switch (((LPNMHDR)lParam)->code) @@ -592,27 +596,39 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP } mir_free(begin); mir_free(end); - cp866_to_cp1251(&output); DBDeleteContactSetting(user_data[item_num+1], szGPGModuleName, "bAlwatsTrust"); { TCHAR *tmp; + char *tmp2; string::size_type s = output.find("gpg: key ") + strlen("gpg: key "); - string::size_type s2 = output.find(":", s); - DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyID", output.substr(s,s2-s).c_str()); - tmp = mir_a2t(output.substr(s,s2-s).c_str()); + string::size_type s2 = output.find(":", s);
+ tmp2 = new char [output.substr(s,s2-s).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s).c_str());
+ mir_utf8decode(tmp2, 0); + DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyID", tmp2); + mir_free(tmp2); + tmp = mir_utf8decodeW(output.substr(s,s2-s).c_str()); ListView_SetItemText(hwndList_p, item_num, 1, tmp); mir_free(tmp); s2+=2; s = output.find("\"", s2)-1; if(s != s2-1) - { + {
+ tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str()); + mir_utf8decode(tmp2, 0); DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyType", output.substr(s2,s-s2).c_str()); + mir_free(tmp2); } s+=2; if((s2 = output.find("(", s)) == string::npos) s2 = output.find("<", s); + tmp2 = new char [output.substr(s,s2-s-1).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s-1).c_str());
+ mir_utf8decode(tmp2, 0); DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainName", output.substr(s,s2-s-1).c_str()); - tmp = mir_a2t(output.substr(s,s2-s-1).c_str()); + mir_free(tmp2); + tmp = mir_utf8decodeW(output.substr(s,s2-s-1).c_str()); ListView_SetItemText(hwndList_p, item_num, 2, tmp); mir_free(tmp); if((s = output.find(")", s2)) == string::npos) @@ -620,18 +636,30 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP s2++; if(output[s] == ')') { + tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str()); + mir_utf8decode(tmp2, 0); DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyComment", output.substr(s2,s-s2).c_str()); + mir_free(tmp2); s+=3; s2 = output.find(">", s); + tmp2 = new char [output.substr(s,s2-s).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s).c_str()); + mir_utf8decode(tmp2, 0); DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainEmail", output.substr(s,s2-s).c_str()); - tmp = mir_a2t(output.substr(s,s2-s).c_str()); + mir_free(tmp2); + tmp = mir_utf8decodeW(output.substr(s,s2-s).c_str()); ListView_SetItemText(hwndList_p, item_num, 3, tmp); mir_free(tmp); } else { + tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str()); + mir_utf8decode(tmp2, 0); DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainEmail", output.substr(s2,s-s2).c_str()); - tmp = mir_a2t(output.substr(s2,s-s2).c_str()); + mir_free(tmp2); + tmp = mir_utf8decodeW(output.substr(s2,s-s2).c_str()); ListView_SetItemText(hwndList_p, item_num, 3, tmp); mir_free(tmp); } @@ -640,7 +668,9 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP ListView_SetColumnWidth(hwndList_p, 2, LVSCW_AUTOSIZE); ListView_SetColumnWidth(hwndList_p, 3, LVSCW_AUTOSIZE); } - MessageBoxA(0, output.c_str(), "", MB_OK); + tmp = mir_utf8decodeW(output.c_str()); + MessageBox(0, tmp, _T(""), MB_OK); + mir_free(tmp); DeleteFile(tmp2); } delete [] tmp; |