Rob Shearman : credui: Enumerate saved credentials and use these to populate the combo box.
Alexandre Julliard
julliard at winehq.org
Mon Nov 19 08:19:40 CST 2007
Module: wine
Branch: master
Commit: cdb6e9ed8232fe085662610c9e8e1614fa054a86
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cdb6e9ed8232fe085662610c9e8e1614fa054a86
Author: Rob Shearman <rob at codeweavers.com>
Date: Sat Nov 17 17:31:02 2007 +0000
credui: Enumerate saved credentials and use these to populate the combo box.
---
dlls/credui/credui_main.c | 46 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/dlls/credui/credui_main.c b/dlls/credui/credui_main.c
index 03550ba..83fb183 100644
--- a/dlls/credui/credui_main.c
+++ b/dlls/credui/credui_main.c
@@ -130,8 +130,44 @@ struct cred_dialog_params
DWORD dwFlags;
};
+static void CredDialogFillUsernameCombo(HWND hwndUsername, struct cred_dialog_params *params)
+{
+ DWORD count;
+ DWORD i;
+ PCREDENTIALW *credentials;
+
+ if (!CredEnumerateW(NULL, 0, &count, &credentials))
+ return;
+
+ for (i = 0; i < count; i++)
+ {
+ COMBOBOXEXITEMW comboitem;
+
+ if (params->dwFlags & CREDUI_FLAGS_GENERIC_CREDENTIALS)
+ {
+ if ((credentials[i]->Type != CRED_TYPE_GENERIC) || !credentials[i]->UserName)
+ continue;
+ }
+ else
+ {
+ if (credentials[i]->Type == CRED_TYPE_GENERIC)
+ continue;
+ }
+
+ comboitem.mask = CBEIF_TEXT;
+ comboitem.iItem = -1;
+ comboitem.pszText = credentials[i]->UserName;
+ SendMessageW(hwndUsername, CBEM_INSERTITEMW, 0, (LPARAM)&comboitem);
+ }
+
+ CredFree(credentials);
+}
+
static BOOL CredDialogInit(HWND hwndDlg, struct cred_dialog_params *params)
{
+ HWND hwndUsername = GetDlgItem(hwndDlg, IDC_USERNAME);
+ HWND hwndPassword = GetDlgItem(hwndDlg, IDC_PASSWORD);
+
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)params);
if (params->pszMessageText)
SetDlgItemTextW(hwndDlg, IDC_MESSAGE, params->pszMessageText);
@@ -143,13 +179,15 @@ static BOOL CredDialogInit(HWND hwndDlg, struct cred_dialog_params *params)
snprintfW(message, sizeof(message)/sizeof(message[0]), format, params->pszTargetName);
SetDlgItemTextW(hwndDlg, IDC_MESSAGE, message);
}
- SetDlgItemTextW(hwndDlg, IDC_USERNAME, params->pszUsername);
- SetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword);
+ SetWindowTextW(hwndUsername, params->pszUsername);
+ SetWindowTextW(hwndPassword, params->pszPassword);
+
+ CredDialogFillUsernameCombo(hwndUsername, params);
if (params->pszUsername[0])
- SetFocus(GetDlgItem(hwndDlg, IDC_PASSWORD));
+ SetFocus(hwndPassword);
else
- SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME));
+ SetFocus(hwndUsername);
if (params->pszCaptionText)
SetWindowTextW(hwndDlg, params->pszCaptionText);
More information about the wine-cvs
mailing list