void CLibraryCollectionView::OnWebContextMenu(NMHDR* pNMHDR, LPARAM* pResult) { WVNCONTEXTMENU* pNotify = (WVNCONTEXTMENU*)pNMHDR; *pResult = TRUE; if ( m_nWebIndex != 0 ) { GetToolTip()->Hide(); SelClear( FALSE ); SelAdd( m_nWebIndex ); CPoint point( pNotify->ptMouse ); CStringList oFiles; { CQuickLock pLock( Library.m_pSection ); POSITION posSel = StartSelectedFileLoop(); while ( CLibraryFile* pFile = GetNextSelectedFile( posSel ) ) { oFiles.AddTail( pFile->GetPath() ); } } CString strName = _T("CLibraryFileView"); strName += Settings.Library.ShowVirtual ? _T(".Virtual") : _T(".Physical"); Skin.TrackPopupMenu( strName, point, ID_LIBRARY_LAUNCH, oFiles ); } }
void CLibraryDetailView::OnItemChanged(NM_LISTVIEW* pNotify, LRESULT* pResult) { *pResult = 0; if ( pNotify->iItem >= 0 ) { if ( ( pNotify->uOldState & LVIS_SELECTED ) != ( pNotify->uNewState & LVIS_SELECTED ) ) { if ( pNotify->uNewState & LVIS_SELECTED ) { SelAdd( m_pList[ pNotify->iItem ].nIndex ); m_pList[ pNotify->iItem ].nState |= LDVI_SELECTED; } else { SelRemove( m_pList[ pNotify->iItem ].nIndex ); m_pList[ pNotify->iItem ].nState &= ~LDVI_SELECTED; } } } else { SelClear(); LDVITEM* pItem = m_pList; for ( DWORD nCount = m_nList ; nCount ; nCount--, pItem++ ) pItem->nState &= ~LDVI_SELECTED; } }
void CLibraryDetailView::CacheSelection() { GET_LIST(); SelClear( FALSE ); for ( int nItem = -1 ; ( nItem = pList->GetNextItem( nItem, LVNI_SELECTED ) ) >= 0 ; ) { SelAdd( pList->GetItemData( nItem ), FALSE ); } }
void CLibraryDetailView::OnItemRangeChanged(NMLVODSTATECHANGE* pNotify, LRESULT* pResult) { *pResult = 0; for ( int nItem = pNotify->iFrom ; nItem <= pNotify->iTo ; nItem++ ) { if ( pNotify->uNewState & LVIS_SELECTED ) { SelAdd( m_pList[ nItem ].nIndex ); m_pList[ nItem ].nState |= LDVI_SELECTED; } else { SelRemove( m_pList[ nItem ].nIndex ); m_pList[ nItem ].nState &= ~LDVI_SELECTED; } } }
BOOL CLibraryTileView::Select(iterator pTile, TRISTATE bSelect) { CSingleLock oLock( &Library.m_pSection ); if ( ! oLock.Lock( 250 ) ) return FALSE; CAlbumFolder* pAlbum = (*pTile)->GetAlbum(); if ( ! pAlbum ) return FALSE; switch ( bSelect ) { case TRI_UNKNOWN: (*pTile)->m_bSelected = ! (*pTile)->m_bSelected; break; case TRI_FALSE: if ( (*pTile)->m_bSelected == FALSE ) return FALSE; (*pTile)->m_bSelected = FALSE; break; case TRI_TRUE: if ( (*pTile)->m_bSelected == TRUE ) return FALSE; (*pTile)->m_bSelected = TRUE; break; } if ( (*pTile)->m_bSelected ) { m_nSelected++; m_oSelTile.push_back( pTile ); SelAdd( pAlbum ); } else { m_nSelected--; SelRemove( pAlbum ); m_oSelTile.remove( pTile ); } return TRUE; }
BOOL CLibraryAlbumView::Select(CLibraryAlbumTrack* pTrack, TRISTATE bSelect) { switch ( bSelect ) { case TRI_UNKNOWN: pTrack->m_bSelected = ! pTrack->m_bSelected; break; case TRI_FALSE: if ( pTrack->m_bSelected == FALSE ) return FALSE; pTrack->m_bSelected = FALSE; break; case TRI_TRUE: if ( pTrack->m_bSelected == TRUE ) return FALSE; pTrack->m_bSelected = TRUE; break; } if ( pTrack->m_bSelected ) { if ( m_pSelTrack.Find( pTrack ) == NULL ) { m_nSelected++; SelAdd( pTrack->m_nIndex ); m_pSelTrack.AddTail( pTrack ); } } else { if ( POSITION pos = m_pSelTrack.Find( pTrack ) ) { m_nSelected--; SelRemove( pTrack->m_nIndex ); m_pSelTrack.RemoveAt( pos ); } } return TRUE; }