QIcon IconStorage::getIcon(const QString &AKey, int AIndex) const { QIcon icon; QString key = fileCacheKey(AKey,AIndex); if (!key.isEmpty()) { icon = FIconCache[storage()].value(key); if (icon.isNull()) { icon.addFile(fileFullName(AKey,AIndex)); FIconCache[storage()].insert(key,icon); } } return icon; }
/* * opendir * * Returns a pointer to a DIR structure appropriately filled in to begin * searching a directory. */ DIR * opendir (const char_t *szPath) { DIR *nd; char_t szFullPath[CL_MAX_DIR]; errno = 0; if (!szPath) { errno = EFAULT; return NULL; } if (szPath[0] == '\0') { errno = ENOTDIR; return NULL; } /* Attempt to determine if the given path really is a directory. */ struct Struct_Stat rcs; if ( Cmd_Stat(szPath,&rcs) == -1) { /* call GetLastError for more error info */ errno = ENOENT; return NULL; } if (!(rcs.st_mode & _S_IFDIR)) { /* Error, entry exists but not a directory. */ errno = ENOTDIR; return NULL; } /* Make an absolute pathname. */ fileFullName (szFullPath, szPath, CL_MAX_DIR); /* Allocate enough space to store DIR structure and the complete * directory path given. */ //nd = (DIR *) malloc (sizeof (DIR) + stringLength (szFullPath) + stringLength (DIRENT_SLASH) + // stringLength (DIRENT_SEARCH_SUFFIX)+1); nd = new DIR; if (!nd) { /* Error, out of memory. */ errno = ENOMEM; return NULL; } /* Create the search expression. */ stringCopy (nd->dd_name, szFullPath); /* Add on a slash if the path does not end with one. */ if (nd->dd_name[0] != '\0' && nd->dd_name[stringLength (nd->dd_name) - 1] != '/' && nd->dd_name[stringLength (nd->dd_name) - 1] != '\\') { stringCat (nd->dd_name, DIRENT_SLASH); } /* Add on the search pattern */ stringCat (nd->dd_name, DIRENT_SEARCH_SUFFIX); /* Initialize handle to -1 so that a premature closedir doesn't try * to call _findclose on it. */ nd->dd_handle = -1; /* Initialize the status. */ nd->dd_stat = 0; /* Initialize the dirent structure. ino and reclen are invalid under * Win32, and name simply points at the appropriate part of the * findfirst_t structure. */ //nd->dd_dir.d_ino = 0; //nd->dd_dir.d_reclen = 0; nd->dd_dir.d_namlen = 0; nd->dd_dir.d_name = nd->dd_dta.name; return nd; }