1359f51feS猫头猫import React, {memo} from 'react'; 26bdd7a42S猫头猫import {StyleSheet, View, BackHandler} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 4bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer'; 51119c2eaS猫头猫import ListItem from '@/components/base/listItem'; 6e7fa3837S猫头猫import {ROUTE_PATH, useNavigate} from '@/entry/router'; 719dc08ecS猫头猫import ThemeText from '@/components/base/themeText'; 819dc08ecS猫头猫import PageBackground from '@/components/base/pageBackground'; 9c7676810S猫头猫import DeviceInfo from 'react-native-device-info'; 109cd1998bS猫头猫import NativeUtils from '@/native/utils'; 11e2257bd6S猫头猫import MusicQueue from '@/core/musicQueue'; 12359f51feS猫头猫import {useTimingClose} from '@/utils/timingClose'; 13c15039e2S猫头猫 14359f51feS猫头猫import timeformat from '@/utils/timeformat'; 15c15039e2S猫头猫import {showPanel} from '@/components/panels/usePanel'; 161119c2eaS猫头猫import Divider from '@/components/base/divider'; 17bf6e62f2S猫头猫 18359f51feS猫头猫const ITEM_HEIGHT = rpx(108); 19f7a931fdS猫头猫function HomeDrawer(props: any) { 20e7fa3837S猫头猫 const navigate = useNavigate(); 21bf6e62f2S猫头猫 function navigateToSetting(settingType: string) { 22e7fa3837S猫头猫 navigate(ROUTE_PATH.SETTING, { 23bf6e62f2S猫头猫 type: settingType, 24bf6e62f2S猫头猫 }); 25bf6e62f2S猫头猫 } 263ee62d1bS猫头猫 273ee62d1bS猫头猫 const basicSetting = [ 283ee62d1bS猫头猫 { 293ee62d1bS猫头猫 icon: 'cog-outline', 303ee62d1bS猫头猫 title: '基本设置', 313ee62d1bS猫头猫 onPress: () => { 323ee62d1bS猫头猫 navigateToSetting('basic'); 333ee62d1bS猫头猫 }, 343ee62d1bS猫头猫 }, 353ee62d1bS猫头猫 { 363ee62d1bS猫头猫 icon: 'language-javascript', 373ee62d1bS猫头猫 title: '插件设置', 383ee62d1bS猫头猫 onPress: () => { 393ee62d1bS猫头猫 navigateToSetting('plugin'); 403ee62d1bS猫头猫 }, 413ee62d1bS猫头猫 }, 423ee62d1bS猫头猫 { 433ee62d1bS猫头猫 icon: 'tshirt-v-outline', 443ee62d1bS猫头猫 title: '主题设置', 453ee62d1bS猫头猫 onPress: () => { 463ee62d1bS猫头猫 navigateToSetting('theme'); 473ee62d1bS猫头猫 }, 483ee62d1bS猫头猫 }, 49359f51feS猫头猫 ] as const; 50359f51feS猫头猫 51359f51feS猫头猫 const otherSetting = [ 523ee62d1bS猫头猫 { 533ee62d1bS猫头猫 icon: 'backup-restore', 543ee62d1bS猫头猫 title: '备份与恢复', 55dec7a5f8S猫头猫 onPress: () => { 56dec7a5f8S猫头猫 navigateToSetting('backup'); 57dec7a5f8S猫头猫 }, 583ee62d1bS猫头猫 }, 590cffb46aS猫头猫 { 600cffb46aS猫头猫 icon: 'information-outline', 610cffb46aS猫头猫 title: '关于', 620cffb46aS猫头猫 onPress: () => { 630cffb46aS猫头猫 navigateToSetting('about'); 640cffb46aS猫头猫 }, 650cffb46aS猫头猫 }, 663ee62d1bS猫头猫 ] as const; 673ee62d1bS猫头猫 68bf6e62f2S猫头猫 return ( 6965fc5a50S猫头猫 <> 704060c00aS猫头猫 <PageBackground /> 714060c00aS猫头猫 <DrawerContentScrollView {...[props]} style={style.scrollWrapper}> 72bf6e62f2S猫头猫 <View style={style.header}> 73dec7a5f8S猫头猫 <ThemeText fontSize="appbar" fontWeight="bold"> 74dec7a5f8S猫头猫 {DeviceInfo.getApplicationName()} 75dec7a5f8S猫头猫 </ThemeText> 76b882a19dS猫头猫 {/* <IconButton icon={'qrcode-scan'} size={rpx(36)} /> */} 77bf6e62f2S猫头猫 </View> 781119c2eaS猫头猫 <View style={style.card}> 791119c2eaS猫头猫 <ListItem withHorizonalPadding heightType="small"> 801119c2eaS猫头猫 <ListItem.ListItemText 811119c2eaS猫头猫 fontSize="subTitle" 821119c2eaS猫头猫 fontWeight="bold"> 831119c2eaS猫头猫 设置 841119c2eaS猫头猫 </ListItem.ListItemText> 851119c2eaS猫头猫 </ListItem> 863ee62d1bS猫头猫 {basicSetting.map(item => ( 87bf6e62f2S猫头猫 <ListItem 881119c2eaS猫头猫 withHorizonalPadding 89359f51feS猫头猫 key={item.title} 901119c2eaS猫头猫 onPress={item.onPress}> 911119c2eaS猫头猫 <ListItem.ListItemIcon 921119c2eaS猫头猫 icon={item.icon} 931119c2eaS猫头猫 width={rpx(48)} 94359f51feS猫头猫 /> 951119c2eaS猫头猫 <ListItem.Content title={item.title} /> 961119c2eaS猫头猫 </ListItem> 97359f51feS猫头猫 ))} 981119c2eaS猫头猫 </View> 991119c2eaS猫头猫 <View style={style.card}> 1001119c2eaS猫头猫 <ListItem withHorizonalPadding heightType="small"> 1011119c2eaS猫头猫 <ListItem.ListItemText 1021119c2eaS猫头猫 fontSize="subTitle" 1031119c2eaS猫头猫 fontWeight="bold"> 1041119c2eaS猫头猫 其他 1051119c2eaS猫头猫 </ListItem.ListItemText> 1061119c2eaS猫头猫 </ListItem> 107359f51feS猫头猫 <CountDownItem /> 108359f51feS猫头猫 {otherSetting.map(item => ( 109359f51feS猫头猫 <ListItem 1101119c2eaS猫头猫 withHorizonalPadding 1113ee62d1bS猫头猫 key={item.title} 1121119c2eaS猫头猫 onPress={item.onPress}> 1131119c2eaS猫头猫 <ListItem.ListItemIcon 1141119c2eaS猫头猫 icon={item.icon} 1151119c2eaS猫头猫 width={rpx(48)} 1164060c00aS猫头猫 /> 1171119c2eaS猫头猫 <ListItem.Content title={item.title} /> 1181119c2eaS猫头猫 </ListItem> 1193ee62d1bS猫头猫 ))} 1201119c2eaS猫头猫 </View> 1211119c2eaS猫头猫 1221119c2eaS猫头猫 <Divider /> 1231119c2eaS猫头猫 <ListItem 1241119c2eaS猫头猫 withHorizonalPadding 1256bdd7a42S猫头猫 onPress={() => { 1266bdd7a42S猫头猫 // 仅安卓生效 1276bdd7a42S猫头猫 BackHandler.exitApp(); 1286bdd7a42S猫头猫 }}> 129*0be848bcS猫头猫 <ListItem.ListItemIcon 130*0be848bcS猫头猫 icon={'home-outline'} 131*0be848bcS猫头猫 width={rpx(48)} 132*0be848bcS猫头猫 /> 1336bdd7a42S猫头猫 <ListItem.Content title={'返回桌面'} /> 1346bdd7a42S猫头猫 </ListItem> 1356bdd7a42S猫头猫 <ListItem 1366bdd7a42S猫头猫 withHorizonalPadding 137e2257bd6S猫头猫 onPress={async () => { 138e2257bd6S猫头猫 await MusicQueue.reset(); 139e2257bd6S猫头猫 NativeUtils.exitApp(); 140bf6e62f2S猫头猫 }}> 1411119c2eaS猫头猫 <ListItem.ListItemIcon icon={'power'} width={rpx(48)} /> 1421119c2eaS猫头猫 <ListItem.Content title={'退出应用'} /> 1431119c2eaS猫头猫 </ListItem> 144bf6e62f2S猫头猫 </DrawerContentScrollView> 14565fc5a50S猫头猫 </> 146bf6e62f2S猫头猫 ); 147bf6e62f2S猫头猫} 148bf6e62f2S猫头猫 149f7a931fdS猫头猫export default memo(HomeDrawer, () => true); 150f7a931fdS猫头猫 151bf6e62f2S猫头猫const style = StyleSheet.create({ 152bf6e62f2S猫头猫 wrapper: { 153bf6e62f2S猫头猫 flex: 1, 154bf6e62f2S猫头猫 backgroundColor: '#999999', 155bf6e62f2S猫头猫 }, 156bf6e62f2S猫头猫 scrollWrapper: { 157bf6e62f2S猫头猫 paddingTop: rpx(12), 158bf6e62f2S猫头猫 }, 159bf6e62f2S猫头猫 160bf6e62f2S猫头猫 header: { 16194b17902S猫头猫 height: rpx(120), 162bf6e62f2S猫头猫 width: '100%', 163bf6e62f2S猫头猫 flexDirection: 'row', 164bf6e62f2S猫头猫 justifyContent: 'space-between', 165bf6e62f2S猫头猫 alignItems: 'center', 16694b17902S猫头猫 marginLeft: rpx(24), 167bf6e62f2S猫头猫 }, 168bf6e62f2S猫头猫 card: { 169359f51feS猫头猫 marginBottom: rpx(24), 170bf6e62f2S猫头猫 }, 171dec7a5f8S猫头猫 cardContent: { 1724060c00aS猫头猫 paddingHorizontal: 0, 173dec7a5f8S猫头猫 }, 1741119c2eaS猫头猫 175359f51feS猫头猫 /** 倒计时 */ 176359f51feS猫头猫 countDownText: { 177359f51feS猫头猫 height: ITEM_HEIGHT, 178359f51feS猫头猫 textAlignVertical: 'center', 179359f51feS猫头猫 }, 180bf6e62f2S猫头猫}); 181359f51feS猫头猫 182359f51feS猫头猫function _CountDownItem() { 183359f51feS猫头猫 const countDown = useTimingClose(); 184359f51feS猫头猫 185359f51feS猫头猫 return ( 186359f51feS猫头猫 <ListItem 1871119c2eaS猫头猫 withHorizonalPadding 188359f51feS猫头猫 onPress={() => { 189359f51feS猫头猫 showPanel('TimingClose'); 1901119c2eaS猫头猫 }}> 1911119c2eaS猫头猫 <ListItem.ListItemIcon icon="timer-outline" width={rpx(48)} /> 1921119c2eaS猫头猫 <ListItem.Content title="定时关闭" /> 1931119c2eaS猫头猫 <ListItem.ListItemText position="right" fontSize="subTitle"> 194359f51feS猫头猫 {countDown ? timeformat(countDown) : ''} 1951119c2eaS猫头猫 </ListItem.ListItemText> 1961119c2eaS猫头猫 </ListItem> 197359f51feS猫头猫 ); 198359f51feS猫头猫} 199359f51feS猫头猫 200359f51feS猫头猫const CountDownItem = memo(_CountDownItem, () => true); 201