Juan Lang : cryptui: Add an add purpose dialog.
Alexandre Julliard
julliard at winehq.org
Fri Dec 19 11:19:24 CST 2008
Module: wine
Branch: master
Commit: 356596561c3ef3cf94fe86a01e512a0665c0b870
URL: http://source.winehq.org/git/wine.git/?a=commit;h=356596561c3ef3cf94fe86a01e512a0665c0b870
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Dec 18 14:04:30 2008 -0800
cryptui: Add an add purpose dialog.
---
dlls/cryptui/cryptui_En.rc | 11 ++++++++
dlls/cryptui/cryptuires.h | 3 ++
dlls/cryptui/main.c | 59 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 73 insertions(+), 0 deletions(-)
diff --git a/dlls/cryptui/cryptui_En.rc b/dlls/cryptui/cryptui_En.rc
index 70ed0f1..5dcb98a 100644
--- a/dlls/cryptui/cryptui_En.rc
+++ b/dlls/cryptui/cryptui_En.rc
@@ -170,3 +170,14 @@ BEGIN
24,100,220,90
PUSHBUTTON "Add &Purpose...", IDC_ADD_PURPOSE,184,194,60,14
END
+
+IDD_ADD_CERT_PURPOSE DIALOG DISCARDABLE 0,0,200,68
+CAPTION "Add Purpose"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Add the object identifier (OID) for the certificate purpose you wish to add:",
+ stc1, 6,6,190,28
+ EDITTEXT IDC_NEW_PURPOSE, 6,28,190,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL
+ PUSHBUTTON "OK", IDOK, 33,48,60,14
+ PUSHBUTTON "Cancel", IDCANCEL, 100,48,60,14
+END
diff --git a/dlls/cryptui/cryptuires.h b/dlls/cryptui/cryptuires.h
index eb26e15..a311531 100644
--- a/dlls/cryptui/cryptuires.h
+++ b/dlls/cryptui/cryptuires.h
@@ -89,6 +89,7 @@
#define IDD_HIERARCHY 102
#define IDD_USERNOTICE 103
#define IDD_CERT_PROPERTIES_GENERAL 104
+#define IDD_ADD_CERT_PURPOSE 105
#define IDB_SMALL_ICONS 200
#define IDB_CERT 201
@@ -126,4 +127,6 @@
#define IDC_CERTIFICATE_USAGES 2405
#define IDC_ADD_PURPOSE 2406
+#define IDC_NEW_PURPOSE 2500
+
#endif /* ndef __CRYPTUIRES_H_ */
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index dc1c807..e26bf55 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -1593,6 +1593,59 @@ static void add_purpose(HWND hwnd, LPCSTR oid)
}
}
+#define MAX_PURPOSE 255
+
+static LRESULT CALLBACK add_purpose_dlg_proc(HWND hwnd, UINT msg,
+ WPARAM wp, LPARAM lp)
+{
+ LRESULT ret = 0;
+ char buf[MAX_PURPOSE + 1];
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ SendMessageW(GetDlgItem(hwnd, IDC_NEW_PURPOSE), EM_SETLIMITTEXT,
+ MAX_PURPOSE, 0);
+ ShowScrollBar(GetDlgItem(hwnd, IDC_NEW_PURPOSE), SB_VERT, FALSE);
+ SetWindowLongPtrW(hwnd, DWLP_USER, lp);
+ break;
+ case WM_COMMAND:
+ switch (HIWORD(wp))
+ {
+ case BN_CLICKED:
+ switch (LOWORD(wp))
+ {
+ case IDOK:
+ SendMessageA(GetDlgItem(hwnd, IDC_NEW_PURPOSE), WM_GETTEXT,
+ sizeof(buf) / sizeof(buf[0]), (LPARAM)buf);
+ if (!buf[0])
+ {
+ /* An empty purpose is the same as cancelling */
+ EndDialog(hwnd, IDCANCEL);
+ ret = TRUE;
+ }
+ else
+ {
+ HWND parent = (HWND)GetWindowLongPtrW(hwnd, DWLP_USER);
+
+ FIXME("validate %s\n", debugstr_a(buf));
+ add_purpose(parent, buf);
+ EndDialog(hwnd, wp);
+ ret = TRUE;
+ }
+ break;
+ case IDCANCEL:
+ EndDialog(hwnd, wp);
+ ret = TRUE;
+ break;
+ }
+ break;
+ }
+ break;
+ }
+ return ret;
+}
+
static WCHAR *get_cert_property_as_string(PCCERT_CONTEXT cert, DWORD prop)
{
WCHAR *name = NULL;
@@ -1862,6 +1915,12 @@ static LRESULT CALLBACK cert_properties_general_dlg_proc(HWND hwnd, UINT msg,
case BN_CLICKED:
switch (LOWORD(wp))
{
+ case IDC_ADD_PURPOSE:
+ if (DialogBoxParamW(hInstance,
+ MAKEINTRESOURCEW(IDD_ADD_CERT_PURPOSE), hwnd,
+ add_purpose_dlg_proc, (LPARAM)hwnd) == IDOK)
+ SendMessageW(GetParent(hwnd), PSM_CHANGED, (WPARAM)hwnd, 0);
+ break;
case IDC_ENABLE_ALL_PURPOSES:
case IDC_DISABLE_ALL_PURPOSES:
case IDC_ENABLE_SELECTED_PURPOSES:
More information about the wine-cvs
mailing list