Example #1
0
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;
}
Example #2
0
/*
* 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;
}