1*5589cdf3S猫头猫import React from 'react'; 21119c2eaS猫头猫import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native'; 3a3b33415S猫头猫import rpx from '@/utils/rpx'; 41119c2eaS猫头猫import ListItem from '../base/listItem'; 5c15039e2S猫头猫 60e4173cdS猫头猫import LocalMusicSheet from '@/core/localMusicSheet'; 7c15039e2S猫头猫import {showPanel} from '../panels/usePanel'; 81119c2eaS猫头猫import TitleAndTag from './titleAndTag'; 91119c2eaS猫头猫import ThemeText from '../base/themeText'; 105500cea7S猫头猫import TrackPlayer from '@/core/trackPlayer'; 11*5589cdf3S猫头猫import Icon from '@/components/base/icon.tsx'; 12a3b33415S猫头猫 13a3b33415S猫头猫interface IMusicItemProps { 14a3b33415S猫头猫 index?: string | number; 151119c2eaS猫头猫 showMoreIcon?: boolean; 16a3b33415S猫头猫 musicItem: IMusic.IMusicItem; 17a3b33415S猫头猫 musicSheet?: IMusic.IMusicSheetItem; 18a3b33415S猫头猫 onItemPress?: (musicItem: IMusic.IMusicItem) => void; 1994824d29S猫头猫 onItemLongPress?: () => void; 2017c7a0a6S猫头猫 itemPaddingRight?: number; 21*5589cdf3S猫头猫 left?: () => JSX.Element; 221119c2eaS猫头猫 containerStyle?: StyleProp<ViewStyle>; 23a3b33415S猫头猫} 24a3b33415S猫头猫export default function MusicItem(props: IMusicItemProps) { 2594824d29S猫头猫 const { 2694824d29S猫头猫 musicItem, 2794824d29S猫头猫 index, 2894824d29S猫头猫 onItemPress, 2994824d29S猫头猫 onItemLongPress, 3094824d29S猫头猫 musicSheet, 3117c7a0a6S猫头猫 itemPaddingRight, 321119c2eaS猫头猫 showMoreIcon = true, 331119c2eaS猫头猫 left: Left, 341119c2eaS猫头猫 containerStyle, 3594824d29S猫头猫 } = props; 36a3b33415S猫头猫 37a3b33415S猫头猫 return ( 38a3b33415S猫头猫 <ListItem 391119c2eaS猫头猫 heightType="big" 401119c2eaS猫头猫 style={containerStyle} 41*5589cdf3S猫头猫 withHorizontalPadding 421119c2eaS猫头猫 leftPadding={index !== undefined ? 0 : undefined} 431119c2eaS猫头猫 rightPadding={itemPaddingRight} 4494824d29S猫头猫 onLongPress={onItemLongPress} 45a3b33415S猫头猫 onPress={() => { 46a3b33415S猫头猫 if (onItemPress) { 47a3b33415S猫头猫 onItemPress(musicItem); 48a3b33415S猫头猫 } else { 495500cea7S猫头猫 TrackPlayer.play(musicItem); 50a3b33415S猫头猫 } 511119c2eaS猫头猫 }}> 521119c2eaS猫头猫 {Left ? <Left /> : null} 531119c2eaS猫头猫 {index !== undefined ? ( 541119c2eaS猫头猫 <ListItem.ListItemText 551119c2eaS猫头猫 width={rpx(82)} 561119c2eaS猫头猫 position="none" 571119c2eaS猫头猫 fixedWidth 581119c2eaS猫头猫 contentStyle={styles.indexText}> 591119c2eaS猫头猫 {index} 601119c2eaS猫头猫 </ListItem.ListItemText> 611119c2eaS猫头猫 ) : null} 621119c2eaS猫头猫 <ListItem.Content 631119c2eaS猫头猫 title={ 641119c2eaS猫头猫 <TitleAndTag 651119c2eaS猫头猫 title={musicItem.title} 661119c2eaS猫头猫 tag={musicItem.platform} 671119c2eaS猫头猫 /> 681119c2eaS猫头猫 } 691119c2eaS猫头猫 description={ 701119c2eaS猫头猫 <View style={styles.descContainer}> 711119c2eaS猫头猫 {LocalMusicSheet.isLocalMusic(musicItem) && ( 721119c2eaS猫头猫 <Icon 731119c2eaS猫头猫 style={styles.icon} 741119c2eaS猫头猫 color="#11659a" 751119c2eaS猫头猫 name="check-circle" 761119c2eaS猫头猫 size={rpx(22)} 771119c2eaS猫头猫 /> 781119c2eaS猫头猫 )} 791119c2eaS猫头猫 <ThemeText 801119c2eaS猫头猫 numberOfLines={1} 811119c2eaS猫头猫 fontSize="description" 82277c5280S猫头猫 fontColor="textSecondary"> 831119c2eaS猫头猫 {musicItem.artist} 841119c2eaS猫头猫 {musicItem.album ? ` - ${musicItem.album}` : ''} 851119c2eaS猫头猫 </ThemeText> 861119c2eaS猫头猫 </View> 871119c2eaS猫头猫 } 881119c2eaS猫头猫 /> 891119c2eaS猫头猫 {showMoreIcon ? ( 901119c2eaS猫头猫 <ListItem.ListItemIcon 911119c2eaS猫头猫 width={rpx(48)} 921119c2eaS猫头猫 position="none" 93*5589cdf3S猫头猫 icon="ellipsis-vertical" 94a3b33415S猫头猫 onPress={() => { 9594824d29S猫头猫 showPanel('MusicItemOptions', { 9694824d29S猫头猫 musicItem, 9794824d29S猫头猫 musicSheet, 9894824d29S猫头猫 }); 994060c00aS猫头猫 }} 1004060c00aS猫头猫 /> 1011119c2eaS猫头猫 ) : null} 1021119c2eaS猫头猫 </ListItem> 103a3b33415S猫头猫 ); 104a3b33415S猫头猫} 1051119c2eaS猫头猫 1061119c2eaS猫头猫const styles = StyleSheet.create({ 1071119c2eaS猫头猫 icon: { 1081119c2eaS猫头猫 marginRight: rpx(6), 1091119c2eaS猫头猫 }, 1101119c2eaS猫头猫 descContainer: { 1111119c2eaS猫头猫 flexDirection: 'row', 1121119c2eaS猫头猫 marginTop: rpx(16), 1131119c2eaS猫头猫 }, 1141119c2eaS猫头猫 1151119c2eaS猫头猫 indexText: { 1161119c2eaS猫头猫 fontStyle: 'italic', 1171119c2eaS猫头猫 textAlign: 'center', 1181119c2eaS猫头猫 }, 1191119c2eaS猫头猫}); 120