Juan Lang : cryptui: Enable/ disable PFX choice based on whether the private key is to be exported.
Alexandre Julliard
julliard at winehq.org
Mon Feb 9 10:29:15 CST 2009
Module: wine
Branch: master
Commit: 7dae1dc5129b19acd75a092cb29bc9bc32291dae
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7dae1dc5129b19acd75a092cb29bc9bc32291dae
Author: Juan Lang <juan.lang at gmail.com>
Date: Sun Feb 1 11:14:31 2009 -0800
cryptui: Enable/disable PFX choice based on whether the private key is to be exported.
---
dlls/cryptui/main.c | 61 +++++++++++++++++++++++++++++++-------------------
1 files changed, 38 insertions(+), 23 deletions(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index 13ad832..2523db6 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -5635,6 +5635,41 @@ static BOOL export_info_has_private_key(PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo)
return ret;
}
+static void export_format_enable_controls(HWND hwnd, struct ExportWizData *data)
+{
+ int defaultFormatID;
+
+ switch (data->contextInfo.dwExportFormat)
+ {
+ case CRYPTUI_WIZ_EXPORT_FORMAT_BASE64:
+ defaultFormatID = IDC_EXPORT_FORMAT_BASE64;
+ break;
+ case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7:
+ defaultFormatID = IDC_EXPORT_FORMAT_CMS;
+ break;
+ case CRYPTUI_WIZ_EXPORT_FORMAT_PFX:
+ defaultFormatID = IDC_EXPORT_FORMAT_PFX;
+ break;
+ default:
+ defaultFormatID = IDC_EXPORT_FORMAT_DER;
+ }
+ SendMessageW(GetDlgItem(hwnd, defaultFormatID), BM_CLICK, 0, 0);
+ if (defaultFormatID == IDC_EXPORT_FORMAT_PFX)
+ {
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_DER), FALSE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_BASE64), FALSE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_CMS), FALSE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_PFX), TRUE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_DER), TRUE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_BASE64), TRUE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_CMS), TRUE);
+ EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_PFX), FALSE);
+ }
+}
+
static LRESULT CALLBACK export_format_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,
LPARAM lp)
{
@@ -5646,32 +5681,10 @@ static LRESULT CALLBACK export_format_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,
case WM_INITDIALOG:
{
PROPSHEETPAGEW *page = (PROPSHEETPAGEW *)lp;
- int defaultFormatID;
- BOOL hasPrivateKey;
data = (struct ExportWizData *)page->lParam;
SetWindowLongPtrW(hwnd, DWLP_USER, (LPARAM)data);
- hasPrivateKey = export_info_has_private_key(&data->exportInfo);
- if (hasPrivateKey)
- EnableWindow(GetDlgItem(hwnd, IDC_EXPORT_FORMAT_PFX), TRUE);
- switch (data->contextInfo.dwExportFormat)
- {
- case CRYPTUI_WIZ_EXPORT_FORMAT_BASE64:
- defaultFormatID = IDC_EXPORT_FORMAT_BASE64;
- break;
- case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7:
- defaultFormatID = IDC_EXPORT_FORMAT_CMS;
- break;
- case CRYPTUI_WIZ_EXPORT_FORMAT_PFX:
- if (hasPrivateKey)
- defaultFormatID = IDC_EXPORT_FORMAT_PFX;
- else
- defaultFormatID = IDC_EXPORT_FORMAT_DER;
- break;
- default:
- defaultFormatID = IDC_EXPORT_FORMAT_DER;
- }
- SendMessageW(GetDlgItem(hwnd, defaultFormatID), BM_CLICK, 0, 0);
+ export_format_enable_controls(hwnd, data);
break;
}
case WM_NOTIFY:
@@ -5683,6 +5696,8 @@ static LRESULT CALLBACK export_format_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,
case PSN_SETACTIVE:
PostMessageW(GetParent(hwnd), PSM_SETWIZBUTTONS, 0,
PSWIZB_BACK | PSWIZB_NEXT);
+ data = (struct ExportWizData *)GetWindowLongPtrW(hwnd, DWLP_USER);
+ export_format_enable_controls(hwnd, data);
ret = TRUE;
break;
case PSN_WIZNEXT:
More information about the wine-cvs
mailing list