summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-08-15 23:00:56 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-08-15 23:00:56 +0300
commit013b278a482a1e1821715a1e2c6c7da5e7f94434 (patch)
tree0e00f94aab4cf1894af289dad0b873f20f22d535 /options.cpp
parentead24472fda0b5d69497e792a6b4dede30ab319b (diff)
modified: main.cpp
modified: new_gpg.rc modified: options.cpp modified: resource.h
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp83
1 files changed, 55 insertions, 28 deletions
diff --git a/options.cpp b/options.cpp
index d1c26e2..989b443 100644
--- a/options.cpp
+++ b/options.cpp
@@ -78,7 +78,7 @@ int GpgOptInit(WPARAM wParam,LPARAM lParam)
return 0;
}
-static HWND hwndLoadPublicKey = NULL;
+HWND hwndLoadPublicKey = NULL;
map<int, HANDLE> user_data;
@@ -229,6 +229,7 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
DBDeleteContactSetting(user_data[item_num+1], szModuleName, "KeyType");
DBDeleteContactSetting(user_data[item_num+1], szModuleName, "KeyMainEmail");
DBDeleteContactSetting(user_data[item_num+1], szModuleName, "KeyComment");
+ ListView_SetItemText(hwndList, item_num, 3, _T("not set"));
ListView_SetItemText(hwndList, item_num, 2, _T("not set"));
ListView_SetItemText(hwndList, item_num, 1, _T("not set"));
break;
@@ -441,6 +442,7 @@ static BOOL CALLBACK DlgProcGpgMsgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP
return FALSE;
}
+HWND hPubKeyEdit = NULL;
static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
@@ -457,6 +459,7 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
TranslateDialogDefault(hwndDlg);
tmp = UniGetContactSettingUtf(hContact, szModuleName, "GPGPubKey", _T(""));
SetDlgItemText(hwndDlg, IDC_PUBLIC_KEY_EDIT, (_tcslen(tmp) > 1)?tmp:_T(""));
+ hPubKeyEdit = GetDlgItem(hwndDlg, IDC_PUBLIC_KEY_EDIT);
return TRUE;
}
@@ -485,7 +488,6 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
DBWriteContactSettingTString(hContact, szModuleName, "GPGPubKey", key_buf.substr(ws1,ws2-ws1).c_str());
tmp = new TCHAR [key_buf.length()+1];
_tcscpy(tmp, key_buf.substr(ws1,ws2-ws1).c_str());
- ListView_SetItemText(hwndList_p, item_num, 2, tmp);
{ //gpg execute block
wstring cmd;
TCHAR tmp2[MAX_PATH] = {0};
@@ -523,17 +525,26 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
cp866_to_cp1251(&output);
DBDeleteContactSetting(user_data[item_num+1], szModuleName, "bAlwatsTrust");
{
+ TCHAR *tmp;
string::size_type s = output.find("gpg: key ") + strlen("gpg: key ");
string::size_type s2 = output.find(":", s);
DBWriteContactSettingString(user_data[item_num+1], szModuleName, "KeyID", output.substr(s,s2-s).c_str());
+ tmp = mir_a2t(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)
+ {
DBWriteContactSettingString(user_data[item_num+1], szModuleName, "KeyType", output.substr(s2,s-s2).c_str());
+ }
s+=2;
if((s2 = output.find("(", s)) == string::npos)
s2 = output.find("<", s);
DBWriteContactSettingString(user_data[item_num+1], szModuleName, "KeyMainName", output.substr(s,s2-s-1).c_str());
+ tmp = mir_a2t(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)
s = output.find(">", s2);
s2++;
@@ -543,9 +554,17 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
s+=3;
s2 = output.find(">", s);
DBWriteContactSettingString(user_data[item_num+1], szModuleName, "KeyMainEmail", output.substr(s,s2-s).c_str());
+ tmp = mir_a2t(output.substr(s,s2-s).c_str());
+ ListView_SetItemText(hwndList_p, item_num, 3, tmp);
+ mir_free(tmp);
}
else
+ {
DBWriteContactSettingString(user_data[item_num+1], szModuleName, "KeyMainEmail", output.substr(s2,s-s2).c_str());
+ tmp = mir_a2t(output.substr(s2,s-s2).c_str());
+ ListView_SetItemText(hwndList_p, item_num, 3, tmp);
+ mir_free(tmp);
+ }
}
MessageBoxA(0, output.c_str(), "", MB_OK);
DeleteFile(tmp2);
@@ -555,35 +574,41 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
DestroyWindow(hwndDlg);
break;
case ID_LOAD_FROM_FILE:
- tmp = GetFilePath(_T("Set file containing GPG public key"), _T("*"), _T("GPG public key file"));
- if(!tmp)
- {
- break;
- }
- wfstream f(tmp, std::ios::in);
- delete [] tmp;
- if(!f.is_open())
- {
- MessageBox(0, _T("Failed to open file"), _T("Error"), MB_OK);
- break;
- }
- while(!f.eof())
{
- tmp = new TCHAR [1024];
- f.getline(tmp, 1024, '\n');
- key_buf.append(tmp);
- key_buf.append(_T("\n"));
+ tmp = GetFilePath(_T("Set file containing GPG public key"), _T("*"), _T("GPG public key file"));
+ if(!tmp)
+ {
+ break;
+ }
+ wfstream f(tmp, std::ios::in);
delete [] tmp;
+ if(!f.is_open())
+ {
+ MessageBox(0, _T("Failed to open file"), _T("Error"), MB_OK);
+ break;
+ }
+ while(!f.eof() && f.is_open())
+ {
+ tmp = new TCHAR [1024];
+ f.getline(tmp, 1024, '\n');
+ key_buf.append(tmp);
+ key_buf.append(_T("\n"));
+ delete [] tmp;
+ }
+ f.close();
+ if(((ws2 = key_buf.find(_T("-----END PGP PUBLIC KEY BLOCK-----"))) == wstring::npos) || ((ws1 = key_buf.find(_T("-----BEGIN PGP PUBLIC KEY BLOCK-----"))) == wstring::npos))
+ {
+ MessageBox(0, _T("This is not public key"), _T("INFO"), MB_OK);
+ break;
+ }
+ ws2 += _tcslen(_T("-----END PGP PUBLIC KEY BLOCK-----"));
+ SetDlgItemText(hwndDlg, IDC_PUBLIC_KEY_EDIT, key_buf.substr(ws1,ws2-ws1).c_str());
+ key_buf.clear();
}
- f.close();
- if(((ws2 = key_buf.find(_T("-----END PGP PUBLIC KEY BLOCK-----"))) == wstring::npos) || ((ws1 = key_buf.find(_T("-----BEGIN PGP PUBLIC KEY BLOCK-----"))) == wstring::npos))
- {
- MessageBox(0, _T("This is not public key"), _T("INFO"), MB_OK);
- break;
- }
- ws2 += _tcslen(_T("-----END PGP PUBLIC KEY BLOCK-----"));
- SetDlgItemText(hwndDlg, IDC_PUBLIC_KEY_EDIT, key_buf.substr(ws1,ws2-ws1).c_str());
- key_buf.clear();
+ break;
+ case IDC_SELECT_EXISTING:
+ void ShowSelectExistingKeyDialog();
+ ShowSelectExistingKeyDialog();
break;
}
break;
@@ -613,6 +638,8 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
return FALSE;
}
+
+
void ShowLoadPublicKeyDialog()
{
if (hwndLoadPublicKey == NULL)