xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision 3ee62d1b70effeaac84ac1d8ec2f4f890576403b)
1bf6e62f2S猫头猫import React from 'react';
2bf6e62f2S猫头猫import {
3bf6e62f2S猫头猫  BackHandler,
4*3ee62d1bS猫头猫  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';
20bf6e62f2S猫头猫
21bf6e62f2S猫头猫interface IDrawerProps {}
22bf6e62f2S猫头猫
23bf6e62f2S猫头猫export default function HomeDrawer(props: IDrawerProps) {
24bf6e62f2S猫头猫  const navigation = useNavigation<any>();
25bf6e62f2S猫头猫  function navigateToSetting(settingType: string) {
26bf6e62f2S猫头猫    navigation.navigate(ROUTE_PATH.SETTING, {
27bf6e62f2S猫头猫      type: settingType,
28bf6e62f2S猫头猫    });
29bf6e62f2S猫头猫  }
30*3ee62d1bS猫头猫
31*3ee62d1bS猫头猫  const basicSetting = [
32*3ee62d1bS猫头猫    {
33*3ee62d1bS猫头猫      icon: 'cog-outline',
34*3ee62d1bS猫头猫      title: '基本设置',
35*3ee62d1bS猫头猫      onPress: () => {
36*3ee62d1bS猫头猫        navigateToSetting('basic');
37*3ee62d1bS猫头猫      },
38*3ee62d1bS猫头猫    },
39*3ee62d1bS猫头猫    {
40*3ee62d1bS猫头猫      icon: 'language-javascript',
41*3ee62d1bS猫头猫      title: '插件设置',
42*3ee62d1bS猫头猫      onPress: () => {
43*3ee62d1bS猫头猫        navigateToSetting('plugin');
44*3ee62d1bS猫头猫      },
45*3ee62d1bS猫头猫    },
46*3ee62d1bS猫头猫    {
47*3ee62d1bS猫头猫      icon: 'tshirt-v-outline',
48*3ee62d1bS猫头猫      title: '主题设置',
49*3ee62d1bS猫头猫      onPress: () => {
50*3ee62d1bS猫头猫        navigateToSetting('theme');
51*3ee62d1bS猫头猫      },
52*3ee62d1bS猫头猫    },
53*3ee62d1bS猫头猫    {
54*3ee62d1bS猫头猫      icon: 'backup-restore',
55*3ee62d1bS猫头猫      title: '备份与恢复',
56*3ee62d1bS猫头猫      onPress: () => {},
57*3ee62d1bS猫头猫    },
58*3ee62d1bS猫头猫  ] as const;
59*3ee62d1bS猫头猫
60bf6e62f2S猫头猫  return (
6165fc5a50S猫头猫    <>
6265fc5a50S猫头猫      <PageBackground></PageBackground>
63bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
64bf6e62f2S猫头猫        <View style={style.header}>
65bf6e62f2S猫头猫          <ThemeText style={style.title}>Music Free</ThemeText>
668b51f01aS猫头猫          <IconButton icon={'qrcode-scan'} size={rpx(36)}></IconButton>
67bf6e62f2S猫头猫        </View>
68bf6e62f2S猫头猫        <Card style={style.card}>
69bf6e62f2S猫头猫          <Card.Title
708b51f01aS猫头猫            title={
718b51f01aS猫头猫              <ThemeText style={style.cardTitle}>设置</ThemeText>
728b51f01aS猫头猫            }></Card.Title>
73bf6e62f2S猫头猫          <Card.Content>
74*3ee62d1bS猫头猫            {basicSetting.map(item => (
75bf6e62f2S猫头猫              <ListItem
76*3ee62d1bS猫头猫                key={item.title}
77*3ee62d1bS猫头猫                itemPaddingHorizontal={0}
78*3ee62d1bS猫头猫                left={{
79*3ee62d1bS猫头猫                  icon: {
80*3ee62d1bS猫头猫                    name: item.icon,
81*3ee62d1bS猫头猫                    size: 'normal',
82*3ee62d1bS猫头猫                    fontColor: 'normal',
83*3ee62d1bS猫头猫                  },
84*3ee62d1bS猫头猫                  width: rpx(48),
85*3ee62d1bS猫头猫                }}
86*3ee62d1bS猫头猫                title={item.title}
87*3ee62d1bS猫头猫                onPress={item.onPress}></ListItem>
88*3ee62d1bS猫头猫            ))}
89bf6e62f2S猫头猫          </Card.Content>
90bf6e62f2S猫头猫        </Card>
91bf6e62f2S猫头猫        <View style={style.bottom}>
92bf6e62f2S猫头猫          <Button
93bf6e62f2S猫头猫            onPress={() => {
94bf6e62f2S猫头猫              MusicQueue.stop();
95bf6e62f2S猫头猫              BackHandler.exitApp();
96bf6e62f2S猫头猫            }}>
97bf6e62f2S猫头猫            退出
98bf6e62f2S猫头猫          </Button>
99bf6e62f2S猫头猫        </View>
100bf6e62f2S猫头猫      </DrawerContentScrollView>
10165fc5a50S猫头猫    </>
102bf6e62f2S猫头猫  );
103bf6e62f2S猫头猫}
104bf6e62f2S猫头猫
105bf6e62f2S猫头猫const style = StyleSheet.create({
106bf6e62f2S猫头猫  wrapper: {
107bf6e62f2S猫头猫    flex: 1,
108bf6e62f2S猫头猫    backgroundColor: '#999999',
109bf6e62f2S猫头猫  },
110bf6e62f2S猫头猫  scrollWrapper: {
111bf6e62f2S猫头猫    paddingHorizontal: rpx(24),
112bf6e62f2S猫头猫    paddingTop: rpx(12),
113bf6e62f2S猫头猫  },
114bf6e62f2S猫头猫
115bf6e62f2S猫头猫  header: {
116bf6e62f2S猫头猫    height: rpx(100),
117bf6e62f2S猫头猫    width: '100%',
118bf6e62f2S猫头猫    flexDirection: 'row',
119bf6e62f2S猫头猫    justifyContent: 'space-between',
120bf6e62f2S猫头猫    alignItems: 'center',
121bf6e62f2S猫头猫  },
122bf6e62f2S猫头猫  title: {
123bf6e62f2S猫头猫    fontSize: fontSizeConst.bigger,
124bf6e62f2S猫头猫    includeFontPadding: false,
1258b51f01aS猫头猫    fontWeight: fontWeightConst.bold,
126bf6e62f2S猫头猫  },
127bf6e62f2S猫头猫  cardTitle: {
128bf6e62f2S猫头猫    fontSize: fontSizeConst.small,
129bf6e62f2S猫头猫  },
130bf6e62f2S猫头猫  card: {
131bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
132bf6e62f2S猫头猫  },
133bf6e62f2S猫头猫  bottom: {
134bf6e62f2S猫头猫    height: rpx(100),
135bf6e62f2S猫头猫    flexDirection: 'row',
136bf6e62f2S猫头猫    alignItems: 'center',
137bf6e62f2S猫头猫    justifyContent: 'flex-end',
138bf6e62f2S猫头猫  },
139bf6e62f2S猫头猫});
140