/*---------------------------------------------** ** Copyright (c) 1998 Microsoft Corporation ** ** All Rights reserved ** ** ** ** save.c ** ** ** ** Save dialog - TSREG ** ** 07-01-98 a-clindh Created ** **---------------------------------------------*/ #include #include #include #include #include "tsreg.h" #include "resource.h" int SaveKeys(HWND hDlg, HWND hwndEditSave, HWND hwndProfilesCBO); BOOL InitListViewItems(HWND hwndSaveList); BOOL InitListViewImageLists(HWND hwndSaveList); /////////////////////////////////////////////////////////////////////////////// INT_PTR CALLBACK SaveDialog(HWND hDlg, UINT nMsg, WPARAM wParam, LPARAM lParam) { TCHAR lpszBuffer[MAXKEYSIZE]; static HWND hwndProfilesCBO; static HWND hwndSaveList; static HWND hwndEditSave; LPNMLISTVIEW lpnmlv; NMHDR *lpnmhdr; lpnmlv = (LPNMLISTVIEW) lParam; lpnmhdr = ((LPNMHDR)lParam); switch (nMsg) { case WM_INITDIALOG: hwndProfilesCBO = GetDlgItem(g_hwndProfilesDlg, IDC_CBO_PROFILES); hwndSaveList = GetDlgItem(hDlg, IDC_SAVE_LIST); hwndEditSave = GetDlgItem(hDlg, IDC_EDIT_KEY); InitListViewImageLists(hwndSaveList); InitListViewItems(hwndSaveList); SetFocus(hwndEditSave); break; case WM_NOTIFY: // // display text in edit box or save when user // clicks or double clicks an icon. // switch (lpnmlv->hdr.code) { case NM_DBLCLK: if (SaveKeys(hDlg, hwndEditSave, hwndProfilesCBO)) EndDialog(hDlg, TRUE); break; case NM_CLICK: ListView_GetItemText(hwndSaveList, lpnmlv->iItem, 0, lpszBuffer, sizeof(lpszBuffer)); SetWindowText(hwndEditSave, lpszBuffer); break; } break; case WM_COMMAND: switch LOWORD (wParam) { case IDOK: if (SaveKeys(hDlg, hwndEditSave, hwndProfilesCBO)) EndDialog(hDlg, TRUE); break; case IDCANCEL: EndDialog(hDlg, FALSE); break; } break; } return (FALSE); } /////////////////////////////////////////////////////////////////////////////// BOOL InitListViewImageLists(HWND hwndSaveList) { HICON hiconItem = NULL; // icon for list view items HIMAGELIST himlSmall = NULL; // image list for other views himlSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), TRUE, 1, 1); // Add an icon to the image list. hiconItem = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_FOLDER_ICON)); if(( hiconItem != NULL) && (himlSmall != NULL)) { ImageList_AddIcon(himlSmall, hiconItem); DeleteObject(hiconItem); // Assign the image lists to the list view control. ListView_SetImageList(hwndSaveList, himlSmall, LVSIL_SMALL); } return TRUE; } /////////////////////////////////////////////////////////////////////////////// BOOL InitListViewItems(HWND hwndSaveList) { int i; LVITEM lvi; lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; lvi.state = 0; lvi.stateMask = 0; lvi.iImage = 0; // // Get the key names and add them to the image list // g_pkfProfile = g_pkfStart; for (i = 0; i <= g_pkfProfile->Index; i++) { lvi.pszText = g_pkfProfile->KeyInfo->Key; lvi.iItem = i; lvi.iSubItem = 0; ListView_InsertItem(hwndSaveList, &lvi); g_pkfProfile = g_pkfProfile->Next; } return TRUE; } /////////////////////////////////////////////////////////////////////////////// int SaveKeys(HWND hDlg, HWND hwndEditSave, HWND hwndProfilesCBO) { TCHAR lpszClientProfilePath[MAX_PATH] = TEXT(""); TCHAR lpszSubKeyPath[MAX_PATH]; TCHAR lpszBuffer[MAXKEYSIZE]; TCHAR lpszText[MAXTEXTSIZE]; static HKEY hKey; int i; GetWindowText(hwndEditSave, lpszBuffer, MAXKEYSIZE); // check for null string // if (_tcscmp(lpszBuffer, TEXT("")) == 0) { LoadString(g_hInst, IDS_KEY_SAVE, lpszText, MAXTEXTSIZE); MessageBox(hDlg, lpszText, NULL, MB_OK | MB_ICONEXCLAMATION); SetFocus(hwndEditSave); return 0; } LoadString (g_hInst, IDS_PROFILE_PATH, lpszClientProfilePath, sizeof(lpszClientProfilePath)); _tcscpy(lpszSubKeyPath, lpszClientProfilePath); _tcscat(lpszSubKeyPath, TEXT("\\")); _tcscat(lpszSubKeyPath, lpszBuffer); // // only add values to the combo box that aren't already listed // if (SendMessage(hwndProfilesCBO, CB_FINDSTRING, 0, (LPARAM) lpszBuffer) == CB_ERR) { SendMessage(hwndProfilesCBO, CB_ADDSTRING, 0, (LPARAM) lpszBuffer); } // // change window caption // ResetTitle(lpszBuffer); // // save the settings to the registry // WriteBlankKey(lpszSubKeyPath);//save even if nothing is set SaveBitmapSettings(lpszSubKeyPath); SaveSettings(g_hwndMiscDlg, DEDICATEDINDEX, IDC_DEDICATED_ENABLED, IDC_DEDICATED_DISABLED, lpszSubKeyPath); SaveSettings(g_hwndMiscDlg, SHADOWINDEX, IDC_SHADOW_DISABLED, IDC_SHADOW_ENABLED, lpszSubKeyPath); for (i = 2; i < KEYCOUNT; i++) { if (g_KeyInfo[i].CurrentKeyValue != g_KeyInfo[i].DefaultKeyValue) SetRegKey(i, lpszSubKeyPath); else DeleteRegKey(i, lpszSubKeyPath); } // // release memory and re-read key values for all defined // profiles // ReloadKeys(lpszBuffer, hwndProfilesCBO); SetEditCell(lpszBuffer, hwndProfilesCBO); return 1; }//////////////////////////////////////////////////////////////////////////////