xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision ec26b76829169f3fa0606bb9b21624aad61d6594)
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';
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: '备份与恢复',
563ee62d1bS猫头猫      onPress: () => {},
573ee62d1bS猫头猫    },
583ee62d1bS猫头猫  ] as const;
593ee62d1bS猫头猫
60bf6e62f2S猫头猫  return (
6165fc5a50S猫头猫    <>
6265fc5a50S猫头猫      <PageBackground></PageBackground>
63bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
64bf6e62f2S猫头猫        <View style={style.header}>
65*ec26b768S猫头猫          <ThemeText fontSize='appbar' fontWeight='bold'>Music Free</ThemeText>
668b51f01aS猫头猫          <IconButton icon={'qrcode-scan'} size={rpx(36)}></IconButton>
67bf6e62f2S猫头猫        </View>
68bf6e62f2S猫头猫        <Card style={style.card}>
69bf6e62f2S猫头猫          <Card.Title
708b51f01aS猫头猫            title={
71*ec26b768S猫头猫              <ThemeText fontSize='description'>设置</ThemeText>
728b51f01aS猫头猫            }></Card.Title>
73bf6e62f2S猫头猫          <Card.Content>
743ee62d1bS猫头猫            {basicSetting.map(item => (
75bf6e62f2S猫头猫              <ListItem
763ee62d1bS猫头猫                key={item.title}
773ee62d1bS猫头猫                itemPaddingHorizontal={0}
783ee62d1bS猫头猫                left={{
793ee62d1bS猫头猫                  icon: {
803ee62d1bS猫头猫                    name: item.icon,
813ee62d1bS猫头猫                    size: 'normal',
823ee62d1bS猫头猫                    fontColor: 'normal',
833ee62d1bS猫头猫                  },
843ee62d1bS猫头猫                  width: rpx(48),
853ee62d1bS猫头猫                }}
863ee62d1bS猫头猫                title={item.title}
873ee62d1bS猫头猫                onPress={item.onPress}></ListItem>
883ee62d1bS猫头猫            ))}
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猫头猫  card: {
123bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
124bf6e62f2S猫头猫  },
125bf6e62f2S猫头猫  bottom: {
126bf6e62f2S猫头猫    height: rpx(100),
127bf6e62f2S猫头猫    flexDirection: 'row',
128bf6e62f2S猫头猫    alignItems: 'center',
129bf6e62f2S猫头猫    justifyContent: 'flex-end',
130bf6e62f2S猫头猫  },
131bf6e62f2S猫头猫});
132