void CFileListManager::Refresh() { m_bRefreshRequired = false; RemoveAll(); bool bP4Connected = p4->IsConnectedToServer(); int nFiles = g_pDataModel->NumFileIds(); for ( int i = 0; i < nFiles; ++i ) { DmFileId_t fileid = g_pDataModel->GetFileId( i ); const char *pFileName = g_pDataModel->GetFileName( fileid ); if ( !pFileName || !*pFileName ) continue; // skip DMFILEID_INVALID and the default fileid "" bool bLoaded = g_pDataModel->IsFileLoaded( fileid ); int nElements = g_pDataModel->NumElementsInFile( fileid ); bool bChanged = false; // TODO - find out for real bool bInPerforce = bP4Connected && p4->IsFileInPerforce( pFileName ); bool bOpenForEdit = bInPerforce && p4->GetFileState( pFileName ) != P4FILE_UNOPENED; char path[ 256 ]; V_ExtractFilePath( pFileName, path, sizeof( path ) ); AddItem( fileid, V_UnqualifiedFileName( pFileName ), path, bLoaded, nElements, bChanged, bInPerforce, bOpenForEdit ); } }
CUtlString CUtlString::StripFilename() const { const char *pFilename = V_UnqualifiedFileName( Get() ); // NOTE: returns 'Get()' on failure, never NULL int nCharsToCopy = pFilename - Get(); CUtlString result; result.SetDirect( Get(), nCharsToCopy ); result.StripTrailingSlash(); return result; }
void CFileListManager::OnDataChanged( KeyValues *pParams ) { int nNotifyFlags = pParams->GetInt( "notifyFlags" ); if ( ( nNotifyFlags & NOTIFY_CHANGE_TOPOLOGICAL ) == 0 ) return; int nNotifySource = pParams->GetInt( "source" ); if ( nNotifySource == NOTIFY_SOURCE_FILE_LIST_MANAGER ) return; if ( !IsVisible() ) { m_bRefreshRequired = true; return; } int nCount = GetItemCount(); int nFiles = g_pDataModel->NumFileIds(); bool bPerformFullRefresh = ( nCount != nFiles ); if ( !bPerformFullRefresh ) { const char *pNameKey = GetKey( CI_FILENAME ); for ( int i = 0; i < nCount; ++i ) { DmFileId_t fileid = g_pDataModel->GetFileId( i ); const char *pFileName = g_pDataModel->GetFileName( fileid ); if ( !pFileName || !*pFileName ) { bPerformFullRefresh = true; break; } pFileName = V_UnqualifiedFileName( pFileName ); KeyValues *pKeyValues = GetItem( i ); bPerformFullRefresh = ( fileid != (DmFileId_t)GetItemUserData(i) ) || Q_stricmp( pFileName, pKeyValues->GetString( pNameKey ) ); if ( bPerformFullRefresh ) break; pKeyValues->SetInt ( GetKey( CI_NUMELEMENTS ), g_pDataModel->NumElementsInFile( fileid ) ); pKeyValues->SetString( GetKey( CI_LOADED ), g_pDataModel->IsFileLoaded( fileid ) ? "Y" : "N" ); pKeyValues->SetString( GetKey( CI_CHANGED ), false ? "Y" : "N" ); ApplyItemChanges( i ); } } if ( bPerformFullRefresh ) { Refresh(); return; } }
bool FileSystem_IsHldsUpdateToolDedicatedServer() { // To determine this, we see if the directory our executable was launched from is "orangebox". // We only are under "orangebox" if we're run from hldsupdatetool. char baseDir[MAX_PATH]; if ( !FileSystem_GetBaseDir( baseDir, sizeof( baseDir ) ) ) return false; V_FixSlashes( baseDir ); V_StripTrailingSlash( baseDir ); const char *pLastDir = V_UnqualifiedFileName( baseDir ); return ( pLastDir && V_stricmp( pLastDir, "orangebox" ) == 0 ); }
CUtlString CUtlString::UnqualifiedFilename() { const char *pFilename = V_UnqualifiedFileName( this->String() ); return CUtlString( pFilename ); }