int CategoryTree::getImageForEntry( const DatIndexEntry& p_entry ) { switch ( p_entry.fileType( ) ) { case ANFT_ATEX: case ANFT_ATTX: case ANFT_ATEC: case ANFT_ATEP: case ANFT_ATEU: case ANFT_ATET: case ANFT_DDS: case ANFT_JPEG: case ANFT_WEBP: return CategoryTreeImageList::IT_Image; case ANFT_EXE: return CategoryTreeImageList::IT_Executable; case ANFT_DLL: return CategoryTreeImageList::IT_Dll; case ANFT_EULA: case ANFT_StringFile: return CategoryTreeImageList::IT_Text; case ANFT_Bank: case ANFT_Sound: case ANFT_ID3: return CategoryTreeImageList::IT_Sound; case ANFT_FontFile: return CategoryTreeImageList::IT_Font; case ANFT_Bink2Video: return CategoryTreeImageList::IT_Video; default: return CategoryTreeImageList::IT_UnknownFile; } }
bool PreviewPanel::previewFile( DatFile& p_datFile, const DatIndexEntry& p_entry ) { auto entryData = p_datFile.readFile( p_entry.mftEntry( ) ); if ( !entryData.GetSize( ) ) { return false; } // Create file reader auto reader = FileReader::readerForData( entryData, p_datFile, p_entry.fileType( ) ); if ( reader ) { if ( m_currentView ) { // Check if we can re-use the current viewer if ( m_currentDataType == reader->dataType( ) ) { m_currentView->setReader( reader ); return true; } // Destroy the old viewer if ( m_currentView ) { this->GetSizer( )->Remove( 0 ); m_currentView->Destroy( ); } } m_currentView = this->createViewerForDataType( reader->dataType( ), p_datFile ); if ( m_currentView ) { // Workaround for wxWidgets fuckups this->GetSizer( )->Add( m_currentView, wxSizerFlags( ).Expand( ).Proportion( 1 ) ); this->GetSizer( )->Layout( ); this->GetSizer( )->Fit( this ); // Set the reader m_currentView->setReader( reader ); m_currentDataType = reader->dataType( ); return true; } } return false; }