xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision 8b51f01af412ebf91b3586cdb1ed1dfb72d6c410)
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';
18c459c0a6S猫头猫import {useConfig} from '@/common/localConfigManager';
19bf6e62f2S猫头猫
20bf6e62f2S猫头猫interface IDrawerProps {}
21bf6e62f2S猫头猫
22bf6e62f2S猫头猫export default function HomeDrawer(props: IDrawerProps) {
23bf6e62f2S猫头猫  const navigation = useNavigation<any>();
24c459c0a6S猫头猫  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*8b51f01aS猫头猫      source={
34*8b51f01aS猫头猫        background
35c459c0a6S猫头猫          ? {
36c459c0a6S猫头猫              uri: background,
37*8b51f01aS猫头猫            }
38*8b51f01aS猫头猫          : require('@/assets/imgs/background.jpg')
39*8b51f01aS猫头猫      }
40bf6e62f2S猫头猫      style={style.wrapper}>
41bf6e62f2S猫头猫      <DrawerContentScrollView {...props} style={style.scrollWrapper}>
42bf6e62f2S猫头猫        <View style={style.header}>
43bf6e62f2S猫头猫          <ThemeText style={style.title}>Music Free</ThemeText>
44*8b51f01aS猫头猫          <IconButton icon={'qrcode-scan'} size={rpx(36)}></IconButton>
45bf6e62f2S猫头猫        </View>
46bf6e62f2S猫头猫        <Card style={style.card}>
47bf6e62f2S猫头猫          <Card.Title
48*8b51f01aS猫头猫            title={
49*8b51f01aS猫头猫              <ThemeText style={style.cardTitle}>设置</ThemeText>
50*8b51f01aS猫头猫            }></Card.Title>
51bf6e62f2S猫头猫          <Card.Content>
52bf6e62f2S猫头猫            <ListItem
53bf6e62f2S猫头猫              icon="cog-outline"
54bf6e62f2S猫头猫              title="基本设置"
55bf6e62f2S猫头猫              onPress={() => {
56bf6e62f2S猫头猫                navigateToSetting('basic');
57bf6e62f2S猫头猫              }}></ListItem>
58bf6e62f2S猫头猫            <ListItem
59bf6e62f2S猫头猫              icon="language-javascript"
60bf6e62f2S猫头猫              title="插件设置"
61bf6e62f2S猫头猫              onPress={() => {
62bf6e62f2S猫头猫                navigateToSetting('plugin');
63bf6e62f2S猫头猫              }}></ListItem>
64*8b51f01aS猫头猫            <ListItem
65*8b51f01aS猫头猫              icon="tshirt-v-outline"
66*8b51f01aS猫头猫              title="主题设置"
67*8b51f01aS猫头猫              onPress={() => {
68*8b51f01aS猫头猫                navigateToSetting('theme');
69*8b51f01aS猫头猫              }}></ListItem>
70bf6e62f2S猫头猫            <ListItem icon="backup-restore" title="备份与恢复"></ListItem>
71bf6e62f2S猫头猫          </Card.Content>
72bf6e62f2S猫头猫        </Card>
73bf6e62f2S猫头猫        <View style={style.bottom}>
74bf6e62f2S猫头猫          <Button
75bf6e62f2S猫头猫            onPress={() => {
76bf6e62f2S猫头猫              MusicQueue.stop();
77bf6e62f2S猫头猫              BackHandler.exitApp();
78bf6e62f2S猫头猫            }}>
79bf6e62f2S猫头猫            退出
80bf6e62f2S猫头猫          </Button>
81bf6e62f2S猫头猫        </View>
82bf6e62f2S猫头猫      </DrawerContentScrollView>
83bf6e62f2S猫头猫    </ImageBackground>
84bf6e62f2S猫头猫  );
85bf6e62f2S猫头猫}
86bf6e62f2S猫头猫
87bf6e62f2S猫头猫const style = StyleSheet.create({
88bf6e62f2S猫头猫  wrapper: {
89bf6e62f2S猫头猫    flex: 1,
90bf6e62f2S猫头猫    backgroundColor: '#999999',
91bf6e62f2S猫头猫  },
92bf6e62f2S猫头猫  scrollWrapper: {
93bf6e62f2S猫头猫    paddingHorizontal: rpx(24),
94bf6e62f2S猫头猫    paddingTop: rpx(12),
95bf6e62f2S猫头猫  },
96bf6e62f2S猫头猫
97bf6e62f2S猫头猫  header: {
98bf6e62f2S猫头猫    height: rpx(100),
99bf6e62f2S猫头猫    width: '100%',
100bf6e62f2S猫头猫    flexDirection: 'row',
101bf6e62f2S猫头猫    justifyContent: 'space-between',
102bf6e62f2S猫头猫    alignItems: 'center',
103bf6e62f2S猫头猫  },
104bf6e62f2S猫头猫  title: {
105bf6e62f2S猫头猫    fontSize: fontSizeConst.bigger,
106bf6e62f2S猫头猫    includeFontPadding: false,
107*8b51f01aS猫头猫    fontWeight: fontWeightConst.bold,
108bf6e62f2S猫头猫  },
109bf6e62f2S猫头猫  cardTitle: {
110bf6e62f2S猫头猫    fontSize: fontSizeConst.small,
111bf6e62f2S猫头猫  },
112bf6e62f2S猫头猫  card: {
113bf6e62f2S猫头猫    backgroundColor: '#eeeeee22',
114bf6e62f2S猫头猫  },
115bf6e62f2S猫头猫  bottom: {
116bf6e62f2S猫头猫    height: rpx(100),
117bf6e62f2S猫头猫    flexDirection: 'row',
118bf6e62f2S猫头猫    alignItems: 'center',
119bf6e62f2S猫头猫    justifyContent: 'flex-end',
120bf6e62f2S猫头猫  },
121bf6e62f2S猫头猫});
122