/********************************************************************* * Function: void GOLFree() * * PreCondition: none * * Input: none * * Output: none * * Side Effects: none * * Overview: frees memory of all objects in the current linked list * and starts a new linked list * * Note: drawing and messaging must be suspended * ********************************************************************/ void GOLFree(){ OBJ_HEADER * pNextObj; OBJ_HEADER * pCurrentObj; pCurrentObj = _pGolObjects; while(pCurrentObj != NULL){ pNextObj = pCurrentObj->pNxtObj; #ifdef USE_LISTBOX if(pCurrentObj->type == OBJ_LISTBOX) LbDelItemsList((LISTBOX*)pCurrentObj); #endif #ifdef USE_GRID if(pCurrentObj->type == OBJ_GRID) GridFreeItems((GRID*)pCurrentObj); #endif free(pCurrentObj); pCurrentObj = pNextObj; } GOLNewList(); }
/************************************************************************ Function: void FillNewElements(void) Overview: Fill the list box with the image and directory elements found in the thumb drive. Input: none Output: none ************************************************************************/ void FillNewElements(void) { SearchRec searchRecord; BYTE bCounter; BYTE bFound; void *pBitmap; NextSlide = 0; bNumElementsInFolder = 0; bFound = FindFirst("*", ATTR_DIRECTORY, &searchRecord); for(bCounter = 0; bCounter < MAX_ELEMENTS; bCounter++) { if(bFound == 0) { BYTE i; if(searchRecord.filename[0] == '.' && searchRecord.filename[1] == '\0') { bFound = FindNext(&searchRecord); continue; } aFolderElement[bNumElementsInFolder].blFolder = 1; aFolderElement[bNumElementsInFolder].blText = 0; for(i = 0; i < 13; i++) { aFolderElement[bNumElementsInFolder].Name[i] = searchRecord.filename[i]; aFolderElement[bNumElementsInFolder].XName[i] = searchRecord.filename[i]; } bNumElementsInFolder++; } else { break; } bFound = FindNext(&searchRecord); } bFound = FindFirst("*.jpg", ATTR_MASK ^ ATTR_DIRECTORY, &searchRecord); for(bCounter = 0; bCounter < MAX_ELEMENTS && bNumElementsInFolder < MAX_ELEMENTS; bCounter++) { if(bFound == 0) { BYTE i; aFolderElement[bNumElementsInFolder].blFolder = 0; aFolderElement[bNumElementsInFolder].blText = 0; aFolderElement[bNumElementsInFolder].ImgType = IMG_JPEG; for(i = 0; i < 13; i++) { aFolderElement[bNumElementsInFolder].Name[i] = searchRecord.filename[i]; aFolderElement[bNumElementsInFolder].XName[i] = searchRecord.filename[i]; } bNumElementsInFolder++; } else { break; } bFound = FindNext(&searchRecord); } bFound = FindFirst("*.bmp", ATTR_MASK ^ ATTR_DIRECTORY, &searchRecord); for(bCounter = 0; bCounter < MAX_ELEMENTS && bNumElementsInFolder < MAX_ELEMENTS; bCounter++) { if(bFound == 0) { BYTE i; aFolderElement[bNumElementsInFolder].blFolder = 0; aFolderElement[bNumElementsInFolder].blText = 0; aFolderElement[bNumElementsInFolder].ImgType = IMG_BMP; for(i = 0; i < 13; i++) { aFolderElement[bNumElementsInFolder].Name[i] = searchRecord.filename[i]; aFolderElement[bNumElementsInFolder].XName[i] = searchRecord.filename[i]; } bNumElementsInFolder++; } else { break; } bFound = FindNext(&searchRecord); } // fill the list box items bStartingElement = 0; // clear the list first LbDelItemsList(pListBox); for(bCounter = 0; (bStartingElement + bCounter) < bNumElementsInFolder; bCounter++) { // set the proper bitmap icon if(aFolderElement[bStartingElement + bCounter].blFolder == 1) { pBitmap = (void *) &FolderIcon; } else if(aFolderElement[bStartingElement + bCounter].ImgType == IMG_JPEG) { pBitmap = (void *) &JpegIcon; } else if(aFolderElement[bStartingElement + bCounter].ImgType == IMG_BMP) { pBitmap = (void *) &BitmapIcon; } else { pBitmap = NULL; } // assign the item to the list if(NULL == LbAddItem(pListBox, NULL, aFolderElement[bStartingElement + bCounter].XName, pBitmap, 0, bCounter)) break; else { // adjust the slider page and range SldSetRange(pSlider, bNumElementsInFolder); SldSetPage(pSlider, bNumElementsInFolder >> 1); // to completely redraw the object when GOLDraw() is executed. SetState(pSlider, DRAW); SetState(pListBox, DRAW); } } }