xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision b882a19d884fffa32f7c8cef31652b909dceaa0f)
1bf6e62f2S猫头猫import React from 'react';
24060c00aS猫头猫import {BackHandler, StyleSheet, View} from 'react-native';
3bf6e62f2S猫头猫import rpx from '@/utils/rpx';
4bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer';
5*b882a19dS猫头猫import {Button, Card} from 'react-native-paper';
6242960d3S猫头猫import MusicQueue from '@/core/musicQueue';
719dc08ecS猫头猫import ListItem from '@/components/base/listItem';
8bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
9bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
1019dc08ecS猫头猫import ThemeText from '@/components/base/themeText';
1119dc08ecS猫头猫import PageBackground from '@/components/base/pageBackground';
12c7676810S猫头猫import DeviceInfo from 'react-native-device-info';
13bf6e62f2S猫头猫
144060c00aS猫头猫export default function HomeDrawer(props: any) {
15bf6e62f2S猫头猫    const navigation = useNavigation<any>();
16bf6e62f2S猫头猫    function navigateToSetting(settingType: string) {
17bf6e62f2S猫头猫        navigation.navigate(ROUTE_PATH.SETTING, {
18bf6e62f2S猫头猫            type: settingType,
19bf6e62f2S猫头猫        });
20bf6e62f2S猫头猫    }
213ee62d1bS猫头猫
223ee62d1bS猫头猫    const basicSetting = [
233ee62d1bS猫头猫        {
243ee62d1bS猫头猫            icon: 'cog-outline',
253ee62d1bS猫头猫            title: '基本设置',
263ee62d1bS猫头猫            onPress: () => {
273ee62d1bS猫头猫                navigateToSetting('basic');
283ee62d1bS猫头猫            },
293ee62d1bS猫头猫        },
303ee62d1bS猫头猫        {
313ee62d1bS猫头猫            icon: 'language-javascript',
323ee62d1bS猫头猫            title: '插件设置',
333ee62d1bS猫头猫            onPress: () => {
343ee62d1bS猫头猫                navigateToSetting('plugin');
353ee62d1bS猫头猫            },
363ee62d1bS猫头猫        },
373ee62d1bS猫头猫        {
383ee62d1bS猫头猫            icon: 'tshirt-v-outline',
393ee62d1bS猫头猫            title: '主题设置',
403ee62d1bS猫头猫            onPress: () => {
413ee62d1bS猫头猫                navigateToSetting('theme');
423ee62d1bS猫头猫            },
433ee62d1bS猫头猫        },
443ee62d1bS猫头猫        {
453ee62d1bS猫头猫            icon: 'backup-restore',
463ee62d1bS猫头猫            title: '备份与恢复',
47dec7a5f8S猫头猫            onPress: () => {
48dec7a5f8S猫头猫                navigateToSetting('backup');
49dec7a5f8S猫头猫            },
503ee62d1bS猫头猫        },
510cffb46aS猫头猫        {
520cffb46aS猫头猫            icon: 'information-outline',
530cffb46aS猫头猫            title: '关于',
540cffb46aS猫头猫            onPress: () => {
550cffb46aS猫头猫                navigateToSetting('about');
560cffb46aS猫头猫            },
570cffb46aS猫头猫        },
583ee62d1bS猫头猫    ] as const;
593ee62d1bS猫头猫
60bf6e62f2S猫头猫    return (
6165fc5a50S猫头猫        <>
624060c00aS猫头猫            <PageBackground />
634060c00aS猫头猫            <DrawerContentScrollView {...[props]} style={style.scrollWrapper}>
64bf6e62f2S猫头猫                <View style={style.header}>
65dec7a5f8S猫头猫                    <ThemeText fontSize="appbar" fontWeight="bold">
66dec7a5f8S猫头猫                        {DeviceInfo.getApplicationName()}
67dec7a5f8S猫头猫                    </ThemeText>
68*b882a19dS猫头猫                    {/* <IconButton icon={'qrcode-scan'} size={rpx(36)} /> */}
69bf6e62f2S猫头猫                </View>
70bf6e62f2S猫头猫                <Card style={style.card}>
71bf6e62f2S猫头猫                    <Card.Title
728b51f01aS猫头猫                        title={
73dec7a5f8S猫头猫                            <ThemeText fontSize="description">设置</ThemeText>
744060c00aS猫头猫                        }
754060c00aS猫头猫                    />
76dec7a5f8S猫头猫                    <Card.Content style={style.cardContent}>
773ee62d1bS猫头猫                        {basicSetting.map(item => (
78bf6e62f2S猫头猫                            <ListItem
79dec7a5f8S猫头猫                                itemHeight={rpx(110)}
803ee62d1bS猫头猫                                key={item.title}
813ee62d1bS猫头猫                                left={{
823ee62d1bS猫头猫                                    icon: {
833ee62d1bS猫头猫                                        name: item.icon,
843ee62d1bS猫头猫                                        size: 'normal',
853ee62d1bS猫头猫                                        fontColor: 'normal',
863ee62d1bS猫头猫                                    },
873ee62d1bS猫头猫                                    width: rpx(48),
883ee62d1bS猫头猫                                }}
893ee62d1bS猫头猫                                title={item.title}
904060c00aS猫头猫                                onPress={item.onPress}
914060c00aS猫头猫                            />
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猫头猫    },
129dec7a5f8S猫头猫    cardContent: {
1304060c00aS猫头猫        paddingHorizontal: 0,
131dec7a5f8S猫头猫    },
132bf6e62f2S猫头猫    bottom: {
133bf6e62f2S猫头猫        height: rpx(100),
134bf6e62f2S猫头猫        flexDirection: 'row',
135bf6e62f2S猫头猫        alignItems: 'center',
136bf6e62f2S猫头猫        justifyContent: 'flex-end',
137bf6e62f2S猫头猫    },
138bf6e62f2S猫头猫});
139