#include <globals.h>


Public Types | |
| typedef map< String, FileTypeInfo > | super |
Public Member Functions | |
| const FileTypeInfo & | operator[] (String ext) |
| LPCTSTR | set_type (struct Entry *entry, bool dont_hide_ext=false) |
Static Public Member Functions | |
| static bool | is_exe_file (LPCTSTR ext) |
Definition at line 43 of file globals.h.
| typedef map<String, FileTypeInfo> FileTypeManager::super |
| bool FileTypeManager::is_exe_file | ( | LPCTSTR | ext ) | [static] |
Definition at line 154 of file explorer.cpp.
References _MAX_EXT, and TEXT.
Referenced by set_type().
{
static const LPCTSTR s_executable_extensions[] = {
TEXT("COM"),
TEXT("EXE"),
TEXT("BAT"),
TEXT("CMD"),
TEXT("CMM"),
TEXT("BTM"),
TEXT("AWK"),
0
};
TCHAR ext_buffer[_MAX_EXT];
const LPCTSTR* p;
LPCTSTR s;
LPTSTR d;
for(s=ext+1,d=ext_buffer; (*d=toupper(*s)); s++)
++d;
for(p=s_executable_extensions; *p; p++)
if (!lstrcmp(ext_buffer, *p))
return true;
return false;
}

| const FileTypeInfo & FileTypeManager::operator[] | ( | String | ext ) |
Definition at line 183 of file explorer.cpp.
References FileTypeInfo::_classname, FileTypeInfo::_displayname, FileTypeInfo::_neverShowExt, TEXT, and String::toLower().
{
ext.toLower();
iterator found = find(ext);
if (found != end())
return found->second;
FileTypeInfo& ftype = super::operator[](ext);
ftype._neverShowExt = false;
HKEY hkey;
TCHAR value[MAX_PATH], display_name[MAX_PATH];
LONG valuelen = sizeof(value);
if (!RegQueryValue(HKEY_CLASSES_ROOT, ext, value, &valuelen)) {
ftype._classname = value;
valuelen = sizeof(display_name);
if (!RegQueryValue(HKEY_CLASSES_ROOT, ftype._classname, display_name, &valuelen))
ftype._displayname = display_name;
if (!RegOpenKey(HKEY_CLASSES_ROOT, ftype._classname, &hkey)) {
if (!RegQueryValueEx(hkey, TEXT("NeverShowExt"), 0, NULL, NULL, NULL))
ftype._neverShowExt = true;
RegCloseKey(hkey);
}
}
return ftype;
}

Definition at line 217 of file explorer.cpp.
References Entry::_data, Entry::_display_name, FileTypeInfo::_displayname, FileTypeInfo::_neverShowExt, _tcsrchr, Entry::_type_name, ATTRIBUTE_EXECUTABLE, is_exe_file(), and TEXT.
Referenced by WinDirectory::read_directory(), and ShellDirectory::read_directory().
{
LPCTSTR ext = _tcsrchr(entry->_data.cFileName, TEXT('.'));
if (ext) {
const FileTypeInfo& type = (*this)[ext];
if (!type._displayname.empty())
entry->_type_name = _tcsdup(type._displayname);
// hide some file extensions
if (type._neverShowExt && !dont_hide_ext) {
int len = ext - entry->_data.cFileName;
if (entry->_display_name != entry->_data.cFileName)
free(entry->_display_name);
entry->_display_name = (LPTSTR) malloc((len+1)*sizeof(TCHAR));
lstrcpyn(entry->_display_name, entry->_data.cFileName, len + 1);
}
if (is_exe_file(ext))
entry->_data.dwFileAttributes |= ATTRIBUTE_EXECUTABLE;
}
return ext;
}


|
ROS Explorer Source Code Documentation
generated on 02.01.2013 by
|