xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision c7676810b7e3ee33e19fb268dd964ad9af487cc7)
1bf6e62f2S猫头猫import React from 'react';
2bf6e62f2S猫头猫import {
3bf6e62f2S猫头猫  BackHandler,
43ee62d1bS猫头猫  FlatList,
5bf6e62f2S猫头猫  ImageBackground,
6bf6e62f2S猫头猫  StyleSheet,
7bf6e62f2S猫头猫  Text,
8bf6e62f2S猫头猫  View,
9bf6e62f2S猫头猫} from 'react-native';
10bf6e62f2S猫头猫import rpx from '@/utils/rpx';
11bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer';
12bf6e62f2S猫头猫import {Button, Card, IconButton} from 'react-native-paper';
13bf6e62f2S猫头猫import MusicQueue from '@/common/musicQueue';
14bf6e62f2S猫头猫import ListItem from '@/components/listItem';
15bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
16bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
17bf6e62f2S猫头猫import {fontSizeConst, fontWeightConst} from '@/constants/uiConst';
18bf6e62f2S猫头猫import ThemeText from '@/components/themeText';
1965fc5a50S猫头猫import PageBackground from '@/components/pageBackground';
20*c7676810S猫头猫import DeviceInfo from 'react-native-device-info';
21bf6e62f2S猫头猫
22bf6e62f2S猫头猫interface IDrawerProps {}
23bf6e62f2S猫头猫
24bf6e62f2S猫头猫export default function HomeDrawer(props: IDrawerProps) {
25bf6e62f2S猫头猫  const navigation = useNavigation<any>();
26bf6e62f2S猫头猫  function navigateToSetting(settingType: string) {
27bf6e62f2S猫头猫    navigation.navigate(ROUTE_PATH.SETTING, {
28bf6e62f2S猫头猫      type: settingType,
29bf6e62f2S猫头猫    });
30bf6e62f2S猫头猫  }
313ee62d1bS猫头猫
323ee62d1bS猫头猫  const basicSetting = [
333ee62d1bS猫头猫    {
343ee62d1bS猫头猫      icon: 'cog-outline',
353ee62d1bS猫头猫      title: '基本设置',
363ee62d1bS猫头猫      onPress: () => {
373ee62d1bS猫头猫        navigateToSetting('basic');
383ee62d1bS猫头猫      },
393ee62d1bS猫头猫    },
403ee62d1bS猫头猫    {
413ee62d1bS猫头猫      icon: 'language-javascript',
423ee62d1bS猫头猫      title: '插件设置',
433ee62d1bS猫头猫      onPress: () => {
443ee62d1bS猫头猫        navigateToSetting('plugin');
453ee62d1bS猫头猫      },
463ee62d1bS猫头猫    },
473ee62d1bS猫头猫    {
483ee62d1bS猫头猫      icon: 'tshirt-v-outline',
493ee62d1bS猫头猫      title: '主题设置',
503ee62d1bS猫头猫      onPress: () => {
513ee62d1bS猫头猫        navigateToSetting('theme');
523ee62d1bS猫头猫      },
533ee62d1bS猫头猫    },
543ee62d1bS猫头猫    {
553ee62d1bS猫头猫      icon: 'backup-restore',
563ee62d1bS猫头猫      title: '备份与恢复',
573ee62d1bS猫头猫      onPress: () => {},
583ee62d1bS猫头猫    },
593ee62d1bS猫头猫  ] as const;
603ee62d1bS猫头猫
61bf6e62f2S猫头猫  return (
6265fc5a50S猫头猫    <>
6365fc5a50S猫头猫      <PageBackground></PageBackground>
64bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
65bf6e62f2S猫头猫        <View style={style.header}>
66*c7676810S猫头猫          <ThemeText fontSize='appbar' fontWeight='bold'>{DeviceInfo.getApplicationName()}</ThemeText>
678b51f01aS猫头猫          <IconButton icon={'qrcode-scan'} size={rpx(36)}></IconButton>
68bf6e62f2S猫头猫        </View>
69bf6e62f2S猫头猫        <Card style={style.card}>
70bf6e62f2S猫头猫          <Card.Title
718b51f01aS猫头猫            title={
72ec26b768S猫头猫              <ThemeText fontSize='description'>设置</ThemeText>
738b51f01aS猫头猫            }></Card.Title>
74bf6e62f2S猫头猫          <Card.Content>
753ee62d1bS猫头猫            {basicSetting.map(item => (
76bf6e62f2S猫头猫              <ListItem
773ee62d1bS猫头猫                key={item.title}
783ee62d1bS猫头猫                itemPaddingHorizontal={0}
793ee62d1bS猫头猫                left={{
803ee62d1bS猫头猫                  icon: {
813ee62d1bS猫头猫                    name: item.icon,
823ee62d1bS猫头猫                    size: 'normal',
833ee62d1bS猫头猫                    fontColor: 'normal',
843ee62d1bS猫头猫                  },
853ee62d1bS猫头猫                  width: rpx(48),
863ee62d1bS猫头猫                }}
873ee62d1bS猫头猫                title={item.title}
883ee62d1bS猫头猫                onPress={item.onPress}></ListItem>
893ee62d1bS猫头猫            ))}
90bf6e62f2S猫头猫          </Card.Content>
91bf6e62f2S猫头猫        </Card>
92bf6e62f2S猫头猫        <View style={style.bottom}>
93bf6e62f2S猫头猫          <Button
94bf6e62f2S猫头猫            onPress={() => {
95bf6e62f2S猫头猫              MusicQueue.stop();
96bf6e62f2S猫头猫              BackHandler.exitApp();
97bf6e62f2S猫头猫            }}>
98bf6e62f2S猫头猫            退出
99bf6e62f2S猫头猫          </Button>
100bf6e62f2S猫头猫        </View>
101bf6e62f2S猫头猫      </DrawerContentScrollView>
10265fc5a50S猫头猫    </>
103bf6e62f2S猫头猫  );
104bf6e62f2S猫头猫}
105bf6e62f2S猫头猫
106bf6e62f2S猫头猫const style = StyleSheet.create({
107bf6e62f2S猫头猫  wrapper: {
108bf6e62f2S猫头猫    flex: 1,
109bf6e62f2S猫头猫    backgroundColor: '#999999',
110bf6e62f2S猫头猫  },
111bf6e62f2S猫头猫  scrollWrapper: {
112bf6e62f2S猫头猫    paddingHorizontal: rpx(24),
113bf6e62f2S猫头猫    paddingTop: rpx(12),
114bf6e62f2S猫头猫  },
115bf6e62f2S猫头猫
116bf6e62f2S猫头猫  header: {
117bf6e62f2S猫头猫    height: rpx(100),
118bf6e62f2S猫头猫    width: '100%',
119bf6e62f2S猫头猫    flexDirection: 'row',
120bf6e62f2S猫头猫    justifyContent: 'space-between',
121bf6e62f2S猫头猫    alignItems: 'center',
122bf6e62f2S猫头猫  },
123bf6e62f2S猫头猫  card: {
124bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
125bf6e62f2S猫头猫  },
126bf6e62f2S猫头猫  bottom: {
127bf6e62f2S猫头猫    height: rpx(100),
128bf6e62f2S猫头猫    flexDirection: 'row',
129bf6e62f2S猫头猫    alignItems: 'center',
130bf6e62f2S猫头猫    justifyContent: 'flex-end',
131bf6e62f2S猫头猫  },
132bf6e62f2S猫头猫});
133