static void SearchDirectory_Recursive( StringList& fileNames, const String& fileName, bool recursive ) { String fileDir = File::ExtractDrive( fileName ) + File::ExtractDirectory( fileName ); String wildSpec = File::ExtractName( fileName ) + File::ExtractExtension( fileName ); FindFileInfo info; for ( File::Find f( fileName ); f.NextItem( info ); ) if ( !info.IsDirectory() ) if ( info.name.WildMatch( wildSpec ) ) { String path = fileDir + '/' + info.name; if ( !fileNames.Contains( path ) ) fileNames.Add( path ); } if ( recursive ) { StringList directories; for ( File::Find f( fileDir + "/*" ); f.NextItem( info ); ) if ( info.IsDirectory() && info.name != "." && info.name != ".." ) directories.Add( info.name ); for ( StringList::const_iterator i = directories.Begin(); i != directories.End(); ++i ) SearchDirectory_Recursive( fileNames, fileDir + '/' + *i + '/' + wildSpec, true ); } }
static void AddView( StringList& items, const View& v ) { String id( v.FullId() ); if ( !items.Contains( id ) ) items.Add( id ); }