// Copyright © 2010 sss // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" #include extern HINSTANCE hInst; static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); int GpgOptInit(WPARAM wParam,LPARAM lParam) { OPTIONSDIALOGPAGE odp = { 0 }; odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_GPG); odp.pszTitle = szModuleName; odp.pszGroup = "Services"; odp.pszTab = "Main"; odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcGpgOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); ZeroMemory(&odp, sizeof(odp)); odp.cbSize = sizeof(odp); odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_GPG_BIN); odp.pszTitle = szModuleName; odp.pszGroup = "Services"; odp.pszTab = "GnuPG Variables"; odp.flags=ODPF_BOLDGROUPS; odp.pfnDlgProc = DlgProcGpgBinOpts; CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); return 0; } static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); HWND hwndList=GetDlgItem(hwndDlg, IDC_USERLIST); LVCOLUMN col; LVITEM item; NMLISTVIEW *hdr; col.pszText = _T("Contact"); col.mask = LVCF_TEXT | LVCF_WIDTH; col.fmt = LVCFMT_LEFT; col.cx = 100; ListView_InsertColumn(hwndList, 0, &col); col.pszText = _T("PubKey"); col.mask = LVCF_TEXT | LVCF_WIDTH; col.fmt = LVCFMT_LEFT; col.cx = 250; ListView_InsertColumn(hwndList, 1, &col); ListView_SetExtendedListViewStyleEx(hwndList, 0, LVS_EX_FULLROWSELECT); int i = 1, iRow = 0; for(HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hContact != NULL; hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0)) { TCHAR *name = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR); item.mask = LVIF_TEXT; item.iItem = i; item.iSubItem = 0; item.pszText = name; iRow = ListView_InsertItem(hwndList, &item); ListView_SetItemText(hwndList, iRow, 0, name); ListView_SetItemText(hwndList, iRow, 1, UniGetContactSettingUtf(hContact, szModuleName, "GPGPubKey", _T("not set"))); i++; } ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE);// not sure about this ListView_SetColumnWidth(hwndList, 1, LVSCW_AUTOSIZE); return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { default: break; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } case WM_NOTIFY: { switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { return TRUE; } } } break; } return FALSE; } static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"))); SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("gpg"))); return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_SET_BIN_PATH: GetFilePath(_T("Choose gpg2.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"))); break; case IDC_SET_HOME_DIR: GetFolderPath(_T("Set home diractory"), "szHomePath"); SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""))); break; default: break; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } case WM_NOTIFY: { switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { TCHAR tmp[512]; GetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp, 512); DBWriteContactSettingTString(NULL, szModuleName, "szGpgBinPath", tmp); GetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp, 512); DBWriteContactSettingTString(NULL, szModuleName, "szHomePath", tmp); return TRUE; } } } break; } return FALSE; }