xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision c459c0a61100135a273fa83259aa624484772479)
1bf6e62f2S猫头猫import React from 'react';
2bf6e62f2S猫头猫import {
3bf6e62f2S猫头猫  BackHandler,
4bf6e62f2S猫头猫  ImageBackground,
5bf6e62f2S猫头猫  StyleSheet,
6bf6e62f2S猫头猫  Text,
7bf6e62f2S猫头猫  View,
8bf6e62f2S猫头猫} from 'react-native';
9bf6e62f2S猫头猫import rpx from '@/utils/rpx';
10bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer';
11bf6e62f2S猫头猫import {Button, Card, IconButton} from 'react-native-paper';
12bf6e62f2S猫头猫import MusicQueue from '@/common/musicQueue';
13bf6e62f2S猫头猫import ListItem from '@/components/listItem';
14bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
15bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
16bf6e62f2S猫头猫import { fontSizeConst, fontWeightConst } from '@/constants/uiConst';
17bf6e62f2S猫头猫import ThemeText from '@/components/themeText';
18*c459c0a6S猫头猫import { useConfig } from '@/common/localConfigManager';
19bf6e62f2S猫头猫
20bf6e62f2S猫头猫interface IDrawerProps {}
21bf6e62f2S猫头猫
22bf6e62f2S猫头猫export default function HomeDrawer(props: IDrawerProps) {
23bf6e62f2S猫头猫  const navigation = useNavigation<any>();
24*c459c0a6S猫头猫  const background = useConfig('setting.background');
25bf6e62f2S猫头猫  function navigateToSetting(settingType: string) {
26bf6e62f2S猫头猫    navigation.navigate(ROUTE_PATH.SETTING, {
27bf6e62f2S猫头猫      type: settingType,
28bf6e62f2S猫头猫    });
29bf6e62f2S猫头猫  }
30bf6e62f2S猫头猫  return (
31bf6e62f2S猫头猫    <ImageBackground
32bf6e62f2S猫头猫      blurRadius={20}
33*c459c0a6S猫头猫      source={background
34*c459c0a6S猫头猫        ? {
35*c459c0a6S猫头猫            uri: background,
36*c459c0a6S猫头猫          }: require('@/assets/imgs/background.jpg')}
37bf6e62f2S猫头猫      style={style.wrapper}>
38bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
39bf6e62f2S猫头猫        <View style={style.header}>
40bf6e62f2S猫头猫          <ThemeText style={style.title}>Music Free</ThemeText>
41bf6e62f2S猫头猫          <IconButton
42bf6e62f2S猫头猫            icon={'qrcode-scan'}
43bf6e62f2S猫头猫            size={rpx(36)}></IconButton>
44bf6e62f2S猫头猫        </View>
45bf6e62f2S猫头猫        <Card style={style.card}>
46bf6e62f2S猫头猫          <Card.Title
47bf6e62f2S猫头猫            title={<ThemeText style={style.cardTitle}>设置</ThemeText>}></Card.Title>
48bf6e62f2S猫头猫          <Card.Content>
49bf6e62f2S猫头猫            <ListItem
50bf6e62f2S猫头猫              icon="cog-outline"
51bf6e62f2S猫头猫              title="基本设置"
52bf6e62f2S猫头猫              onPress={() => {
53bf6e62f2S猫头猫                navigateToSetting('basic');
54bf6e62f2S猫头猫              }}></ListItem>
55bf6e62f2S猫头猫            <ListItem
56bf6e62f2S猫头猫              icon="language-javascript"
57bf6e62f2S猫头猫              title="插件设置"
58bf6e62f2S猫头猫              onPress={() => {
59bf6e62f2S猫头猫                navigateToSetting('plugin');
60bf6e62f2S猫头猫              }}></ListItem>
61bf6e62f2S猫头猫            <ListItem icon="tshirt-v-outline" title="主题设置"></ListItem>
62bf6e62f2S猫头猫            <ListItem icon="backup-restore" title="备份与恢复"></ListItem>
63bf6e62f2S猫头猫          </Card.Content>
64bf6e62f2S猫头猫        </Card>
65bf6e62f2S猫头猫        <View style={style.bottom}>
66bf6e62f2S猫头猫          <Button
67bf6e62f2S猫头猫            onPress={() => {
68bf6e62f2S猫头猫              MusicQueue.stop();
69bf6e62f2S猫头猫              BackHandler.exitApp();
70bf6e62f2S猫头猫            }}>
71bf6e62f2S猫头猫            退出
72bf6e62f2S猫头猫          </Button>
73bf6e62f2S猫头猫        </View>
74bf6e62f2S猫头猫      </DrawerContentScrollView>
75bf6e62f2S猫头猫    </ImageBackground>
76bf6e62f2S猫头猫  );
77bf6e62f2S猫头猫}
78bf6e62f2S猫头猫
79bf6e62f2S猫头猫const style = StyleSheet.create({
80bf6e62f2S猫头猫  wrapper: {
81bf6e62f2S猫头猫    flex: 1,
82bf6e62f2S猫头猫    backgroundColor: '#999999',
83bf6e62f2S猫头猫  },
84bf6e62f2S猫头猫  scrollWrapper: {
85bf6e62f2S猫头猫    paddingHorizontal: rpx(24),
86bf6e62f2S猫头猫    paddingTop: rpx(12),
87bf6e62f2S猫头猫  },
88bf6e62f2S猫头猫
89bf6e62f2S猫头猫  header: {
90bf6e62f2S猫头猫    height: rpx(100),
91bf6e62f2S猫头猫    width: '100%',
92bf6e62f2S猫头猫    flexDirection: 'row',
93bf6e62f2S猫头猫    justifyContent: 'space-between',
94bf6e62f2S猫头猫    alignItems: 'center',
95bf6e62f2S猫头猫  },
96bf6e62f2S猫头猫  title: {
97bf6e62f2S猫头猫    fontSize: fontSizeConst.bigger,
98bf6e62f2S猫头猫    includeFontPadding: false,
99bf6e62f2S猫头猫    fontWeight: fontWeightConst.bold
100bf6e62f2S猫头猫  },
101bf6e62f2S猫头猫  cardTitle: {
102bf6e62f2S猫头猫    fontSize: fontSizeConst.small,
103bf6e62f2S猫头猫  },
104bf6e62f2S猫头猫  card: {
105bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
106bf6e62f2S猫头猫  },
107bf6e62f2S猫头猫  bottom: {
108bf6e62f2S猫头猫    height: rpx(100),
109bf6e62f2S猫头猫    flexDirection: 'row',
110bf6e62f2S猫头猫    alignItems: 'center',
111bf6e62f2S猫头猫    justifyContent: 'flex-end',
112bf6e62f2S猫头猫  },
113bf6e62f2S猫头猫});
114