in src/odbc/rsodbc/rsodbc_setup/setup.c [1956:2114]
static LRESULT CALLBACK rs_dsn_connect_sheet(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
rs_dsn_setup_ptr_t rs_dsn_setup_ctxt;
LPPROPSHEETPAGE sheet = (LPPROPSHEETPAGE)lParam;
char dsn_name[MAXDSNAME];
HWND okbtn;
UINT dsnlen;
LPPSHNOTIFY psnotify = (LPPSHNOTIFY)lParam;
LRESULT lr;
int i;
int curAuthType;
switch (message)
{
case WM_INITDIALOG:
rs_dsn_setup_ctxt = (rs_dsn_setup_ptr_t) sheet->lParam;
rs_dsn_log(__LINE__, "rs_connect_tab(INIT) ctxt %p", rs_dsn_setup_ctxt);
process_ds_name = FALSE;
// need to disable WS_COMMAND while we do this, cuz we get an undefined ctxt ptr
SetDlgItemText(hwndDlg, IDC_DSNAME, rs_dsn_get_attr(rs_dsn_setup_ctxt, "DSN"));
SetDlgItemText(hwndDlg, IDC_DESC, rs_dsn_get_attr(rs_dsn_setup_ctxt, "Description"));
SetDlgItemText(hwndDlg, IDC_SERVER, rs_dsn_get_attr(rs_dsn_setup_ctxt, "HostName"));
SetDlgItemText(hwndDlg, IDC_USER, rs_dsn_get_attr(rs_dsn_setup_ctxt, "LogonID"));
SetDlgItemText(hwndDlg, IDC_PWD, rs_dsn_get_attr(rs_dsn_setup_ctxt, "Password"));
SetDlgItemText(hwndDlg, IDC_DATABASE, rs_dsn_get_attr(rs_dsn_setup_ctxt, "Database"));
SetDlgItemText(hwndDlg, IDC_PORT_EDIT, rs_dsn_get_attr(rs_dsn_setup_ctxt, "PortNumber"));
SetDlgItemText(hwndDlg, IDC_AUTH_PROFILE, rs_dsn_get_attr(rs_dsn_setup_ctxt, RS_IAM_AUTH_PROFILE));
if (rs_dsn_setup_ctxt->is_default_dsn)
{
/* disable DSN name/description if its for a DriverConnect/BrowseConnect */
EnableWindow(GetDlgItem(hwndDlg, IDC_DSNAME), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DSNAMETEXT), FALSE);
}
else
SendDlgItemMessage(hwndDlg, IDC_DSNAME, EM_LIMITTEXT, (WPARAM) (MAXDSNAME - 1), 0L);
SendDlgItemMessage(hwndDlg, IDC_DESC, EM_LIMITTEXT, (WPARAM) (MAXVALLEN - 1), 0L);
for(i =0;;i++)
{
if (szAuthTypes[i][0] == '\0')
break;
lr = ComboBox_AddString(GetDlgItem(hwndDlg, IDC_COMBO_AUTH_TYPE), szAuthTypes[i]);
}
curAuthType = get_auth_type_for_control(rs_dsn_setup_ctxt);
ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_COMBO_AUTH_TYPE), curAuthType);
set_dlg_items_based_on_auth_type(curAuthType, hwndDlg, rs_dsn_setup_ctxt);
rs_hide_show_authtype_controls(hwndDlg, szAuthTypes[curAuthType]);
okbtn = GetDlgItem(hTabMainControl, IDOK);
dsnlen = GetDlgItemText(hwndDlg, IDC_DSNAME, dsn_name, sizeof(dsn_name));
EnableWindow(okbtn, dsnlen);
process_ds_name = TRUE;
SetWindowLongPtr(hwndDlg, DWLP_USER, sheet->lParam);
// Set version
// SetDlgItemText(hwndDlg, IDC_VERSION_STATIC, "v"REDSHIFT_DRIVER_VERSION"(64 bit)");
rs_dsn_setup_ctxt->connect_inited = TRUE;
break;
case WM_NOTIFY:
switch (psnotify->hdr.code) {
case PSN_KILLACTIVE:
rs_dsn_log(__LINE__, "rs_connect_tab(PSN_KILLACTIVE)");
SetWindowLong(hwndDlg, DWLP_MSGRESULT, FALSE);
break;
case PSN_RESET:
rs_dsn_log(__LINE__, "rs_connect_tab(PSN_RESET)");
break;
case PSN_APPLY:
rs_dsn_setup_ctxt = (rs_dsn_setup_ptr_t) GetWindowLongPtr(hwndDlg, DWLP_USER);
rs_dsn_log(__LINE__, "rs_connect_tab(PSN_APPLY)");
if (!rs_dsn_setup_ctxt->is_default_dsn) {
/*
* need to SQLValidDSN on it before accepting it
*/
GetDlgItemText(hwndDlg, IDC_DSNAME, dsn_name, sizeof(dsn_name));
if (!SQLValidDSN(dsn_name)) {
// debugMsg(dsn_name, 0);
rs_dsn_log(__LINE__, "process_buttons: bad dsn name is %s", dsn_name);
MessageBox(hwndDlg, "Invalid DSN name", NULL, MB_ICONEXCLAMATION | MB_OK);
SetWindowLong(hwndDlg, DWLP_MSGRESULT, PSNRET_INVALID);
return TRUE;
}
strncpy(rs_dsn_setup_ctxt->dsn_name, dsn_name,sizeof(rs_dsn_setup_ctxt->dsn_name));
rs_dsn_read_connect_tab(hwndDlg, rs_dsn_setup_ctxt);
SetWindowLong(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
}
break;
case PSN_HELP:
rs_dsn_log(__LINE__, "rs_connect_tab(PSN_HELP)");
rs_dsn_setup_ctxt = (rs_dsn_setup_ptr_t) GetWindowLongPtr(hwndDlg, DWLP_USER);
rs_dsn_test_connect(hwndDlg, rs_dsn_setup_ctxt);
break;
case PSN_QUERYCANCEL:
rs_dsn_log(__LINE__, "rs_connect_tab(PSN_QUERYCANCEL)");
break;
}
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
/*
* Only enable OK button after data source name defined
*/
case IDC_DSNAME:
rs_dsn_setup_ctxt = (rs_dsn_setup_ptr_t) GetWindowLongPtr(hwndDlg, DWLP_USER);
rs_dsn_log(__LINE__, "rs_connect_tab(COMMAND: DSNAME) hwnddlg %d ctxt %p",
hwndDlg, rs_dsn_setup_ctxt);
if (!process_ds_name || (EN_CHANGE != GET_WM_COMMAND_CMD(wParam, lParam)))
return FALSE;
/* Enable/disable the OK button */
okbtn = GetDlgItem(hTabMainControl, IDOK);
dsnlen = GetDlgItemText(hwndDlg, IDC_DSNAME, dsn_name, sizeof(dsn_name));
EnableWindow(okbtn, dsnlen);
return FALSE;
case IDC_COMBO_AUTH_TYPE:
{
switch (HIWORD(wParam))
{
case LBN_SELCHANGE:
{
HWND lb = GetDlgItem(hwndDlg, LOWORD(wParam));
int n = ComboBox_GetCurSel(lb);
// char szBuf[256];
char *auth_type = szAuthTypes[n];
rs_hide_show_authtype_controls(hwndDlg, auth_type);
// snprintf(szBuf, 256, "%d", n);
// MessageBox(NULL, auth_type, szBuf, MB_ICONEXCLAMATION | MB_OK);
break;
}
}
break;
}
case IDC_CONN_HELP:
if (helpfile_url[0])
rs_open_help_doc("connect");
break;
}
break;
}
return FALSE;
}