void HostsTab_FillList (HWND hDlg) { HWND hList = GetDlgItem (hDlg, IDC_LIST); FastList_Begin (hList); FastList_RemoveAll (hList); for (PCELLDBLINE pLine = g.Configuration.CellServDB.pFirst; pLine; pLine = pLine->pNext) { CELLDBLINEINFO Info; if (!CSDB_CrackLine (&Info, pLine->szLine)) continue; if (!Info.szCell[0]) continue; TCHAR szText[ MAX_PATH ]; lstrcpy (szText, Info.szCell); #if 0 // Add this if you like a more verbose Cell Hosts tab if (Info.szComment) wsprintf (&szText[ lstrlen(szText) ], TEXT(" (%s)"), Info.szComment); #endif FASTLISTADDITEM ai; memset (&ai, 0x00, sizeof(ai)); ai.iFirstImage = IMAGE_NOIMAGE; ai.iSecondImage = IMAGE_NOIMAGE; ai.pszText = szText; ai.lParam = (LPARAM)pLine; FastList_AddItem (hList, &ai); } FastList_End (hList); }
void ShowDriveList(HWND hDlg, DRIVEMAPLIST& drives) { // Prepare the columns HWND hList = GetDlgItem (hDlg, IDC_GLOBAL_DRIVE_LIST); // Fill in the list of drives FastList_Begin (hList); FastList_RemoveAll(hList); for (size_t ii = 0; ii < 26; ++ii) { if (!GlobalDrives.aDriveMap[ ii ].chDrive) continue; HWND hList = GetDlgItem (hDlg, IDC_GLOBAL_DRIVE_LIST); FASTLISTADDITEM ai; memset (&ai, 0x00, sizeof(FASTLISTADDITEM)); ai.iFirstImage = IMAGE_NOIMAGE; ai.iSecondImage = IMAGE_NOIMAGE; // There must be DRIVE_LETTER_INDEX number of spaces before the ? character ai.pszText = _tcsdup(TEXT(" ?:")); ai.pszText[DRIVE_LETTER_INDEX] = GlobalDrives.aDriveMap[ ii ].chDrive; ai.lParam = 0; HLISTITEM hItem = FastList_AddItem (hList, &ai); TCHAR szAfsPath[ MAX_PATH ]; AdjustAfsPath (szAfsPath, GlobalDrives.aDriveMap[ ii ].szMapping, TRUE, FALSE); FastList_SetItemText (hList, hItem, 1, szAfsPath); } FastList_End (hList); }
void Browse_UpdateDialog (HWND hDlg) { LPBROWSE_PARAMS lpp; if ((lpp = (LPBROWSE_PARAMS)GetWindowLongPtr (hDlg, DWLP_USER)) != NULL) { lpp->fQuerying ++; // First we'll need to empty the list, and add some non-selectable thing // that says "querying" // HWND hList = GetDlgItem (hDlg, IDC_BROWSE_LIST); FastList_Begin (hList); FastList_RemoveAll (hList); TCHAR szText[ cchRESOURCE ]; GetString (szText, IDS_QUERYING_LONG); FASTLISTADDITEM flai; memset (&flai, 0x00, sizeof(flai)); flai.iFirstImage = IMAGE_NOIMAGE; flai.iSecondImage = IMAGE_NOIMAGE; flai.pszText = szText; flai.dwFlags = FLIF_DISALLOW_SELECT; FastList_AddItem (hList, &flai); FastList_End (hList); // Then start a background task to obtain the appropriate list // of stuff to show. When that task completes, we'll populate the // list. // TCHAR szPattern[ cchNAME ]; GetDlgItemText (hDlg, IDC_BROWSE_PATTERN, szPattern, cchNAME); LPTSTR pszPattern = NULL; if (szPattern[0] != TEXT('\0')) pszPattern = CloneString (szPattern); StartTask ((Browse_GetSelectedType (hDlg) == TYPE_USER) ? taskUSER_ENUM : taskGROUP_ENUM, hDlg, pszPattern); } }
BOOL UpdateDriveList() { FastList_RemoveAll(m_hDriveList); return FillDriveList(); }
void Browse_OnEndTask_EnumObjects (HWND hDlg, LPTASKPACKET ptp) { LPBROWSE_PARAMS lpp; size_t ii; if ((lpp = (LPBROWSE_PARAMS)GetWindowLongPtr (hDlg, DWLP_USER)) != NULL) { HWND hList = GetDlgItem (hDlg, IDC_BROWSE_LIST); FastList_Begin (hList); FastList_RemoveAll (hList); // If we were successful, we now have a list of all objects of the // appropriate type. However, the user may not want us to display // items which are on our pObjectsToSkip list; if not, convert the // later to a hashlist (for fast lookup) and remove the offending // entries from the former. // if (ptp->rc && TASKDATA(ptp)->pAsidList) { if ((IsDlgButtonChecked (hDlg, IDC_BROWSE_CHECK)) && (lpp->pObjectsToSkip)) { LPHASHLIST pListToSkip = New (HASHLIST); for (ii = 0; ii < lpp->pObjectsToSkip->cEntries; ++ii) pListToSkip->AddUnique ((PVOID)(lpp->pObjectsToSkip->aEntries[ii].idObject)); for (ii = 0; ii < TASKDATA(ptp)->pAsidList->cEntries; ) { if (pListToSkip->fIsInList ((PVOID)(TASKDATA(ptp)->pAsidList->aEntries[ii].idObject))) asc_AsidListRemoveEntryByIndex (&TASKDATA(ptp)->pAsidList, ii); else ii++; } Delete (pListToSkip); } } // OK, we're ready to go--populate that list! // for (ii = 0; ii < TASKDATA(ptp)->pAsidList->cEntries; ++ii) { ULONG status; ASOBJPROP Properties; if (!asc_ObjectPropertiesGet_Fast (g.idClient, g.idCell, TASKDATA(ptp)->pAsidList->aEntries[ii].idObject, &Properties, &status)) continue; TCHAR szName[ MAX_PATH ]; if (Properties.Type == TYPE_USER) User_GetDisplayName (szName, &Properties); else lstrcpy (szName, Properties.szName); FASTLISTADDITEM flai; memset (&flai, 0x00, sizeof(flai)); flai.iFirstImage = (Properties.Type == TYPE_USER) ? imageUSER : (Properties.Type == TYPE_GROUP) ? imageGROUP : IMAGE_NOIMAGE; flai.iSecondImage = IMAGE_NOIMAGE; flai.pszText = szName; FastList_AddItem (hList, &flai); } FastList_End (hList); lpp->fQuerying --; } }