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 );
	}
}
Esempio n. 2
0
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 );
}
Esempio n. 5
0
CUtlString CUtlString::UnqualifiedFilename()
{
	const char *pFilename = V_UnqualifiedFileName( this->String() );
	return CUtlString( pFilename );
}