xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision dec7a5f860f1de8938a607c5087be4ad168dd03c)
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';
1419dc08ecS猫头猫import ListItem from '@/components/base/listItem';
15bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
16bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
1719dc08ecS猫头猫import ThemeText from '@/components/base/themeText';
1819dc08ecS猫头猫import PageBackground from '@/components/base/pageBackground';
19c7676810S猫头猫import DeviceInfo from 'react-native-device-info';
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猫头猫  }
303ee62d1bS猫头猫
313ee62d1bS猫头猫  const basicSetting = [
323ee62d1bS猫头猫    {
333ee62d1bS猫头猫      icon: 'cog-outline',
343ee62d1bS猫头猫      title: '基本设置',
353ee62d1bS猫头猫      onPress: () => {
363ee62d1bS猫头猫        navigateToSetting('basic');
373ee62d1bS猫头猫      },
383ee62d1bS猫头猫    },
393ee62d1bS猫头猫    {
403ee62d1bS猫头猫      icon: 'language-javascript',
413ee62d1bS猫头猫      title: '插件设置',
423ee62d1bS猫头猫      onPress: () => {
433ee62d1bS猫头猫        navigateToSetting('plugin');
443ee62d1bS猫头猫      },
453ee62d1bS猫头猫    },
463ee62d1bS猫头猫    {
473ee62d1bS猫头猫      icon: 'tshirt-v-outline',
483ee62d1bS猫头猫      title: '主题设置',
493ee62d1bS猫头猫      onPress: () => {
503ee62d1bS猫头猫        navigateToSetting('theme');
513ee62d1bS猫头猫      },
523ee62d1bS猫头猫    },
533ee62d1bS猫头猫    {
543ee62d1bS猫头猫      icon: 'backup-restore',
553ee62d1bS猫头猫      title: '备份与恢复',
56*dec7a5f8S猫头猫      onPress: () => {
57*dec7a5f8S猫头猫        navigateToSetting('backup');
58*dec7a5f8S猫头猫      },
593ee62d1bS猫头猫    },
603ee62d1bS猫头猫  ] as const;
613ee62d1bS猫头猫
62bf6e62f2S猫头猫  return (
6365fc5a50S猫头猫    <>
6465fc5a50S猫头猫      <PageBackground></PageBackground>
65bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
66bf6e62f2S猫头猫        <View style={style.header}>
67*dec7a5f8S猫头猫          <ThemeText fontSize="appbar" fontWeight="bold">
68*dec7a5f8S猫头猫            {DeviceInfo.getApplicationName()}
69*dec7a5f8S猫头猫          </ThemeText>
708b51f01aS猫头猫          <IconButton icon={'qrcode-scan'} size={rpx(36)}></IconButton>
71bf6e62f2S猫头猫        </View>
72bf6e62f2S猫头猫        <Card style={style.card}>
73bf6e62f2S猫头猫          <Card.Title
748b51f01aS猫头猫            title={
75*dec7a5f8S猫头猫              <ThemeText fontSize="description">设置</ThemeText>
768b51f01aS猫头猫            }></Card.Title>
77*dec7a5f8S猫头猫          <Card.Content style={style.cardContent}>
783ee62d1bS猫头猫            {basicSetting.map(item => (
79bf6e62f2S猫头猫              <ListItem
80*dec7a5f8S猫头猫                itemHeight={rpx(110)}
813ee62d1bS猫头猫                key={item.title}
823ee62d1bS猫头猫                left={{
833ee62d1bS猫头猫                  icon: {
843ee62d1bS猫头猫                    name: item.icon,
853ee62d1bS猫头猫                    size: 'normal',
863ee62d1bS猫头猫                    fontColor: 'normal',
873ee62d1bS猫头猫                  },
883ee62d1bS猫头猫                  width: rpx(48),
893ee62d1bS猫头猫                }}
903ee62d1bS猫头猫                title={item.title}
913ee62d1bS猫头猫                onPress={item.onPress}></ListItem>
923ee62d1bS猫头猫            ))}
93bf6e62f2S猫头猫          </Card.Content>
94bf6e62f2S猫头猫        </Card>
95bf6e62f2S猫头猫        <View style={style.bottom}>
96bf6e62f2S猫头猫          <Button
97bf6e62f2S猫头猫            onPress={() => {
98bf6e62f2S猫头猫              MusicQueue.stop();
99bf6e62f2S猫头猫              BackHandler.exitApp();
100bf6e62f2S猫头猫            }}>
101bf6e62f2S猫头猫            退出
102bf6e62f2S猫头猫          </Button>
103bf6e62f2S猫头猫        </View>
104bf6e62f2S猫头猫      </DrawerContentScrollView>
10565fc5a50S猫头猫    </>
106bf6e62f2S猫头猫  );
107bf6e62f2S猫头猫}
108bf6e62f2S猫头猫
109bf6e62f2S猫头猫const style = StyleSheet.create({
110bf6e62f2S猫头猫  wrapper: {
111bf6e62f2S猫头猫    flex: 1,
112bf6e62f2S猫头猫    backgroundColor: '#999999',
113bf6e62f2S猫头猫  },
114bf6e62f2S猫头猫  scrollWrapper: {
115bf6e62f2S猫头猫    paddingHorizontal: rpx(24),
116bf6e62f2S猫头猫    paddingTop: rpx(12),
117bf6e62f2S猫头猫  },
118bf6e62f2S猫头猫
119bf6e62f2S猫头猫  header: {
120bf6e62f2S猫头猫    height: rpx(100),
121bf6e62f2S猫头猫    width: '100%',
122bf6e62f2S猫头猫    flexDirection: 'row',
123bf6e62f2S猫头猫    justifyContent: 'space-between',
124bf6e62f2S猫头猫    alignItems: 'center',
125bf6e62f2S猫头猫  },
126bf6e62f2S猫头猫  card: {
127bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
128bf6e62f2S猫头猫  },
129*dec7a5f8S猫头猫  cardContent: {
130*dec7a5f8S猫头猫    paddingHorizontal: 0
131*dec7a5f8S猫头猫  },
132bf6e62f2S猫头猫  bottom: {
133bf6e62f2S猫头猫    height: rpx(100),
134bf6e62f2S猫头猫    flexDirection: 'row',
135bf6e62f2S猫头猫    alignItems: 'center',
136bf6e62f2S猫头猫    justifyContent: 'flex-end',
137bf6e62f2S猫头猫  },
138bf6e62f2S猫头猫});
139