1*a3b33415S猫头猫import React from 'react'; 2*a3b33415S猫头猫import {StyleSheet, Text, View} from 'react-native'; 3*a3b33415S猫头猫import rpx from '@/utils/rpx'; 4*a3b33415S猫头猫import ListItem, {ILeftProps} from '../base/listItem'; 5*a3b33415S猫头猫import DownloadManager from '@/common/downloadManager'; 6*a3b33415S猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; 7*a3b33415S猫头猫import MusicQueue from '@/common/musicQueue'; 8*a3b33415S猫头猫import IconButton from '../base/iconButton'; 9*a3b33415S猫头猫import usePanel from '../panels/usePanel'; 10*a3b33415S猫头猫 11*a3b33415S猫头猫interface IMusicItemProps { 12*a3b33415S猫头猫 index?: string | number; 13*a3b33415S猫头猫 left?: ILeftProps; 14*a3b33415S猫头猫 musicItem: IMusic.IMusicItem; 15*a3b33415S猫头猫 musicSheet?: IMusic.IMusicSheetItem; 16*a3b33415S猫头猫 onItemPress?: (musicItem: IMusic.IMusicItem) => void; 17*a3b33415S猫头猫} 18*a3b33415S猫头猫const ITEM_HEIGHT = rpx(120); 19*a3b33415S猫头猫export default function MusicItem(props: IMusicItemProps) { 20*a3b33415S猫头猫 const {musicItem, index, left, onItemPress, musicSheet} = props; 21*a3b33415S猫头猫 const {showPanel} = usePanel(); 22*a3b33415S猫头猫 23*a3b33415S猫头猫 return ( 24*a3b33415S猫头猫 <ListItem 25*a3b33415S猫头猫 itemHeight={ITEM_HEIGHT} 26*a3b33415S猫头猫 left={index !== undefined ? {index: index, width: rpx(56)} : left} 27*a3b33415S猫头猫 title={musicItem.title} 28*a3b33415S猫头猫 desc={ 29*a3b33415S猫头猫 <> 30*a3b33415S猫头猫 {DownloadManager.isDownloaded(musicItem) && ( 31*a3b33415S猫头猫 <Icon color="#11659a" name="check-circle" size={rpx(22)}></Icon> 32*a3b33415S猫头猫 )} 33*a3b33415S猫头猫 <Text> 34*a3b33415S猫头猫 {musicItem.artist} - {musicItem.album} 35*a3b33415S猫头猫 </Text> 36*a3b33415S猫头猫 </> 37*a3b33415S猫头猫 } 38*a3b33415S猫头猫 tag={musicItem.platform} 39*a3b33415S猫头猫 onPress={() => { 40*a3b33415S猫头猫 if (onItemPress) { 41*a3b33415S猫头猫 onItemPress(musicItem); 42*a3b33415S猫头猫 } else { 43*a3b33415S猫头猫 MusicQueue.play(musicItem); 44*a3b33415S猫头猫 } 45*a3b33415S猫头猫 }} 46*a3b33415S猫头猫 right={() => ( 47*a3b33415S猫头猫 <IconButton 48*a3b33415S猫头猫 name="dots-vertical" 49*a3b33415S猫头猫 size="normal" 50*a3b33415S猫头猫 fontColor="normal" 51*a3b33415S猫头猫 onPress={() => { 52*a3b33415S猫头猫 showPanel('MusicItemOptions', {musicItem, musicSheet}); 53*a3b33415S猫头猫 }}></IconButton> 54*a3b33415S猫头猫 )}></ListItem> 55*a3b33415S猫头猫 ); 56*a3b33415S猫头猫} 57