BOOL CLibraryCollectionView::CheckAvailable(CLibraryTreeItem* pSel)
{
    BOOL bAvailable = FALSE;

    CQuickLock oLock( Library.m_pSection );

    if ( CAlbumFolder* pFolder = GetSelectedAlbum( pSel ) )
    {
        if ( pFolder->m_oCollSHA1 )
        {
            if ( LibraryMaps.LookupFileBySHA1( pFolder->m_oCollSHA1, FALSE, TRUE ) )
            {
                bAvailable = TRUE;
            }
            else
            {
                pFolder->m_oCollSHA1.clear();
                Library.Update();
            }
        }
    }

    if ( bAvailable != m_bAvailable )
    {
        m_bAvailable = bAvailable;
        m_bLockdown = FALSE;
    }

    return m_bAvailable;
}
void CLibraryCollectionView::Update()
{
    if ( CAlbumFolder* pFolder = GetSelectedAlbum() )
    {
        if ( pFolder->m_oCollSHA1 && m_pWebCtrl != NULL )
        {
            if ( CLibraryFile* pFile = LibraryMaps.LookupFileBySHA1( pFolder->m_oCollSHA1, FALSE, TRUE ) )
            {
                ShowCollection( pFile );
                return;
            }
        }
    }

    ShowCollection( NULL );
}
Пример #3
0
int CLibraryHeaderPanel::Update()
{
	CAlbumFolder* pFolder = GetSelectedAlbum();
	if ( pFolder == NULL || pFolder->m_pSchema == NULL ) return 0;

	m_nIcon32	= pFolder->m_pSchema->m_nIcon32;
	m_nIcon48	= pFolder->m_pSchema->m_nIcon48;

	m_sTitle	= pFolder->m_pSchema->m_sHeaderTitle;
	m_sSubtitle	= pFolder->m_pSchema->m_sHeaderSubtitle;

	if ( pFolder->GetParent() == NULL )
	{
		QWORD nTotalVolume;
		DWORD nTotalFiles;
		CString str;

		LibraryMaps.GetStatistics( &nTotalFiles, &nTotalVolume );
		str.Format( _T("%lu"), nTotalFiles );
		m_sSubtitle.Replace( _T("{totalFiles}"), str );
		str = Settings.SmartVolume( nTotalVolume, KiloBytes );
		m_sSubtitle.Replace( _T("{totalVolume}"), str );
	}

	pFolder->m_pSchema->ResolveTokens( m_sTitle, pFolder->m_pXML );
	pFolder->m_pSchema->ResolveTokens( m_sSubtitle, pFolder->m_pXML );

	if ( m_sTitle.IsEmpty() ) m_sTitle = pFolder->m_sName;

	m_pMetadata.Setup( pFolder->m_pSchema );
	m_pMetadata.Remove( pFolder->m_pSchema->GetFirstMemberName() );

	m_pMetadata.Combine( pFolder->m_pXML );

	m_pMetadata.CreateLinks();
	m_pMetadata.Clean( 54 );

	if ( m_pMetadata.GetCount() )
	{
		CClientDC dc( this );
		CFont* pFont = (CFont*)dc.SelectObject( &CoolInterface.m_fntNormal );
		m_nKeyWidth = m_nMetaWidth = 0;
		m_pMetadata.ComputeWidth( &dc, m_nKeyWidth, m_nMetaWidth );
		if ( m_nKeyWidth ) m_nKeyWidth += 8;
		m_nMetaWidth += m_nKeyWidth;
		dc.SelectObject( pFont );
	}

	if (m_hWnd) Invalidate();

	int nHeight = static_cast< int >( m_pMetadata.GetCount() * 12 + 8 );

	if ( pFolder->GetParent() )
	{
		nHeight = max( 64, nHeight );
	}
	else
	{
		nHeight = max( 56, nHeight );
	}

	return min( 80, nHeight );
}